说明
业务场景中经常需要进行跨服务器的操作,即从一台服务器上登录到另外一台服务器,默认情况下,SSH远程登录时需要输入远程服务器密码。当需要在可信任的服务器之间进行频繁或自动化的操作时,输入密码就会带来不便。
本文介绍如何实现SSH远程免密登录。
服务器信息
假设有2台服务器,要实现本地服务器SSH免密登录远程服务器。
本地服务器:192.168.1.1
远程服务器:192.168.1.2
免密登录方法一
1、在本地服务器上运行命令,生成公钥、私钥
ssh-keygen
执行该命令后,系统提示时直接三次回车即可(通常按默认值处理)。
公钥储存在 /root/.ssh/id_rsa.pub
私钥储存在 /root/.ssh/id_rsa
2、在本地服务器上运行命令,拷贝公钥至远程服务器
# 示例中192.168.1.2为远程服务器IP
ssh-copy-id -i /root/.ssh/id_rsa.pub root@192.168.1.2
执行此命令需要输入远程服务器密码
3、在本地服务器上运行命令,测试ssh免密登录远程服务器
ssh 192.168.1.2
此时就可以直接免密登录远程服务器进行操作
免密登录方法二
在方法一中,拷贝公钥至远程服务器是通过命令的方式进行,需要输入远程服务器密码,此处介绍的方法则直接将公钥内容保存至远程服务器,无需通过密码的方式进行
1、在本地服务器上运行命令,生成公钥、私钥
ssh-keygen
执行该命令后,系统提示时直接三次回车即可(通常按默认值处理)。
公钥储存在 /root/.ssh/id_rsa.pub
私钥储存在 /root/.ssh/id_rsa
2、在本地服务器上运行命令,查看公钥并复制其内容
vim /root/.ssh/id_rsa.pub
# 复制公钥信息,以下为演示内容
ssh-rsa AAAAA/BBBBB/CCCCC root@centos
3、在目标服务器上运行命令,保存公钥信息
# 将第2步复制的公钥信息粘贴在文件后,然后保存
vim /root/.ssh/authorized_keys
4、在本地服务器上运行命令,测试ssh免密登录远程服务器
ssh 192.168.1.2
此时就可以直接免密登录远程服务器进行操作
额外说明,两种方法本质上是一样的,都是将公钥放置在目标服务器上,无非是方法一通过命令的方式自动完成,方法二通过人工复制的方法手动完成