felix-cao / Blog

A little progress a day makes you a big success!
31 stars 4 forks source link

Jenkins凭证(credentials)和SSH认证(Secure Shell) #64

Open felix-cao opened 6 years ago

felix-cao commented 6 years ago

  想一想,Jenkins从git仓库(gitHub)中去pull代码,git仓库为什么允许Jenkins这么干呢? 因此Jenkins和git仓库之间必须建立一种信任关系。本文讲的这种信任关系就是Jenkins凭证(credentials)和SSH认证(Secure Shell)。

SSH 认证

  在 Jenkins自动化部署(Github之Push) 这篇文章中 的 配置Github中Hooks & services 部分提到这部分的内容, 登录到jenkins服务器

sudo su -s /bin/bash jenkins // 务必以用户jenkins身份登录到centos中
ssh-keygen // 一路回车
cat /var/lib/jenkins/.ssh/id_rsa.pub //获取key

  然后把公钥添加到gitHub 某个repo的Display keys上,这时jenkins服务器就可以拿自己的私钥与github服务进行通信。

Jenkins凭证(Credentials)配置项

  “凭证”是我对它的理解,Jenkins对于“Credentials”一直没有汉化,由此可见官方对此也是比较犹豫的,我想也可以理解为秘钥。

在jenkins界面 Credentials -> System -> Add domain: Domain Name: 一般我都填写你git服务器的地址,如 github.xxx.com Description: 简单的描述,如 This is the Credential for github

点击 ok 后,再点击左侧的 “Add Credentials”

进入页面后. Kind: 可以选择 Username with password 或者 SSH Username with private key.(这里选择后者) Scope: Global(Jenkins, nodes, items, all child items, etc) Username: 随便起一个名字,以便在创建 Job 的时候使用该 Credential Private Key:可以指定文件,也可以使用默认的 ~/.ssh,当然也可以直接将私钥复制粘贴到此处。 Passphrase: 如果你在创建 ssh key 的时候输入了 Passphrase那就填写相应的Passphrase,为空就不填写 ID: 空 Description: 空

github SSH & GPG keys

  我们之前把公钥配置到gitHub的某个repo的Display keys上,那么Jenkins服务器只能对该repo有相应的权限,那如果我想对gitHub账号下的所有repo都有权限呢?

  然后我同样把私钥配置到Jenkins的Credentials中。