ssh-agent 是专为既使人愉快又安全的处理 RSA 和 DSA 密钥而设计的特殊程序, ssh-agent 是个长时间持续运行的守护进程(daemon),设计它的惟一目的就是对解密的专用密钥进行高速缓存。
ssh-keygen
2) 复制~/.ssh/id_rsa.pub到host1,host2,host3服务器。咱们要将它加入到root账号的~/.ssh/authorized_keys中
ssh-copy-id -i .ssh/id_rsa.pub host1
ssh-copy-id -i .ssh/id_rsa.pub host2
ssh-copy-id -i .ssh/id_rsa.pub host3
3) 上传成功后,能够在每台服务器上的看到公钥文件
ls -l /root/.ssh/authorized_keys
4) 在堡垒机上启用ssh-agent
eval `ssh-agent`
5) 使用 ssh-add 命令把咱们的专用密钥添加到 ssh-agent 的高速缓存中
ssh-add
6) 开启ssh-agent转发
编缉/etc/ssh/ssh_config文件: ForwardAgent yes
让ssh-agent能转发,这样就能够这样登录了:堡垒机---->host1---->host2,到此请注意,若是host1上没有设定转发的话就登不了host3了
7) 自动运行ssh-agent
/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
fi
else
echo "Starting ssh-agent..."
eval `ssh-agent |tee ~/.agent.env`
ssh-add
fi
ssh-agent的keychain方法实现普通用户以root方式登入服务器:
1) 在堡垒机上建立普通用户tony
useradd tony
passwd 123456
2) 建立带有密码的密钥
ssh-keygen
须要设定存放key的目录,以及密码,就能生成私钥和公钥
Generating public/private rsa key pair.
Enter file in which to save the key (/home/tony/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/tony /.ssh/id_rsa.
Your public key has been saved in /home/tony /.ssh/id_rsa.pub.
3) 复制~/.ssh/id_rsa.pub到运行sshd的服务器。咱们要将它加入到该用户在服务器上相应账号的~/.ssh/authorized_keys中
ssh-copy-id -i .ssh/id_rsa.pub root@192.168.1.1
4) 上传成功后,能够在192.168.1.1上的看到公钥文件
ls -l /root/.ssh/authorized_keys
5) 下载安装keychain软件
wget http://www.funtoo.org/archive/keychain/keychain-2.7.1.tar.bz2
tar jxvf keychain-2.7.1.tar.bz2
cd keychain-2.7.1
install -m 0755 keychain /usr/bin/
6) 在bash_profile里面加入启动脚本,每次用户登入后就会执行keychain
/usr/bin/keychain --clear ~/.ssh/id_rsa ##开启一个新的shell的时候提示输入密码,提升安全性
. ~/.keychain/$HOSTNAME-sh > /dev/null ##开启一个新的shel启用keychain
7) 建立新用户www,也使用/home/tony /.ssh/id_rsa.和/home/tony /.ssh/id_rsa.pub,就能登入全部服务器了
cat >> /home/www/.bash_profile <<EOF
/usr/bin/keychain --clear ~/.ssh/id_rsa
. ~/.keychain/$HOSTNAME-sh > /dev/null
EOF
mkdir /home/www/.ssh
cp /home/tony /.ssh/id_rsa* /home/www/.ssh
chown –R /home/www