为什么 Gitlab CI 运行 在本地而不是在远程机器上命令?
Why Gitlab CI run commands locally and not on remote machine?
我听不懂。我在工作期间使用 ssh 成功登录到我的远程主机,我想确保我可以 运行 在此主机上执行命令。所以我有这样的工作:
Deliver image to host:
stage: deploy
before_script:
# Setup SSH deploy keys
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- echo "$PRIVATE_SSH" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 700 ~/.ssh/id_rsa
script:
- ssh -o StrictHostKeyChecking=no <user>@<ip>
- ls
并且 ls 给我 gitlab 运行ner 机器的输出:我看到我的存储库,而不是远程机器的项目。
为什么?我应该如何 运行 远程命令?
我认为你的问题出在这里:
- ssh -o StrictHostKeyChecking=no <user>@<ip>
- ls
gitlab上的第一个命令运行s ssh
运行ner。 ssh
此时不是交互式的(没有键盘连接到此处的 ssh
会话)。所以 ssh
退出。然后你 运行 ls
在 gitlab 运行ner 上,它给你奇怪的输出你感到惊讶。
您想通过提供额外的东西作为参数来告诉 ssh
命令您想让它做什么。所以尝试:
- ssh -o StrictHostKeyChecking=no <user>@<ip> ls
有关如何准确地向 ssh 调用提供命令和参数的更多信息,请参阅 How to execute a remote command over ssh with arguments? and How do I pass arbitrary arguments to a command executed over SSH? 等其他答案。
我听不懂。我在工作期间使用 ssh 成功登录到我的远程主机,我想确保我可以 运行 在此主机上执行命令。所以我有这样的工作:
Deliver image to host:
stage: deploy
before_script:
# Setup SSH deploy keys
- 'which ssh-agent || ( apt-get update -y && apt-get install openssh-client -y )'
- mkdir -p ~/.ssh
- echo "$PRIVATE_SSH" | tr -d '\r' > ~/.ssh/id_rsa
- chmod 700 ~/.ssh/id_rsa
script:
- ssh -o StrictHostKeyChecking=no <user>@<ip>
- ls
并且 ls 给我 gitlab 运行ner 机器的输出:我看到我的存储库,而不是远程机器的项目。
为什么?我应该如何 运行 远程命令?
我认为你的问题出在这里:
- ssh -o StrictHostKeyChecking=no <user>@<ip>
- ls
gitlab上的第一个命令运行s ssh
运行ner。 ssh
此时不是交互式的(没有键盘连接到此处的 ssh
会话)。所以 ssh
退出。然后你 运行 ls
在 gitlab 运行ner 上,它给你奇怪的输出你感到惊讶。
您想通过提供额外的东西作为参数来告诉 ssh
命令您想让它做什么。所以尝试:
- ssh -o StrictHostKeyChecking=no <user>@<ip> ls
有关如何准确地向 ssh 调用提供命令和参数的更多信息,请参阅 How to execute a remote command over ssh with arguments? and How do I pass arbitrary arguments to a command executed over SSH? 等其他答案。