Linux|服务器SSH相互认证方案
为了使服务器之间的通信更加便捷,例如通过脚本开控制另一台服务器做一些事情或免密码登陆等,都需要使相互通信等服务器之间进行认证,已达到便捷操作等目的。
实现方式,在一台 Linux 服务器中生成一对 SSH 公私钥,保证所有 Linux 节点都持有相同的一对密钥,这样就保证了认证方式相同。
相互认证步骤如下:
- 在其中一台服务器创建密钥对
- 进入家目录的 .ssh 文件夹,并将 id_rsa.put 重命名为 authorized_keys
- 报家目录下 .ssh 文件夹通过 scp 命令传输到另外的服务器上
- 最后通过 ssh 命令连接各个服务器进行测试
以下是对三台主机相互认证的操作,10.0.0.10 是生成密钥的主机,其他主机(10.0.0.20、10.0.0.30)是接受密钥的主机。
其中一台主机(10.0.0.10)执行的命令:
# 删除之前的互信,这一步也可以省略不删除
rm -rf /root/.ssh
# 生成公私钥,所有交互操作都按回车
# 这里是在root用户登录状态,普通用户注意ssh生成目录不一样,但都是在家目录隐藏文件夹(.ssh)
ssh-keygen
# 重命名公钥(ssh互信公钥必须为统一的名称)
cd /root/.ssh
mv id_rsa.pub authorized_keys
# 传输到其他主机(10.0.0.20、10.0.0.30)
scp -r /root/.ssh 10.0.0.20:/root
scp -r /root/.ssh 10.0.0.30:/root
所有服务器都执行的命令:
# 测试三台机互相认证情况,所有服务器都执行,正常输出日期表示OK
# 注意:第一次执行需要输入yes确认
ssh 10.0.0.10 date
ssh 10.0.0.20 date
ssh 10.0.0.30 date