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



大家好,我需要你们的帮助,我正在使用 GitLab CI/CD 并尝试将我的 .jar 应用程序部署到 Ubuntu 服务器,我为我的 GitHubLab 项目配置了一个带有 shell 执行器的 Windows 运行器。 我在运行器上配置了基于密钥的访问权限,以避免被提示输入密码;

当我登录到运行器机器并使用它的PowerShell时,以下命令成功运行:

scp -i C:UsersAdministratorssshid_rsa  myapp-0.0.1-SNAPSHOT.jar username@myubuntuserver:/

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

我还尝试了这里提出的解决方案 https://docs.gitlab.com/ee/ci/ssh_keys/在我的项目中设置了一个SSH_PRIVATE_KEY变量,但我无法使给定的"before_script"适应我的 Windows 运行程序。

这是文档中提出的before_script(上面的链接(:

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:UsersAdministratorssshid_rsa username@myubuntuserver

我得到以下输出: 图像

提前致谢

执行以下步骤后,它可以工作:

1( 在 Ubuntu 18.04 上配置运行器(shell executor(

2(然后从终端登录为gitlab运行者用户: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:UsersAdministratorssshid_rsa username@myubuntuserver不起作用,那可能是因为C:部分,它将ssh混淆为认为C是服务器的名称!

类Unix路径将起作用:

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

但是,正如OP Medmahmoud评论的那样,这假设公钥已在服务器上发布:

在 ubuntu18.04 上配置运行器。
然后从终端登录为 gitlab-runner 用户:

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"

现在从您的 yml 文件中,以下内容应该可以工作:

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

最新更新