Jenkins免密登录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jenkins免密登录相关的知识,希望对你有一定的参考价值。
参考技术A 方法一:在jenkins服务器中生成私钥. 在id_rsa中
然后将其添加到应用服务器/apps/.ssh/id_rsa中。 (也就是两台服务器的密钥是一样的,id_rsa中的内容)
再将该密钥放入Publish over SSH中对应的服务器信息中,则能实现免密传输。
方法二:
可以参考另一篇文章中的方法,原理是一样的。
搭建CI流程–jenkins
在期间遇到的坑:
1.提示信息
jenkins.plugins.publish_over.BapPublisherException: Failed to add SSH key. Message [invalid privatekey: [B@60373f7]
这是由于生成密钥的openssh的版本过高,
首行开头是
-----BEGIN OPENSSH PRIVATE KEY——--,则不支持。
需要使用以下命令
ssh-keygen -m PEM -t rsa -b 4096
来生成密钥。 -m 参数指定密钥的格式, PEM是rsa之前使用的旧格式,4096为长度。
这样生成后的密钥开头为
-----BEGIN RSA PRIVATE KEY-----。。
则可以通过密钥校验
2.提示信息
jenkins.plugins.publish_over.BapPublisherException: Failed to connect and initialize SSH connection. Message: [Failed to connect session for config [10.16.148.47(uat-prod-1)]. Message [Auth fail]]
则需要将jenkins服务器上的 id_rsa.pub中的公钥值添加到对应服务器的authorized_keys中。
Linux 生成密钥,实现免密登录
[root@jenkins ~]# ssh-keygen -t rsa ##在命令行输入此命令,直接按三次回车
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /root/.ssh/id_rsa.
Your public key has been saved in /root/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:CMTq1mN585C1re8Inew2u3FfH4be9cYpJk1exBIF6PQ root@jenkins.od.com
The key‘s randomart image is:
+---[RSA 2048]----+
| .. ..o. |
| .. o . |
| .. o . o |
| . . .. . E o |
| . . ..oSo o |
| o = =o... ... |
| . . o.+=.. +.o+o|
| o=+ o.*oo*|
| .=*o +..oo|
+----[SHA256]-----+
[root@jenkins ~]# ls /root/.ssh/ ##在这目录下生成 私钥和公钥
id_rsa id_rsa.pub
[root@jenkins ~]# cat /root/.ssh/id_rsa.pub
##查看公钥内容
##复制内容并将内容保存到想登陆的服务器的/root/.ssh/authorized_keys
## authorized_keys需要自己创建,将复制的内容追加到文件里面,一个公钥放一行,可以检查下公钥有没有跨行。创建文件的命令为:touch authorized_keys
给文件添加权限
[root@cheshi ~]# chmod 700 /root/.ssh
[root@cheshi ~]# chmod 600 /root/.ssh/authorized_keys
[root@jenkins ~]# ssh 想登陆服务器的IP地址
## 登录时不用输入密码
以上是关于Jenkins免密登录的主要内容,如果未能解决你的问题,请参考以下文章