Jenkins SSH shell在执行远程命令之前关闭

Jenkins SSH shell在执行远程命令之前关闭,jenkins,ssh,Jenkins,Ssh,我有一个Jenkins作业,在“执行shell”下有以下命令: 我希望Jenkins服务器通过SSH连接到远程服务器,然后在远程服务器上运行命令 相反,Jenkins连接到远程服务器,立即断开连接,然后在本地运行pwd命令,如输出中所示: Started by user Johanan Lieberman Building in workspace /var/lib/jenkins/jobs/Test Github build/workspace [workspace] $ /bin/sh -x

我有一个Jenkins作业,在“执行shell”下有以下命令:

我希望Jenkins服务器通过SSH连接到远程服务器,然后在远程服务器上运行命令

相反,Jenkins连接到远程服务器,立即断开连接,然后在本地运行
pwd
命令,如输出中所示:

Started by user Johanan Lieberman
Building in workspace /var/lib/jenkins/jobs/Test Github build/workspace
[workspace] $ /bin/sh -xe /tmp/hudson266272646442487328.sh
+ ssh jenkins@172.31.12.58
Pseudo-terminal will not be allocated because stdin is not a terminal.
+ pwd
/var/lib/jenkins/jobs/Test Github build/workspace
Finished: SUCCESS
Edit:知道为什么
ssh
命令之后的后续命令不是在ssh shell中运行,而是在本地运行吗?

我认为您可以使用ssh在从机上执行命令:

如果“源文件”字段是必填字段,则可能可以传输虚拟文件

更新:
另一个解决方案是使用。与其他插件相比,它可能是一个更好的解决方案:)

如果您不是以交互方式运行,SSH不会创建交互会话(因此您会看到“伪终端”错误消息),因此它与在交互终端中执行一系列命令并不完全相同

要通过SSH会话运行特定命令,请使用:

ssh jenkins@YOUR_IP 'uname -a'
远程命令必须作为ssh命令的单个参数正确引用。或将用于简单的多行脚本:

ssh jenkins@YOUR_IP <<EOF
pwd
uname -a
EOF

sshjenkins@YOUR_IP这是一个很好的解决方法,但是我想知道为什么我不能使用“executeshell”选项来完成这项工作。我知道它也应该这样工作。你看过这个插件吗?不,我的重点是理解为什么我不能打开SSH外壳,然后按照我在原始帖子中描述的方式在里面运行命令。我已经使用您的第一个插件成功运行了。好的,如果它与第一个插件一起运行,请不要忘记验证我的解决方案;)可能重复:谢谢@Dave,这就是我要找的解释。在远程shell命令末尾添加
EOF
会给我
-bash:line 2:EOF:command not found
。拆下这条线后,一切正常。
ssh jenkins@YOUR_IP <<EOF
pwd
uname -a
EOF