登陆自动配置ssh-agent

~/.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来实现登录。

你可能感兴趣的:(登陆自动配置ssh-agent)