在 Linux 上保持 SSH 會話活動


介紹

安全外殼 (SSH) 是一種網路協議,允許兩個系統之間進行安全的遠端連線。它通常用於遠端訪問和管理 Linux 伺服器。但是,使用 SSH 的問題之一是,您的會話可能會因停機或網路中斷而終止。這可能會令人沮喪,尤其是在您正在處理需要不間斷連線的長時間執行的任務時。在本文中,我們將討論在 Linux 上保持 SSH 會話活動的不同方法。

使用 ClientAlive Interval 選項

防止 SSH 會話因閒置而關閉的一種方法是使用 **“ClientAliveInterval”** 選項。此選項以指定的間隔向伺服器傳送空資料包以保持連線活動。

要使用 ClientAliveInterval 選項,您需要編輯 SSH 伺服器配置檔案,通常位於“/etc/ssh/sshd_config”中。在文字編輯器中開啟該檔案並新增以下行:

ClientAliveInterval 60

這將每 **60** 秒向伺服器傳送一個空資料包以保持連線活動。可以將間隔設定為適合您需求的值。進行更改後,儲存檔案並重新啟動 SSH 伺服器以使更改生效。在大多數系統上,您可以使用以下命令執行此操作:

$ sudo systemctl restart ssh

您可以透過檢查位於“/var/log/auth.log”處的日誌檔案來驗證 **ClientAliveInterval** 開關是否正常工作。您應該會看到類似於以下內容的訊息:

Jan 4 2023 10:30:01 server sshd[29445]: Connection from 192.168.43.1 port 5676
Jan 4 2023 10:30:01 server sshd[29445]: ClientAliveInterval 60

使用 Nohup 命令

保持 SSH 會話活動狀態的另一種方法是使用 **nohup** 命令。**nohup** 命令允許您在後臺執行命令,即使您登出了 Keeping SSH session alive on Linuxv 系統後也是如此。如果您需要執行需要不間斷連線的長時間執行的任務,這將非常有用。

要使用 **nohup** 命令,只需在要執行的命令前加上“nohup”並將輸出重定向到檔案即可。例如:

$ nohup mycommand > mycommand.out 2> mycommand.err < /dev/null &

這將在後臺執行“mycommand”命令並將輸出重定向到“mycommand.out”和“mycommand.err”檔案。“< /dev/null”部分將 stdin(標準輸入)重定向到 /dev/null,允許命令在不等待輸入的情況下執行。“&” 結尾將命令置於後臺。

要檢查命令的狀態,可以使用“jobs”命令。這將顯示系統上正在執行的所有後臺程序的列表。

$ jobs
[1]+ Running nohup mycommand > mycommand.out 2> mycommand.err < /dev/null &

要將後臺作業調到前臺,可以使用 **“fg”** 命令,後跟作業編號。例如

$ fg %1

這將調出第一個後臺作業(在本例中為“mycommand”)。

使用 Screen 命令

保持 SSH 會話活動狀態的另一種方法是使用 **screen** 命令。screen 命令允許您建立可以獨立於主終端執行的虛擬終端會話。如果您需要同時執行多個任務或希望在登出系統後保持任務執行,這將非常有用。要使用 screen 命令,只需在終端提示符下鍵入“screen”並按 Enter 鍵即可。這將建立一個新的虛擬終端會話。然後,您可以在 screen 會話中執行任何所需的命令。

要登出 screen 會話,請使用鍵盤組合 **“Ctrl+a”**,然後按 **“d”** 鍵。這將帶您回到主終端,但 screen 會話將繼續在後臺執行。

要重新連線到 screen 會話,請使用 **“screen -r”** 命令。將顯示可用 screen 會話的列表,您可以選擇要重新連線的會話。

以下是一個示例,說明如何使用 screen 命令保持 SSH 會話活動狀態:

$ screen
[screen is now running]
$ <execute few commands>
[ctrl+a d]
[detached from screen]
$ screen -r
[screen session restored]

結論

在本文中,我們討論了在 Linux 上保持 SSH 會話活動狀態的幾種方法。使用 ClientAliveInterval 開關、nohup 命令或 screen 命令,您可以確保您的 SSH 會話保持活動狀態,並且您的任務可以不間斷地執行。有了這些工具,您可以輕鬆地遠端管理 Linux 伺服器,並在處理長時間執行的任務時保持工作效率。

更新於: 2023-01-17

15K+ 閱讀量

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告