Ssh

jenkins cli build via ssh 在 10 分鐘後斷開連接

  • January 29, 2019

我有兩個詹金斯實例。我希望第一個實例的作業在第二個實例呼叫作業,等到它結束並執行一些操作(使用作業@ 2nd 產生的工件)

我想出了這個解決方案 - 通過 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 <...>

此選項的文件說

ServerAliveInterval

以秒為單位設置超時間隔,如果沒有從伺服器接收到數據,ssh(1) 將通過加密通道發送消息以請求伺服器響應。預設為0,表示這些消息不會發送到伺服器。此選項僅適用於協議版本 2。

這有效,但僅當伺服器在每 10 分鐘內至少安靜 30 秒時才有效。當然,我可以使用 1 秒而不是 30 秒,但它不適用於具有連續控制台輸出的作業(例如 maven 建構)。

即使對於繁重的控制台輸出作業,是否有保持連接活躍的解決方案?

將此添加到 Jenkins 啟動以禁用 SSHD 超時:

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

另見https://medium.com/@aloui.rda/jenkins-cli-ssh-timeout-38386c943c22

你應該看看screenor tmux。在遠端主機上安裝其中一個並在該會話中啟動您的命令。ssh-t分配的選項tty,所以你應該做這樣的事情screen

$ ssh -t user@host screen 'your_command'

引用自:https://serverfault.com/questions/795975