OpenSSH 基于密钥认证 跨多个主机密钥共享

第一个主机:client.com (本地测试服务器,IP:172.16.100.1)

第二个主机:server1.com (生产环境服务器,IP:172.16.100.2)

第三个主机:server2.com(生产环境服务器,IP:172.16.100.3)

 

背景:从一个主机(client.com)登录多个主机(server1.com 或server2.com)时,每次都需要输入密码方可登录。并且登录成功其中一个主机(server1.com)之后再登录另一个主机(server2.com)时也需要输入密码。

实现目标:从一个主机多个主机时不需要输入密码登录并且登录的主机中再次登录另一个主机时也不需要输入密码。

实现步骤

操作系统:CentOS 7

开包包

# yum groupinstall "Development Tools"
# yum -y install tree

 

1. 在每个主机上使用rsa算法生成密钥对,即非堆成密钥 id_rsa和id_rsa.pub,在三个服务器分别执行如下代码:

[root@client.com ~]# ssh-keygen -t rsa
[root@client.com ~]# tree /root/.ssh
/root/.ssh
├── id_rsa
├── id_rsa.pub
└── known_hosts

 

[root@server1.com ~]# ssh-keygen -t rsa
[root@server1.com ~]# tree /root/.ssh
/root/.ssh
├── id_rsa
├── id_rsa.pub
└── known_hosts

 

[root@server2.com ~]# ssh-keygen -t rsa
[root@server2.com ~]# tree /root/.ssh
/root/.ssh
├── id_rsa
├── id_rsa.pub
└── known_hosts

 

2. 删除server1.com和server2.com主机的id_rsa和id_rsa.pub两个文件,保留.ssh目录 

[root@server1.com ~]# rm -rf /root/.ssh/{id_rsa,id_rsa.pub}
[root@server2.com ~]# rm -rf /root/.ssh/{id_rsa,id_rsa.pub}

 

3. 在所有的服务器分别设置ForwardAgent转向代理选项

[root@client.com ~]# vim /etc/ssh/ssh_config
Host *
  ForwardAgent yes 
[root@server1.com ~]# vim /etc/ssh/ssh_config
Host *
  ForwardAgent yes 
[root@server2.com ~]# vim /etc/ssh/ssh_config
Host *
  ForwardAgent yes 

4. client.com主机上复制公钥文件内容到server1.com和server2.com的主机的/root/.ssh/authorized_keys(文件权限600)

[root@client.com ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@172.16.100.2

然后输入172.16.100.2的root账号密码
[root@client.com ~]# ssh-copy-id -i /root/.ssh/id_rsa.pub -p 22 root@172.16.100.3

然后输入172.16.100.3的root账号密码

查看生成的文件

[root@server1.com ~]# ls -l /root/.ssh/
total 4
-rw------- 1 root root 400 Oct 14 00:57 authorized_keys
[root@server2.com ~]# ls -l /root/.ssh/
total 4
-rw------- 1 root root 400 Oct 14 00:57 authorized_keys

 

 5. client.com主机上ssh-agent密钥管理器运行ssh-agent以后,使用ssh-add将私钥交给ssh-agent保管

[root@client.com ~]# eval $(ssh-agent -s )
Agent pid 3526
[root@client.com ~]# ssh-add bash && ssh-add
Identity added: /root/.ssh/id_rsa (/root/.ssh/id_rsa)

注意:/etc/profile.d下建一个ssh-agent.sh文件:

[root@client.com ~]# vim /etc/profile.d/ssh-agent.sh
#!/bin/sh
if [ -f ~/.agent.env ]; then
    . ~/.agent.env >/dev/null
    if ! kill -0 $SSH_AGENT_PID >/dev/null 2>&1; then
        echo "Stale agent file found. Spawning new agent..."
        eval `ssh-agent |tee ~/.agent.env`
        ssh-add bash && ssh-add
    fi
else
    echo "Starting ssh-agent..."
    eval `ssh-agent |tee ~/.agent.env`
    ssh-add bash && ssh-add
fi

 6. 测试登录

[root@client.com ~]# ssh 172.16.100.2
[root@server1.com ~]# ssh 172.16.100.3
[root@server2.com ~]# 
posted @ 2017-10-14 02:12  零壹码  阅读(718)  评论(0编辑  收藏  举报