通过 ssh 构建的 jenkins cli 在 10 分钟后断开连接

通过 ssh 构建的 jenkins cli 在 10 分钟后断开连接

我有两个 jenkins 实例。我希望第一个实例上的作业调用第二个实例上的作业,等到它结束并执行一些操作(使用第二个作业生成的工件)

我想到了一个解决方案——通过 SSH 使用 Jenkins CLI 命令

ssh -p 2222 second-jenkins build second-job -s -v <further options>

但此会话在 10 分钟后断开并显示以下消息:

收到来自 192.168.147.102 的断开连接:2:用户空闲状态在 600000 毫秒后超时。

成立ssh 客户端选项已命名ServerAliveInterval

ssh -o ServerAliveInterval=30 -p 2222 second-jenkins build second-job -s -v <...>

此选项的文档说明

服务器存活间隔

设置超时间隔(以秒为单位),在此间隔之后如果没有从服务器收到数据,ssh(1) 将通过加密通道发送消息以请求服务器响应。默认值为 0,表示这些消息不会发送到服务器。此选项仅适用于协议版本 2。

这有效,但前提是服务器每 10 分钟内至少安静 30 秒。当然我可以使用 1 秒而不是 30 秒,但对于具有连续控制台输出的作业(例如 maven 构建),它不起作用。

有没有解决方案可以让繁重的控制台输出作业也能保持连接?

答案1

将其添加到 Jenkins 启动中以禁用 SSHD 超时:

-Dorg.jenkinsci.main.modules.sshd.SSHD.idle-timeout=0

也可以看看https://blog.redaalaoui.me/blog/jenkins-cli-ssh-timeout/

答案2

您应该查看screentmux。在远程主机上安装其中一个并在该会话内启动您的命令。ssh-t分配的选项tty,因此您应该对执行如下操作screen

$ ssh -t user@host screen 'your_command'

相关内容