Gitlab CI/CD:使用 ssh 密钥部署到 ubuntu 服务器(使用 windows shell runner)

Gitlab CI/CD: Deploy to ubuntu server using ssh keys (using a windows shell runner)

大家好,我需要你的帮助,我正在使用 gitlab ci/cd 并尝试将我的 .jar 应用程序部署到 ubuntu 服务器,我使用 [=39] 配置了我的 gitlab 项目=] 亚军与 shell 执行者。我在跑步者上配置了基于密钥的访问,以避免提示输入密码;

当我登录到跑步机并使用它的电源时,以下命令成功运行shell:

scp -i C:\Users\Administrators\ssh\id_rsa  myapp-0.0.1-SNAPSHOT.jar username@myubuntuserver:/

但是当我在我的 .yml 文件中使用上述命令复制服务器上的 .jar 时,它不会给出任何响应,直到作业因超时而失败

我也通过在我的项目上设置一个 SSH_PRIVATE_KEY 变量尝试了此处 https://docs.gitlab.com/ee/ci/ssh_keys/ 提出的解决方案,但我无法使给定的 'before_script' 适应我的 windows亚军。

这是文档中提出的before_script(在link之上):

 before_script: 
  - 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )' 
  - eval $(ssh-agent -s) 
  - echo "$SSH_PRIVATE_KEY" | tr -d '\r' | ssh-add - 
  - mkdir -p ~/.ssh
  - chmod 700 ~/.ssh

当之前的 scp 命令被替换为:

ssh -iv C:\Users\Administrators\ssh\id_rsa username@myubuntuserver

我得到以下输出: the image

提前致谢

完成以下步骤后即可使用:

1) 在 ubuntu 18.04

上配置 运行ner(shell 执行器)

2) 然后从终端登录为 gitlab-运行ner 用户:sudo su - gitlab-runner

3) 运行 ssh-keygen -t rsa

4) 运行 ssh -i ~/.ssh/id_rsa username@myubuntuserver:

5) 运行 cat ~/.ssh/id_rsa.pub | ssh username@myubuntuserver "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

5) 现在您可以将以下内容添加到您的作业脚本(yml 文件)中,它应该可以工作:

   - scp -i ~/.ssh/id_rsa fileToCopy username@myubuntuserver:/mydirectory
     #you can execute multiple commands at a time, for ex: 
   - ssh username@myubuntuserver " mv /mydirectory/myapp-0.0.1-SNAPSHOT.jar /mydirectory/myapp.jar "

希望对您有所帮助

如果 ssh -iv C:\Users\Administrators\ssh\id_rsa username@myubuntuserver 不起作用,那可能是因为 C: 部分将 ssh 混淆为认为 C 是服务器的名称!

类 Unix 路径可行:

ssh -iv /C/Users/Administrators/ssh/id_rsa username@myubuntuserver

但是,作为 OP Medmahmoud ,这假定 public 密钥已在服务器上发布:

Configure the runner on ubuntu18.04.
Then from the terminal login as the gitlab-runner user:

sudo su - gitlab-runner - run ssh-keygen -t rsa 
  ssh -i ~/.ssh/id_rsa username@myubuntuserver
  cat ~/.ssh/id_rsa.pub | ssh username@myubuntuserver \
      "mkdir -p ~/.ssh && touch ~/.ssh/authorized_keys && chmod -R go= ~/.ssh && cat >> ~/.ssh/authorized_keys"

Now from your yml file the following should work:

- scp -i ~/.ssh/id_rsa pom.xml username@myubuntuserver:/mydirectory