上次更新时间:2017-12-13•
GitLab当前不支持在构建环境(运行GitLab Runner的环境)中管理SSH密钥的内置支持。
SSH密钥在以下情况下很有用:
如果上述任何事情都响了,那么您很可能需要SSH密钥。
支持最广泛的方法是通过扩展.gitlab-ci.yml
,将SSH密钥注入到构建环境中,并且该解决方案可与任何类型的执行程序 (Docker,shell等)一起使用。
ssh-keygen
ssh-agent
期间作业以加载私钥。 ~/.ssh/authorized_keys
),或者 在访问私有GitLab存储库时将其添加为部署密钥。 注意: 除非您启用 调试日志 记录,否则私钥将不会显示在作业日志中 。您可能还需要检查 管道 的可见性。
当您的CI / CD作业在Docker容器中运行(意味着包含环境)并且您想要在私有服务器中部署代码时,您需要一种访问它的方法。这是SSH密钥对派上用场的地方。
而已!现在,您可以在构建环境中访问私有服务器或存储库。
如果您使用的是Shell执行程序而不是Docker,则设置SSH密钥会更加容易。
您可以从安装了GitLab Runner的计算机生成SSH密钥,并将该密钥用于在该计算机上运行的所有项目。
完成后,尝试登录到远程服务器以接受指纹:
ssh example.com
要访问GitLab.com上的存储库,可以使用git@gitlab.com
。
最好检查私有服务器自己的公用密钥,以确保您不会受到中间人攻击的攻击。万一发生任何可疑事件,您将注意到它,因为作业将失败(如果公钥不匹配,则SSH连接将失败)。
要查找服务器的主机密钥,请ssh-keyscan
从受信任的网络(最好从专用服务器本身)运行命令:
## Use the domain name
ssh-keyscan example.com
## Or use an IP
ssh-keyscan 1.2.3.4
创建一个新变量,将其 SSH_KNOWN_HOSTS
作为“键”,并作为“值”添加的输出ssh-keyscan
。
注意: 如果需要连接到多个服务器,则所有服务器主机密钥都需要收集在变量的 Value 中,每行一个密钥。
提示: 通过使用变量而不是 ssh-keyscan
直接在变量内部 .gitlab-ci.yml
,它具有以下优点: .gitlab-ci.yml
如果主机域名由于某些原因而更改,则不必更改。而且,这些值是由您预定义的,这意味着如果主机密钥突然更改,CI / CD作业将失败,并且您将知道服务器或网络出了点问题。
现在SSH_KNOWN_HOSTS
已经创建了变量,除了 上面的 内容.gitlab-ci.yml
之外,还需要添加以下内容:
before_script:
##
## Assuming you created the SSH_KNOWN_HOSTS variable, uncomment the
## following two lines.
##
- echo "$SSH_KNOWN_HOSTS" >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
##
## Alternatively, use ssh-keyscan to scan the keys of your private server.
## Replace example.com with your private server's domain name. Repeat that
## command if you have more than one server to connect to.
##
#- ssh-keyscan example.com >> ~/.ssh/known_hosts
#- chmod 644 ~/.ssh/known_hosts
##
## You can optionally disable host key checking. Be aware that by adding that
## you are susceptible to man-in-the-middle attacks.
## WARNING: Use this only with the Docker executor, if you use it with shell
## you will overwrite your user's SSH config.
##
#- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" >> ~/.ssh/config'
为了方便起见,我们建立了一个示例SSH项目,使用我们的公共 共享运行程序在GitLab.com上运行。
想要破解吗?只需对其进行分叉,提交并推送您的更改。稍后,公共跑步者将选择更改并开始工作。
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有