第一个主机:client.com (本地测试服务器,IP:172.16.100.1)算法
第二个主机:server1.com (生产环境服务器,IP:172.16.100.2)vim
第三个主机:server2.com(生产环境服务器,IP:172.16.100.3)bash
背景:从一个主机(client.com)登陆多个主机(server1.com 或server2.com)时,每次都须要输入密码方可登陆。而且登陆成功其中一个主机(server1.com)以后再登陆另外一个主机(server2.com)时也须要输入密码。服务器
实现目标:从一个主机多个主机时不须要输入密码登陆而且登陆的主机中再次登陆另外一个主机时也不须要输入密码。ssh
实现步骤:测试
操做系统:CentOS 7spa
开包包:操作系统
# yum groupinstall "Development Tools" # yum -y install tree
1. 在每一个主机上使用rsa算法生成密钥对,即非堆成密钥 id_rsa和id_rsa.pub,在三个服务器分别执行以下代码:.net
[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 ~]#