我有以下.gitlab-ci.yml
文件,旨在通过将我的主 GitLab 存储库克隆到test
特定服务器上的目录来部署它。
image: ubuntu:latest
before_script:
- apt-get install -y
- apt-get update -y
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y && apt-get install git -y )'
- eval $(ssh-agent -s)
- echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - > /dev/null ## /dev/null = trou noir
- mkdir -p ~/.ssh
- chmod 700 ~/.ssh
- ssh-keyscan charrier.alwaysdata.net >> ~/.ssh/known_hosts
- chmod 644 ~/.ssh/known_hosts
- '[[ -f /.dockerenv ]] && echo -e "Host *\n\tStrictHostKeyChecking no\n\n" > ~/.ssh/config'
deploy:
script:
- ssh -o StrictHostKeyChecking=no -vT [email protected] "cd test && git clone [email protected]:repo_group/repo.git"
only:
- master
这$SSH_PRIVATE_KEY
是登录时生成的私钥,如user_name
在中xxx.xx.xxx.xxx
,我正尝试克隆我的 repo。
运行时ci
,出现此错误:
[email protected]: Permission denied (publickey).
ERROR: Job failed: exit code 1
我显然搞砸了ssh
,但我很困惑我的问题到底是什么。我松散地遵循这指导。
你能帮我找出我的错误吗?
答案1
原因是我没有做两件事:
- 将服务器的公钥添加到服务器的授权密钥中。在服务器内部,只需运行此行即可完成此操作:
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
- 我没有将服务器的公钥添加到
GitLab
配置文件的公钥中。这是通过复制内容cat ~/.ssh/id_rsa.pub
并粘贴到https://yourgitlabwebsite.com/profile/keys