Linux系统一般默认都有安装SSH服务,因此可以让Jenkins通过SSH来登录并管理奴隶节点。登录SSH有两种方式:通过用户名和密码访问SSH;通过私钥的方式访问SSH。下面介绍的是通过私钥的方式访问SSH,创建Liunx节点。

第一步:配置Linux系统的SSH服务免密码登录

1. 新建登录用户Jenkins,然后切换到该用户

[root@RBS-09 ~]# useradd jenkins  
[root@ RBS-09 ~]# su - jenkins  
[jenkins@ RBS-09 ~]$

2. 生成一个密钥对,中间会有几次询问,都直接输入回车

[jenkins@ RBS-09 ~]$ ssh-keygen -t rsa  
#可以使用-t选项选择加密方式,包括 RSA 和 DSA 两种密钥
#例如:$ssh-keygen -t dsa 或者ssh-keygen -t rsa
#加密方式不同,key的名称不同,其他没有区别
#如果没有指定密钥,默认RSA
Generating public/private rsa key pair.
#私钥存放的位置,默认会存放在用户目录的.ssh文件夹,直接回车
Enter file in which to save the key (/home/froad/.ssh/id_rsa): 
Enter passphrase (empty for no passphrase): #默认,回车
Enter same passphrase again: #默认,回车
Your identification has been saved in /home/jenkins/.ssh/id_rsa.#私钥路径
Your public key has been saved in /home/jenkins/.ssh/id_rsa.pub.#公钥路径
The key fingerprint is:
6b:81:28:af:5e:54:bb:af:cf:e3:f5:2d:0a:aa:50:71 jenkins@ RBS-09.funshion.com  
[jenkins@ RBS-09 ~]$

3. 验证/home/jenkins目录下是否已创建了两个密钥:公钥id_rsa.pub和私钥id_rsa

[jenkins@ RBS-09 ~]$ ls -l /home/jenkins/.ssh/  
总计 8  
-rw------- 1 jenkins jenkins 1675 Mar 14 13:31 id_rsa  
-rw-r--r-- 1 jenkins jenkins  396 Mar 14 13:31 id_rsa.pub

4. 将公钥拷贝到authorized_keys文件

[jenkins@ RBS-09 .ssh]$ pwd  
/home/jenkins/.ssh  
[jenkins@ RBS-09 .ssh]$ cat id_rsa.pub >> authorized_keys     
[jenkins@ RBS-09 .ssh]$ chmod 600 authorized_keys

5. 将authorized_keys文件拷贝到需要被管理Linux系统的用户目录下的.ssh文件夹中

6. 验证是否配置成功

注1只能在生成key的电脑上访问authorized_keys的电脑,如果需要两台电脑互相访问均免密码。则需要重复上面的步骤(机器的配置刚好相反)。
注2如果添加指纹的时候提示添加失败,是因为你以前添加过了这个ip的指纹。
解决办法:将.ssh目录下known_hosts文件删除,也可以打开这个文件将对于ip的那条记录删除

[jenkins@ RBS-09 .ssh]$ ssh root@192.168.2.xxx
#root是用户名,可以根据你的需求改变
The authenticity of host '192.168.2.xxx (192.168.2.xxx)' can't be established.
RSA key fingerprint is ff:07:49:4d:xxxxxxxxxxe:2c:38.
Are you sure you want to continue connecting (yes/no)? yes
#同意将指纹添加到本地
Warning: Permanently added '192.168.2.xxx' (RSA) to the list of known hosts.
Last login: Wed Oct 23 13:58:32 2013 from 192.168.1.xxx

第二步:配置凭证

1. 回到Jenkins页面上,配置访问这个服务器的“Credential”,在Jenkins页面的左侧快捷栏中点击“Credentials”

这里写图片描述
这里写图片描述

2. 选择默认的“Global credentials”,点击左侧的“Add Credentials”添加访问服务器的凭据

注:这里面有个凭据域的概念,它的作用是如果我们配置了很多登录服务器的凭据,可以通过域来分类整理这些凭据,比如:所有访问服务器A的凭据都在一个域里这种情况。
这里写图片描述

3. 在“Kind”里,我们选择“SSH Username with private key”;“Username”这里输入登录服务器的用户名“jenkins”;“Private Key”这里选择“Enter directly”,输入内容就是上面步骤里创建的 id_rsa 文件内容。

这里写图片描述

第三步:通过Jenkins主页->系统管理进入管理节点界面,如下图,然后对节点进行配置

这里写图片描述

第四步:选择“新建节点”后,���转至新建节点页面,输入一个节点名称,选择“Dump Slave”添加一个节点。

这里写图片描述

第五步:验证Linux节点是否安装成功。可通过管理节点界面查看,也可以查看节点的日志信息。

注:使用凭证进行连接时,出现以下问题,则只需修改authorized_keys权限:chmod 755 authorized_keys

[05/15/14 09:37:32] [SSH] Opening SSH connection to 10.10.22.37:22.  
ERROR: Server rejected the 1 private key(s) for jenkins (credentialId:7265ff8a-1515-4745-a174-e6f550630818/method:publickey)  
[05/15/14 09:37:32] [SSH] Authentication failed.  
hudson.AbortException: Authentication failed.  
    at hudson.plugins.sshslaves.SSHLauncher.openConnection(SSHLauncher.java:1143)  
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:648)  
    at hudson.plugins.sshslaves.SSHLauncher$2.call(SSHLauncher.java:642)  
    at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)  
    at java.util.concurrent.FutureTask.run(FutureTask.java:166)  
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)  
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)  
    at java.lang.Thread.run(Thread.java:701)  
[05/15/14 09:37:32] [SSH] Connection closed.  
[05/15/14 09:37:32] Launch failed - cleaning up connection  
Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐