虚拟化容器,大数据,DBA,中间件,监控。

Jenkins 配置SSH免密钥

20 12月
作者:admin|分类:系统运维

说明


Jenkins构建时需要连接远程服务器并且执行脚本,这时就需要配置ssh免密钥登录。Jenkins构建时都是以jenkins用户进行操作,所以要以jeknins用户来配置免密钥登录。本教程以用户名sjfuser为例说明。A:192.168.3.104, B:192.168.3.107,需求:A登录B时免密钥。

 

命令


ssh-keygen -t rsa 产生公钥与私钥对

ssh-copy-id 将本机的公钥复制到远程机器的authorized_keys文件中

 

 

步骤


1. 切换到sjfuser用户

    su - sjfuser

2. 用ssh-keygen -t rsa产生密钥对

[sjfuser@jenkins ~]$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/home/sjfuser/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/sjfuser/.ssh/id_rsa.
Your public key has been saved in /home/sjfuser/.ssh/id_rsa.pub.The key fingerprint is:
56:3e:89:fc:6f:8c:4d:06:ee:5f:b9:6b:a3:6a:d9:e2 sjfuser@jenkins
The key's randomart p_w_picpath is:
+--[ RSA 2048]----+
| |
| |
| . |
| . +.. |
| S.+. |
| . ...o . |
| ..O o |
| *.=.o. |
| oE=+ooo |
+-----------------+

 3. 用ssh-copy-id将公钥从A复制到B

[sjfuser@jenkins ~]$ ssh-copy-id -i ~/.ssh/id_rsa.pub "-p 23456 root@192.168.3.107"
root@192.168.3.107's password:
Now try logging into the machine, with "ssh '-p 23456 root@192.168.3.107'", and check in:
.ssh/authorized_keys
to make sure we haven't added extra keys that you weren't expecting.

 注意

ssh-copy-id 将key写到远程机器的 ~/ .ssh/authorized_key.文件中。

如果你远程服务器SSH端口没有修改过,可以不用加-p 23456,要特别注意双引号。

当然你复制文件到远程服务器也可以用SCP命令。

 

验证登录


[sjfuser@jenkins ~]$ ssh -p 23456 root@192.168.3.107

Last login: Mon Apr 19 15:10:04 2019 from 192.168.3.104

[root@YiLian ~]#

 

扩展


1. 现在实现了需求,如果你想B访问A时也免密钥,只要在B上按上面的步骤来。

2. 如果添加指纹的时候提示添加失败,是因为你以前添加过了这个ip的指纹。

解决办法:将.ssh目录的known_hosts文件删除掉。也可以打开这个文件把对应ip的那条记录删除。

3. 注意文件权限的问题

A

[sjfuser@jenkins ~]$ ll .ssh/
-rw-------. 1 sjfuser sjfuser 1671 4月 19 05:10 id_rsa
-rw-r--r--. 1 sjfuser sjfuser 398 4月 19 05:10 id_rsa.pub
-rw-r--r--. 1 sjfuser sjfuser 417 4月 19 05:08 known_hosts

B

-rw------- 1 root root 1217 Apr 21 10:46 /root/.ssh/authorized_keys

4. Jenkins配置免密SSH Servers两种方式(当然 SSH Servers 直接输入账号密码也是可以的)

方式一:Publish over SSH 的 Path to key 中配置 id_rsa 路劲。(这个一次配置好后,后期更新 known_hosts 无需再次配置)

方式一:Publish over SSH 的 key 粘贴 id_rsa 的内容。(这个每更新一次 known_hosts 就要去重新添加更新一下,不然后面新加的免密机器会无法登录)

浏览553 评论0
返回
目录
返回
首页
Jenkins 平台部署发布你的maven项目 Ansible 变量使用详解(二)