持续集成环境Jenkins凭证管理

持续集成环境Jenkins凭证管理


凭据可以用来存储需要密文保护的数据库密码、Gitlab密码信息、Docker私有仓库密码等,以便Jenkins可以和这些第三方的应用进行交互。


安装Credentials Binding插件

要在Jenkins使用凭证管理功能,需要安装Credentials Binding插件

image-20230523131824067.png



image-20230523132159827.png



image-20230523132311244.png


image-20230523132518931.png


image-20230523135923226.png

image-20230523135948348.png




image-20230523140053965.png


image-20230523140110902.png


Username with password:用户名和密码

SSH Username with private key: 

使用SSH用户和密钥

Secret fifile:需要保密的文本文件,使用时Jenkins会将文件复制到一个临时目录中,再将文件路径

设置到一个变量中,等构建结束后,所复制的Secret fifile就会被删除。

Secret text:需要保存的一个加密的文本串,如钉钉机器人或Github的api token

Certifificate:通过上传证书文件的方式

常用的凭证类型有:Username with password(用户密码)和SSH Username with private key(SSH密钥)



image-20230523133703848.png




接下来以使用Git工具到Gitlab拉取项目源码为例,演示Jenkins的如何管理Gitlab的凭证。

安装Git插件和Git工具

为了让Jenkins支持从Gitlab拉取源码,需要安装Git插件以及在CentOS7上安装Git工具


image-20230523134109322.png




image-20230523134852021.png




image-20230523135011472.png


在jenkins这台机器里面也要安装git

yum install git -y

查看安装的版本
[root@centos7 ~]# git --version
git version 1.8.3.1



基于用户密码类型创建凭证

image-20230523140210042.png





image-20230523140226034.png







image-20230523140309082.png







image-20230523140521312.png


image-20230523140532379.png



测试凭证是否可用

创建一个FreeStyle项目:新建Item->FreeStyle Project->确定

image-20230523140814650.png




image-20230523140848300.png




找到gitlab


image-20230523141007869.png


image-20230523141405288.png



image-20230523141640652.png



image-20230523141951270.png





image-20230523142029519.png



基于SSH密钥类型

SSH免密登录示意图

image-20230523142634457.png



1.使用root用户生成公钥和私钥

[root@centos7 ~]# ssh-keygen -t rsa
一路回车即可
Generating public/private rsa key pair.
Enter file in which to save the key (/root/.ssh/id_rsa):
Created directory '/root/.ssh'.
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:Q8EMl7ajXWfXwRzxV6ilmNIcdeSv1RKjzMmGOoKlVu8 root@centos7.9-2
The key's randomart image is:
+---[RSA 2048]----+
|      .+o. ...=++|
|       .=..  oo+o|
|       ..+ + ++.+|
|       .+ *==o.++|
|      ooS+.oB.. +|
|     =...o .   + |
|    + . +     .  |
|   .   o .       |
|        E        |
+----[SHA256]-----+


查看公钥和私钥

[root@centos7 ~]# ls /root/.ssh/
id_rsa  id_rsa.pub

id_rsa
	私钥文件

id_rsa.pub
	公钥文件



2.把生成的公钥放在Gitlab中

使用gitlan管理员用户登录

image-20230523143535063.png


查看ssh的公钥文件。是jenkins这台服务器的

ssh rsa_id文件提示找不到或者输入ssh私钥也连接不了对端,原因可能是openssh版本太高的问题,用指定算法和格式来生成ssh密钥对:
ssh-keygen -m PEM -t rsa -b 4096
返回结果,复制返回结果到gitlab上
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC/U34uj5AlZznUBnXPl88HlgzX3lQYQ+3AQhe4DdoQEM45OiLY4nERV/KZxx4CIvsNe9/MMwYUXpscYy5vjuyQ1Ygei1gm3kP9QdDAYcxTcFaJtqqrz9KAmPHDu+/Moiy7WZQXkoCdtcChZYfDkkbZ8WPdhGZrx9/9/Z0LRTHEWxfoQ6RcVgfFcM+H+47LMxEn9NYVTCNl5zczW6WIHax2bNUApNJ7EB6yuB/CqBkyoJK75idbUpBo38RICI4Wg0dmC20yum49kvEgg7cbe9rhy6CZIA8wunMa8GbQV3Brgy9lX8gUCZCkdiGRPgKfWoM4/hi2nJj2Gq/4nF9B7X9V root@centos7.9-2


image-20230523143938167.png



image-20230523144056545.png

3.在Jenkins中添加凭证,配置私钥

在Jenkins添加一个新的凭证,类型为"SSH Username with private key",把刚才生成私有文件内容复制过来

image-20230523144205983.png


image-20230523144341329.png

image-20230523144400513.png

查看私钥文件,jenkis服务器上看,复制私钥内容

[root@centos7 .ssh]# cat /root/.ssh/id_rsa
返回结果
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEAv1N+Lo+QJWc51AZ1z5fPB5YM195UGEPtwEIXuA3aEBDOOToi
2OJxEVfymcceAiL7DXvfzDMGFF6bHGMub47skNWIHotYJt5D/UHQwGHMU3BWibaq
q8/SgJjxw7vvzKIsu1mUF5KAnbXAoWWHw5JG2fFj3YRma8ff/f2dC0UxxFsX6EOk
XFYHxXDPh/uOyzMRJ/TWFUwjZec3M1uliB2sdmzVAKTSexAesrgfwqgZMqCSu+Yn
W1KQaN/ESAiOFoNHZgttMrpuPZLxIIO3G3va4cugmSAPMLpzGvBm0Fdwa4MvZV/I
FAmQpHYhkT4Cn1qDOP4YtpyY9hqv+JxfQe1/VQIDAQABAoIBAB42ZA2cNAoEA/i8
UGxIr7Ol+T85Z5QxXeDnTvGMlmvFC5uz137iOzKe7btk2xNBTN2zOwL257Xdvqa7
7sBFFIxGe+k+3du9a4UZmIpYpzhh2/iBNPBOsBIIlNzw14w7685l9eHHC7Jb2iBi
dQ7oEXInETsQxk+sz20/WEZIVfSIm3uV0fUDAhuo9gRUmdvVWC7Pk13xEcDHytFU
u3GP2k8PZkv0rxn7qkBiSehT+qpNGR0yv1e3JkTV/EZZ4Wmbmrx8RfMbCy+PDuid
yUQkl5/Ai1nxRiKziZelRGIWaFmho1+AG74RXtTBQZQrLzhrrr7oTPFXMsW/ztsi
g5CtncECgYEA/IFSFyTGBtwetTlccxyl11/xnAaGcodCCwEdR86jfcr21Dq1CVS6
wEM/EO0GOQxwX5egMyAMH0eYsiMPRYw7BGr/UDwTlbUKFhgZPSJ9ym/GEMoyIG63
+pxUoBbcjyac6HLnx2zoojrWogE/MoBgozlgtjHdCPsPu1Z5i4me3LECgYEAwflm
6e8vDrkCHL+zzt0Z4MyxnbWC7yK7WL52Wc8QqKYGrdjWAjm7mY4PDdRsS8vbEg+4
cmCQ4AAMydsB2R0xa9GWoLn5CeSS4xrm2v3eezNPX5v01Q6aP2wojVOelsLiPrTW
d0kgXWcsBOhPqubs1asv9BP+tl+O74OmuwDUpeUCgYEAtkdsyUREqAMTL+Pet0KA
/b9HHUkgmWDG7ka5qnKjV1XDZWWT9s5xmgVxa3iPu3MdVASTIxUJazM2KbJhfeVD
XWcYNAWKZdIxG839ukJB6HdT1h8AnKUQrxtXg9G9GqHXN35rj20xaptrAbxAsOY3
3Ny40g2g8LC8pJJCX9bTFaECgYEAnxHXw5/SB1DQ2qKa4dmPjzpNrfdcGJ9y46PN
ini0QJlmgMqBNfICVjqZPc4lwUK7tGQP7jwiko937VEcgt/d131Y+RWJlQNNMdCt
4IiwGnhJby6F6PLAq6IW307jjt7iimniNpBRakdhYeTg8FXPgqmP+aksCIL0xJZB
9LkJqcECgYEA70Bd1LDfhE+QNJGUwVSEG+zx+gt67DqxzFyPvNByz5aiez03rYj5
eV1hsBwfSa8iyXra6ROVk0p4I1k1DgCDsujJaQI/UxUronY0O5QQDVfZKCLPVOBZ
E4GFKwU8ia4z2DrSYDrZ7Q41ZIhuxa5ys+kbOKER2/sTAP609HXKcwE=
-----END RSA PRIVATE KEY-----


image-20230523144904809.png




image-20230523145005608.png


image-20230523145042552.png




添加一个test20项目做测试

image-20230523145305097.png





image-20230523145537708.png

image-20230523145732106.png



SSH连接报错No ECDSA host key is known的小伙伴,意思是说首次连接gitlab服务器需要验证;
在安装Jenkins的服务器里面执行命令 git ls-remote -h 你项目的ssh地址,
之后勾选yes就会在~/.ssh下生成一个记录目标主机的文件 known_hosts,
最后把这个文件复制到jenkins的ssh目录下 cd /var/lib/jenkins/.ssh ,然后把刚才那个文件拷贝过去,最后刷新页面就ok了

解决命令如下:
git ls-remote -h 10.0.0.20
cp /root/.ssh/known_hosts /var/lib/jenkins/.ssh/ -ra


image-20230523154202662.png



image-20230523154957557.png




image-20230523155113792.png



本文 暂无 评论

Top