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

第一个主机: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 ~]# 
相关文章
相关标签/搜索