一、首先要配置两台linux如何使用SSH免密码登录,这样脚本执行scp命令以及远程执行脚本都不需要输入密码:
A为jenkins所在机器(ip: 192.168.100.199),B为项目要部署的机器(ip:59.49.77.150,ssh端口:8888), A,B都为CentOS
在A上执行命令:
ssh-keygen -t rsa(连续三次回车,即在A上生成公钥和私钥,不设置密码)- 确保B机器上有/root/.ssh 目录,没有的时候mkdir /root/.ssh 新建,而且.ssh目录的权限是700
- 把A上的/root/.ssh/id_rsa.pub文件发送到B的/root/.ssh目录下:
scp -P 8888 id_rsa.pub root@59.49.77.150:/root/.ssh/id_rsa.pub
这里需要输入密码
在B上执行命令:
touch /root/.ssh/authorized_keys(如果已经存在这个文件就不用新建了)chmod 600 /root/.ssh/authorized_keys(必须将/root/.ssh/authorized_keys的权限改为600,该文件用于保存ssh客户端生成的公钥,可以修改服务器的ssh服务端配置文件/etc/ssh/sshd_config来指定其他文件名)cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys(蒋id_rsa.pub的内容追加到authorized_keys中,注意不要覆盖authorized_keys的原先内容(如果之前有的话))
此时再在A上登录B:
ssh -p 8888 root@59.49.77.150
就无需密码可以登录成功!
二、将Jenkins打好的项目scp到目标服务器,执行自己的脚本
在Jenkins build阶段执行的shell脚本中就可以使用scp命令而无需输入密码了
参考文章: