折腾了一下午,终于弄好了。网上很多博客写的都不清楚,所以记录一下。
环境说明
服务器 |
说明 |
192.168.199.1 |
Jenkins |
192.168.199.2 |
gitlab |
操作步骤
1,生成公匙,在jenkins服务器执行
ssh-keygen -t rsa
如果已经存在,最好备份一下再覆盖,防止以后再需要。
其他直接按Enter就行了。
这里输入的密码的作用不清楚,我直接输入了空白。
2,Jenkins主机的公钥复制到gitlab主机的authorized_keys文件上,在jenkins服务器执行
ssh-copy-id root@192.168.199.2
gitlab的主机会生成authorized_keys文件
3,git项目添加公钥
标题随便写,公钥可以通过命令或者自己在jeknins服务器上得到
cat /root/.ssh/id_rsa.pub
4,设置服务器(非必须)
允许公钥登录,禁止密码登录。
编辑 /etc/ssh/sshd_config,检查并设置以下选项。
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication no
坑
如果以上全部做好了,还是无法免密码拉取代码,可能是gitlab服务器没有关闭SELINUX。我就是这个原因导致的,浪费了我好久
关闭SELINUX和SWAP
swapoff -a && sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab
setenforce 0 && sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config