SSH免密码登录和会话管理

 

这篇教程介绍使用SSH Key来实现SSH无密码登录,以及如何利用config配置文件进行会话管理。

配置ssh免密码登录

ssh免密码登录需要使用到公钥和私钥。

这里假设A机想通过ssh免密码登录到B机。一般做法是在A机上生成公钥/私钥对,A机保留自己的私钥,然后将公钥添加到B机中。

  1. 首先需要在A机下生成公钥/私钥对,参数:-f 生成的文件名,会在.ssh目录下生成id_rsa和id_rsa.pub。

     ssh-keygen -t rsa -f id_rsa
    

    :如果命名不为id_rsa,则不会生成在.ssh目录中,就需要手动把id_rsaxxx私钥文件(不带.pub后缀)移动到当前用户的.ssh目录下。

  2. 将产生的公钥(xxxxx.pub)复制到B机的用户目录下,可以采用各种方式,以下用scp举例:

     scp xxxxx.pub [email protected]:/home/username/xxxxx.pub
    
  3. 将公钥追加到authorzied_keys中,可以通过A机使用密码登录B机(或直接在B机上操作);

    远程登录B机,将xxxxx.pub公钥追加到authorzied_keys中:

     ssh [email protected]
     cat xxxxx.pub >> .ssh/authorized_keys
    
  4. 之后需要重启B机的sshd服务,通过以下命令重启:

     service sshd restart
    

    :authorzied_keys的权限要是600。如果是服务器,最好把密码登录关闭。

  5. 并在A机上测试,如果是默认的文件名,则可以去掉-i参数(用于指定私钥文件位置)

     ssh -i "私钥文件路径" [email protected]
    

利用config进行会话管理

多私钥管理

SSH利用config管理会话(无需通过命令-i指定私钥、端口等参数登录,尤其当有多个私钥时,管理和操作会变复杂),可以通过在.ssh目录下新建一个config文件来进行管理。

  1. 新增ssh的配置文件config,并修改权限;

     touch ~/.ssh/config
     chmod 600 ~/.ssh/config
    
  2. 常见的配置内容(可配置多个)如下:

     Host 别名
         Hostname 主机名
         IdentityFile 私钥路径
         Port 端口
         User 用户名
    
  3. 之后即可通过ssh 别名登录主机了。

会话保活

当你使用ssh命令连接公司服务器时,很有可能会出现闲置一段时间后被服务器自行断开的情况,这可能是运维部门的安全策略。但这种被动的断开很可能会影响到自己的工作上下文。

在config文件增加以下内容,意思为每30秒发送一个no-op包,通过心跳保活。

Host *
    ServerAliveInterval 30