如何设置jenkins的ssh密钥以通过ssh

时间:2016-05-19 18:40:51

标签: jenkins ssh

Jenkins需要证书才能使用 ssh 发布和 ssh 命令。它可以在"manage jenkins" -> "Configure System"-> "publish over ssh"下配置。

问题是:如何创建证书?

我有两个ubuntu服务器,一个运行Jenkins,另一个运行应用程序。

我是否设置了Jenkins证书并将其中的一部分放在部署框上,或者在部署框上设置了证书,并将部分内容放在Jenkins上?证书是否需要名为Jenkins的用户名,或者是否适用于任何用户?我们在开发框中没有Jenkins用户。

我知道有许多不兼容的ssh类型,Jenkins需要它吗?

有没有人找到关于如何设置这一切的指南(如何生成密钥,放置它们等等)?

3 个答案:

答案 0 :(得分:30)

您需要在Jenkins服务器上创建一个公钥/私钥作为Jenkins用户,然后将公钥复制到您要在目标服务器上进行部署的用户。

步骤1,以用户jenkins

在构建服务器上生成公钥和私钥
build1:~ jenkins$ whoami
jenkins
build1:~ jenkins$ ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/var/lib/jenkins/.ssh/id_rsa): 
Created directory '/var/lib/jenkins/.ssh'.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /var/lib/jenkins/.ssh/id_rsa.
Your public key has been saved in /var/lib/jenkins/.ssh/id_rsa.pub.
The key fingerprint is:
[...] 
The key's randomart image is:
[...]
build1:~ jenkins$ ls -l .ssh
total 2
-rw-------  1 jenkins  jenkins  1679 Feb 28 11:55 id_rsa
-rw-r--r--  1 jenkins  jenkins   411 Feb 28 11:55 id_rsa.pub 
build1:~ jenkins$ cat .ssh/id_rsa.pub
ssh-rsa AAAlskdjfalskdfjaslkdjf... jenkins@myserver.com

步骤2,将pub文件内容粘贴到目标服务器上。

target:~ bob$ cd .ssh
target:~ bob$ vi authorized_keys (paste in the stuff which was output above.)

确保您的.ssh目录中包含permissoins 700且您的authorized_keys文件具有权限644

步骤3,配置Jenkins

  1. 在jenkins网页控制面板中,nagivate to" Manage Jenkins" - > "配置系统" - > "通过SSH"
  2. 发布
  3. 输入文件的路径,例如" var / lib / jenkins / .ssh / id_rsa",或粘贴与目标服务器上相同的内容。
  4. 输入您的密码,服务器和用户详细信息,您就可以开始使用了!

答案 1 :(得分:1)

对于Windows:

  1. 在Jenkins中为存储库安装必要的插件(例如:GitHub install GitHub和GitHub Authentication插件)。
  2. 您可以使用Putty密钥生成器或通过在git bash中运行以下命令来生成密钥:schema_data
  3. 私有密钥必须为OpenSSH。您可以在腻子密钥生成器中将私钥转换为OpenSSH
  4. SSH密钥成对出现,公开和私有。将公共密钥插入要克隆的存储库中。私钥在Jenkins中保存为凭据
  5. 您需要复制SSH URL而不是HTTPS才能使用ssh密钥。

答案 2 :(得分:1)

您不需要在Jenkins服务器上创建SSH密钥,也不需要将SSH密钥存储在Jenkins服务器的文件系统上。在可能经常创建和销毁Jenkins服务器实例的环境中,这一点信息至关重要。

生成SSH密钥对

在任何计算机(Windows,Linux,MacOS ...都没关系)上生成SSH密钥对。使用本文作为指导:

在目标服务器上

在目标服务器上,您需要将 public 密钥的内容(根据以上文章,{id_rsa.pub)放入以下文件的主目录下的.ssh/authorized_keys文件中Jenkins将用于部署的用户。

在詹金斯

使用“通过SSH发布”插件

参考:https://plugins.jenkins.io/publish-over-ssh/

访问:Jenkins> Manage Jenkins> Configure System> Publish over SSH

  • 如果私钥已加密,则需要在“ Passphrase”(密码)字段中输入密钥的密码,否则将其保留。
  • 将“密钥路径”字段保留为空,因为当您使用粘贴的密钥时(下一个步骤),该字段将被忽略
  • 私有密钥的内容(根据以上文章,id_rsa复制并粘贴到“密钥”字段中
  • 在“ SSH服务器”下,为目标服务器“添加”新的服务器配置。

使用存储的全局凭据

访问:Jenkins> Credentials> System> Global credentials (unrestricted)> Add Credentials

  • 种类:“带有私钥的SSH用户名”
  • 范围:“全局”
  • ID :[为此密钥创建一个唯一ID]
  • 说明:[可选,输入说明]
  • 用户名:[用户名詹金斯将用于连接到远程服务器]
  • 私钥:[选择“直接输入”]
  • 密钥:[粘贴私有密钥的内容(根据以上文章,id_rsa)]
  • 密码短语:[输入密钥的密码短语,如果密钥未加密,则将其保留为空白]