Deployment

GitLab CI 無法連接到遠端伺服器

  • July 15, 2019

我有以下.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 user_name@xxx.xx.xxx.xxx "cd test && git clone git@gitlab-myweb.com:repo_group/repo.git"
 only:
   - master

這是在登錄時生成的$SSH_PRIVATE_KEY私鑰,我正在嘗試複製我的儲存庫。user_name``xxx.xx.xxx.xxx

執行時ci,我收到此錯誤:

user_name@xxx.xx.xxx.xxx: Permission denied (publickey).
ERROR: Job failed: exit code 1

我顯然搞砸了ssh,但我很困惑到底是我的問題。我鬆散地遵循指南。

你能幫我找出我的錯誤嗎?

原因是因為我沒有做兩件事:

  1. 將伺服器的公鑰添加到伺服器的授權密鑰中。在伺服器內部,只需執行以下程式碼即可完成:cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
  2. 我沒有將伺服器的公鑰添加到GitLab配置文件的公鑰中。這是通過複製內容cat ~/.ssh/id_rsa.pub並將其粘貼到https://yourgitlabwebsite.com/profile/keys

引用自:https://serverfault.com/questions/975355