Linux|服务器SSH相互认证方案

为了使服务器之间的通信更加便捷,例如通过脚本开控制另一台服务器做一些事情或免密码登陆等,都需要使相互通信等服务器之间进行认证,已达到便捷操作等目的。

实现方式,在一台 Linux 服务器中生成一对 SSH 公私钥,保证所有 Linux 节点都持有相同的一对密钥,这样就保证了认证方式相同。

相互认证步骤如下:

  1. 在其中一台服务器创建密钥对
  2. 进入家目录的 .ssh 文件夹,并将 id_rsa.put 重命名为 authorized_keys
  3. 报家目录下 .ssh 文件夹通过 scp 命令传输到另外的服务器上
  4. 最后通过 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