在 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 伺服器,並在處理長時間執行的任務時保持工作效率。