登陆自动配置ssh-agent
2019-01-24 本文已影响19人
二手三流科学家
在~/.bashrc
中添加
#实现登录自动启动ssh-agent
#同时,每一个远端主机使用独立的密钥对,而不是跟其他远端主机公用一个密钥对
#密钥和ip的对应关系为 key_for_XXX.XXX.XXX.XXX(.pub) 为 连接 XXX.XXX.XXX.XXX的密钥对
#在当前进程中打开ssh-agent
eval `ssh-agent -s` &> /dev/null
for i in 172.16.1.{7,31,41}
do
private_key_name=~/.ssh/key_for_${i}
public_key_name=${private_key_name}.pub
#将当前私钥添加进ssh-agent中
ssh-add ${private_key_name} &> /dev/null
test -e ~/.ssh/known_hosts || touch ~/.ssh/known_hosts
#如果曾经向远端copy过公钥,那么略过这步
grep -q ${i} ~/.ssh/known_hosts || sshpass -p123456 ssh-copy-id -i ${public_key_name} -o StrictHostKeyChecking=no -o ConnectTimeout=3 -o ConnectionAttempts=2 ${i} &> /dev/null
#-f 使ssh在background中进行,执行一个命令退出远端,只有在添加完私钥后操作远端,才会将ssh-agent中的密钥与远端ip对应起来
ssh -o ConnectTimeout=3 -o ConnectionAttempts=2 -f ${i} exit
done
最后,这样的做法还是有一个问题,不能实现通过ssh hostname来实现登录。