需求
Jenkins部署的时候需要登陆到部署机执行shell脚本,然后采用ssh免密登陆。
具体步骤
(1)、客户端首先向服务器发送要对其进行身份验证的密钥对的用户名。
(2)、服务器检查客户端尝试登录用户帐户的下authorized_keys文件。
(3)、如果在文件中找到具有匹配公钥,则服务器生成随机数并使用公钥加密该随机数。并该加密消息发送给客户端。
(4)、如果客户端利用自己的私钥解密消息(如果可以的话),从而显示原始数。
(5)、客户端将解密的原始数和用于加密通信的共享会话密钥组合,计算他们的哈希值。客户端将该哈希值发回服务器,作为回应。
(6)、服务器使用相同的共享会话密钥和此前(步骤4)发送给客户端的原始编号来自行计算哈希值。将计算结果和客户端发回的哈希值对比。如果这两个值匹配,则证明客户端拥有私钥并且客户端已经过身份验证。
操作流程
客户端创建公钥私钥,然后将公钥放到被登陆机的指定目录下。
比如:
我的仓库服务器是A,用来拉代码和编译,需要登陆到执行服务器B。
- 服务器A生成公钥私钥
执行后会生成两个文件:id_rsa、id_rsa.pub文件,前者是私钥,后者是公钥。
- 将id_rsa.pub文件复制到服务器B的指定目录
应用到Jenkins
安装插件:Publish over SSH
在配置中找到位置,填上私钥。(就是服务器A /root/.ssh/ 下生成的那个)
然后填上服务器的IP(hostname)、登录用户名即可测试。
当你停下来休息的时候,不要忘记别人还在奔跑!