• ssh(Secure Shell)


    一、ssh 基础使用

      1. ssh 客户端使用 Secure Shell(ssh)协议连接到运行了 ssh 服务端的远程服务器上。

      2. ssh 是专为远程登录会话和其他网络服务提供安全性的协议。

      • 有效防止远程管理过程中的信息泄露;
      • 传输数据加密,可以防止 DNS 和 IP 欺骗;
      • 传输数据压缩,加快传输速度。

      3. OpenSSH 是 SSH 协议的免费开源实现,提供了服务端程序(openssh-server)和客户端程序(openssh-client)。

      • Mac 和 Linux 中默认安装了 ssh 客户端,可以直接在中断中使用 ssh 命令。
      • Windows 需要手动安装 ssh 客户端,常用的有 PuTTY 和 XShell。

      4. OpenSSH 服务端常用命令

     1 # 安装服务端(Ubuntu)
     2 sudo apt install openssh-server
     3 
     4 # 安装客户端(Ubuntu)
     5 sudo apt install openssh-client
     6 
     7 # 查看 ssh 服务是否开启
     8 netstat -tlp | grep ssh
     9 
    10 # 启动/停止/重启 ssh 服务
    11 sudo /etcinit.d/ssh start
    12 
    13 # 启动/停止/重启 ssh 服务
    14 sudo /etcinit.d/ssh stop
    15 
    16 # 启动/停止/重启 ssh 服务
    17 sudo /etcinit.d/ssh restart

      5. ssh 服务端配置文件默认为 /etc/ssh/sshd_config,可以按需修改默认 22 端口等配置。

    1 # 命令格式
    2 $ ssh [-options] [user@hostname]
    3 
    4 # options
    5 # -p:指定 ssh 端口号,默认端口为 22
    6 # -i:使用指定私钥文件连接服务器(免密登录)
      • user:远程服务器登录的用户名,默认为当前用户
      • hostname:远程服务器地址,可以是 IP、域名、别名
      • exit 或 logout 都可以退出当前登录
    1 # 以colin用户登录192.168.1.196的到ssh服务器
    2 $ ssh colin@192.168.1.196
    3 
    4 # 以colin用户登录到192.168.1.198的ssh服务器,使用2222端口
    5 $ ssh -p 2222 colin@192.168.1.198

    二、ssh 高级配置

      1. ssh 的配置都保存在 ~/.ssh 中

      • known_hosts:作为客户端。记录曾连接服务器授权。ssh第一次连接一台服务器会有一个授权提示,确认授权后会记录在此文件中,下次连接记录中的服务器时则不再需要进行授权确认提示。
      • authorized_keys:作为服务端。客户端的免密连接公钥文件
      • config:作为客户端,记录连接服务器配置的别名

      2. 服务器别名

      远程管理命令(如 ssh、scp 等)连接一台服务器时,一般都需要提供服务器地址、端口、用户名,每次输入会很麻烦。我们可以把常用的服务器连接参数打包,记录到配置文件中,并记录一个别名。这样我们就可以通过别名来访问服务器了。

      配置方法如下:

      • 创建或打开 ~/.ssh/config,在文件中追加服务器配置信息。
      • 一台服务器的配置信息如下:
    1 # 以下配置中,只有 HostName 是必选项,其余的可以省略
    2 Host ColinMac
    3     HostName 192.168.199.116
    4     User colin
    5     Port 22

      配置完成后,远程管理命令中就可以直接使用别名访问了:

    1 $ ssh 116-Server
    2 $ scp 123.txt 116-Server:Desktop

      3. 免密登录

    1 # 命令格式
    2 ssh-keygen [-options]

      options:

      • -t:指定加密类型,默认为非对称加密(rsa),所有可选项:dsa,ecdsa,ed25519,rsa
      • -f:秘钥文件名
      • -C:注释,将附加在秘钥文件尾部

      远程管理命令(如 ssh、scp 等)每次都要提供用户密码保证安全。除此之外,我们可以配置使用指定加密算法验证秘钥的方式,来避免每次输入密码。

      配置免密登录后,ssh 连接和 scp 等远程管理命令都不需要再输密码。

      生成秘钥时,如果指定了文件名,连接服务器时需要通过 -i 指定要验证的秘钥文件,譬如: ssh -i file user@host。默认文件名则可以省略。

      配置步骤:

    1 # 客户端生成秘钥
    2 ssh-keygen
    3 
    4 # 上传公钥到服务器
    5 ssh-copy-id user@hostname    # 文件会自动上传为服务器特定文件 ~/.ssh/authorized_keys

      4. 免秘钥文件登录

      i. 生成秘钥对

    1 ssh-keygen -t rsa -f ~/.ssh/[KEY_FILENAME] -C [USERNAME]
    2 chmod 400 ~/.ssh/[KEY_FILENAME]

      ii. 上传公钥

      iii. 简化登录

      我们可以将秘钥文件添加到 ssh 客户端 ~/.ssh/config 中,简化连接命令

    1 Host *
    2  AddKeysToAgent yes
    3  UseKeychain yes  # only for mac
    4 
    5 Host tu
    6    HostName IP_ADDRESS
    7    Port 22
    8    User USERNAME
    9    IdentityFile ~/.ssh/gcp
    1 # 后台运行ssh-agent
    2 $ eval "$(ssh-agent -s)"
    3 # 添加密钥到ssh-agent
    4 $ ssh-add -K ~/.ssh/gcp
  • 相关阅读:
    SqlCacheDependency [转]
    C#导出Word [ZT]
    ADO.NET Entity Framework 学习(1) [ZT]
    AJAX, JSON.js,Newtonsoft.Json.dll,nunit.framework.dll 源代码
    ADO.NET 1.1和2.0事务的区别
    Sql Server 2000 中游标的使用示例 [ZT]
    如何检测是否安装了.NET 2.0和.NET 3.0 [ZT]
    ORACLE 常用函数 [ZT]
    Resource 学习笔记
    GridView 双击选择行 [ZT]
  • 原文地址:https://www.cnblogs.com/murongmochen/p/12589338.html
Copyright © 2020-2023  润新知