Linux - SSH 服务器信任关系配置

介绍

SSH(Secure Shell)是一项创建在应用层和传输层基础上得安全协议,为shell提供安全得传输和使用环境。具体协议以及服务相关知识不再赘述,下面主要介绍如何配置服务器之间的信任关系。以配置A免密登录到B为例



生成密钥

在A机器上通过ssh key-gen生成密钥

[root@suhw ~]# eval `ssh-agent -s`
[root@suhw ~]# ssh-keygen -t rsa

若不指定存放密钥的路径以及名字的话,会默认生成在当前用户家目录下的.ssh目录中生成一个私钥和一个公钥

[root@suhw ~]# ll /root/.ssh/
-rw------- 1 root root 2590 Jun 28 15:41 id_rsa
-rw-r--r-- 1 root root  563 Jun 28 15:41 id_rsa.pub

注:不可能每次生成密钥都覆盖掉之前的 ~/.ssh/id_rsa文件,建议在生成密钥第一步时指定文件名,便于区分管理



配置公钥

将生成的公钥追加到B机器的authorized_keys文件中

1、如果B机器.ssh目录下不存在authorized_keys文件,则通过touch命令新建,并将权限修改为600

[root@suhw ~]# cd ~/.ssh && touch authorized_keys && chmod 600 authorized_keys

2、将A机器生成的id_rsa.pub公钥追加到authorized_keys



相关配置

ssh的配置文件包含以下两个:

  • ~/.ssh/config:用户配置文件
  • /etc/ssh/ssh_config:系统配置文件

其中config配置中最常用的就是管理多组密钥对,对于多个服务器指定对应的密钥对,可以参考如下配置

HOST host1 # 关键词
    User root    # 登录用户名
    HostName 10.47.119.96 # 主机名
    IdentityFile /root/.ssh/host1_id_rsa # 私钥存储地址
HOST host2
    User root 
    HostName 10.47.119.97
    IdentityFile /root/.ssh/host2_id_rsa 

有了上面的配置,当我们在A机器上执行ssh host1时就会匹配到对应Host的配置,相当于执行了

ssh -i /root/.ssh/host1_id_rsa [email protected]

这样不论是ssh还是scp都会通过host匹配到对应的密钥文件进行连接,十分方便


配置项说明

  • Host:执行ssh命令时如果匹配到该配置,例如将HOST修改为kylin,在A机器上执行ssh kylin就相当于执行了ssh -i /data/suhw/.ssh/suhw_id_rsa [email protected]
  • HostName:主机地址
  • IdentityFile:指定读取的认证文件路径

其他具体参数可参考文章最后的链接



FAQ

1、若遇到报错Could not open a connection to your authentication agent.

先执行 eval`ssh-agent -s`



参考

  • https://deepzz.com/post/how-to-setup-ssh-config.html

你可能感兴趣的:(Linux)