引言:最近在尝试使用gitlab-runner来实现CI/CD功能,期间需要远程执行shell命令,由此引出免密登录,此前也做过,只是记忆不佳,导致本次做的时候又忘记了,故而在此做一个记录,便于日后查阅,也供有需要者参考,若有不足之处,敬请斧正。

场景描述:现有A、B两台linux机器,A需要在B上远程执行shell脚本。(注意:此处linux为centos)

解决步骤:

1、在A机器生成密钥,执行以下命令:

ssh-keygen -t rsa //生成密钥

2、拷贝A机生成的公钥 id_rsa_pub.A(此处为便于区分,故将公钥重命名) 至 B 机器的 /root/.ssh/目录下:

scp id_rsa_pub.A root@B_IP:/root/.ssh/ //拷贝至B机器,B_IP为B机器的ip地址,root为其用户

3、在B机器上创建 authorized_keys文件(若存在则追加公钥即可):

touch /root/.ssh/authorized_keys //创建

cat id_rsa_pub.A >> authorized_keys //将公钥追加到文件中

4、更改authorized_keys文件的权限

chmod 400 authorized_keys // 修改文件权限为400,注意,该文件权限比较重要,若更改为777则或仍需密码

附上图解供参考:

最后:Wish you happy every day.