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
大家好,我需要你的帮助,我正在使用 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
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