ssh使用私钥文件去做免密认证
批量添加密钥
关于公司连接服务器这块儿做的比较严谨,每次登录都需要指定私钥文件连接ssh -i "aws2lin27.pem" ubuntu@ec2-34-216-139-32.us-west-2.compute.amazonaws.com
这样连接,登录起来非常麻烦 ,后来就想到做免密认证后期使用ansible批量部署就非常简单
下面是写的脚本,大概逻辑是先需要把所有需要认证的服务器pem 私钥文件拷贝到本机想做免密的服务器,然后批量把自己的私钥拷贝到对方指定用户里,这样就实现不输入密码登录
1 | [root@localhost pem]# cat fix_pem.sh |
这个时候需要在写一个引用脚本,把主机把本机的私钥传输进对方的.ssh/authorized_keys这个文件
1 | [root@localhost pem]# cat add_pub_key.sh |
本机路径一定要正确,以及先用ssh连接一下是否可以连接,脚本会对其进行判断 ,如果超过5秒就自动把无法连接的IP放在AWS_no.log这个文件里去 ,会把私钥拷贝成功的主机IP放在AWS_yes.log这个文件当中
这个文件需要提前自己手动完成,因为每个主机对应的私钥文件都不相同
[root@localhost pem]# cat aws.list
54.200.50.103 /home/hongtao.yang/aws/pem/aws2lin69.pem
54.191.200.178 /home/hongtao.yang/aws/pem/aws2lin89.pem
52.89.78.38 /home/hongtao.yang/aws/pem/aws2lin92.pem
52.40.194.165 /home/hongtao.yang/aws/pem/aws2lin90.pem
52.35.93.17 /home/hongtao.yang/aws/pem/aws2lin70.pem
52.13.97.21 /home/hongtao.yang/aws/pem/aws2lin49.pem
44.236.240.155 /home/hongtao.yang/aws/pem/aws2lin91.pem
44.235.22.84 /home/hongtao.yang/aws/pem/aws2lin75.pem
44.231.47.122 /home/hongtao.yang/aws/pem/aws2lin79.pem
做完免密遇到的坑
- 方案一
由于之前我对私钥设置了密码,所以就算免密成功之后也需要手动输入私钥密码才能连接,所以找到以下两种方案
1、借助第三方工具Keychain
wget https://github.com/funtoo/keychain/archive/refs/heads/master.zip
unzip master.zip
cd keychain-master/
cp keychain /usr/bin/
[root@localhost pem]# vim /root/.bash_profile 把下面几行添加环境变量
PATH=$PATH:$HOME/bin
export PATH
keychain ~/.ssh/id_rsa
. ~/.keychain/$HOSTNAME-sh
source /root/.bash_profile
[root@localhost pem]# ssh-add -l 这个时候就可以看到他把秘钥写入了缓存然后就可以ssh了
2048 SHA256:RlCuwRVp5yzao9e/IapSJAWfHZNU8axzV/H3g3qA1Co /root/.ssh/id_rsa (RSA)
- 方案2
之前在Ubuntu下用SSH给私钥添加了一个密码,后来用着很麻烦。想去掉,网上查看本身就有这个功能,方法如下:
1 、在终端下输入ssh-keygen -p
2 、系统会提醒选择修改的私钥,默认是/home/username/.ssh/id_rsa
3 、选择好文件之后按回车,会提示输入旧密码。
4 、输入好之后会提示输入新的密码。
5 、直接回车,在提示输入新密码依然回车,此时私钥密码就会被清除。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Mr.yang 个人博客!
评论