如何设置 gitlab 的 deploykey,实现免密码 git pull 代码?
发布于 作者:苏南大叔 来源:程序如此灵动~苏南大叔又来讲述运维部署的秘传绝技了。本文讲述的是:如何在运维代码层面上,免密码git pull
代码。其实就是运维专属的git pull
方案好了。好处就是:可以方便集成各种运维工具,做到代码自动化部署。
本文涉及的道具是:一个gitlab
服务,一个代码分发服务器。在gitlab
上的目标项目是project/demo
。本文就不说gitlab
的部署了,内容比较复杂,苏南大叔会在其它文章里面提及。
设置代码分发服务器
因为该服务器是用于代码分发的,那么在这个服务器上面,需要设置一个ssh
的公钥私钥。那么,请查看这个系统目录,~/.ssh/
。看看,该目录下面,是否有文件~/.ssh/id_rsa.pub
存在。
如果这个目录下面没有配置好id_rsa.pub
文件的话,在服务器上项目的根目录下面,使用git pull
的时候,就会要求输入密码。而苏南大叔的目标是:设置无密码拉取git
项目代码。
ls -al ~/.ssh/
如果没有看到id_rsa.pub
文件,那么执行下面的命令。
ssh-keygen -t rsa -P ""
ssh-keygen
这个命令,可以在任意地方执行。执行的结果就是在~/.ssh/
目录下生成key
信息。命令执行完毕后,苏南大叔需要查看~/.ssh/id_rsa.pub
这个文件的内容。
cat ~/.ssh/id_rsa.pub
设置gitlab
的deploykey
deploy
的英文意思就是:部署
。本步骤的主要内容,就是设置gitlab
的deploykey
,就是部署的密钥
。
在上一步操作中,苏南大叔得到了id_rsa.pub
这个文件的内容。接下来,苏南大叔要使得deploykey
在gitlab
里面生效。
进入到gitlab
,找到对应的项目页,左侧菜单,settings
=>repository
=>Deploy Keys
。
title
可以随便写,内容Key
填写~/.ssh/id_rsa.pub
的正文。后面的Write access allowed
的写权限,是否支持,请自行选择。常理来说,不应该设置写权限
。
当同一个测试服务器,要免密码拉取两个以上的项目的话,那么需要设置的Deploy Keys
。需要到已有的Privately accessible deploy keys
里面,选择已有的Deploy key
,然后点击enable
按钮,即可在第一个tabEnabled deploy keys
里面,看到新生效的key
了。
上述这个操作的意思就是说:Enabled deploy keys
中的内容,是真正生效的key
。而Privately accessible deploy keys
里面,已经应用在其它项目上的key
,这些key
也是可以重复使用的。重复使用后,一个部署机的上的公钥,就可以拉取多个项目的内容了。
设置好deploykey
之后,就可以在代码分发服务器上,免密码拉取git
代码了。
设置代码分发服务器
这个代码分发服务器,就是第一步中,设置~/.ssh/
目录内容的服务器。然后回到被更新的机器,首次设置的话,需要执行git clone
,以后部署的时候,就单单git pull
即可。下面的是条实例命令:
注意:苏南大叔在这里,并不建议您clone
操作使用http
的地址,应该使用git@
类似的地址。下面的是命令行对比:
git clone http://gitlab/project/demo.git
git clone git@gitlab:project/demo.git
代码分发服务器的更新脚本
在代码分发服务器上,苏南大叔做了个.sh
的更新脚本。以后更新的时候,就敲一下这个.sh
命令的地址,就可以做到代码更新了。下面的脚本中,苏南大叔用到了一个rsync
的命令,这里就做个预览吧。具体的更多详细内容,可以参见苏南大叔的后续文章。
cd /your_local_git_folder/
git pull
rsync -vzrltog --exclude-from=/data/shell/nocp/data-site /data/webhome/data-site1/ syncuser@192.168.1.9::data-site --password-file=/root/rsync.password
rsync -vzrltog --exclude-from=/root/nocp.txt /root/data-site/ /website/data-site/
总结
本文的难点就在于获取和设置deploykey
,做到免密拉取两个以上的项目代码,这可能是个小坑。本文就讲述这么多经验文章了。欢迎大家关注苏南大叔的博客。谢谢。
更多gitlab
相关经验文章,请点击下面的链接查看。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
ssh-keygen -t rsa -P ""
为什么是 ""
而不填 email
有什么特别的原因吗。
没啥特别的...