如何在斷開連接后保持遠(yuǎn)程 SSH 會(huì)話運(yùn)行
SSH(Secure Shell)是端到端的加密網(wǎng)絡(luò)系統(tǒng),允許用戶從客戶端遠(yuǎn)程訪問服務(wù)器。但有時(shí)由于不活動(dòng)或網(wǎng)絡(luò)信號(hào)不佳,SSH遠(yuǎn)程訪問可能會(huì)斷開連接。不管是什么原因,作為 Linux 管理員,在斷開連接后保持 SSH 會(huì)話和進(jìn)程運(yùn)行是一項(xiàng)至關(guān)重要的工作。本文討論斷開連接后如何保持 SSH 會(huì)話運(yùn)行。
1. screen
該screen命令是 SSH 管理最常用和最有用的命令。
對(duì)于 Ubuntu:
$ sudo apt install screen
對(duì)于 OpenSUSE:
$ sudo zypper install screen
對(duì)于 Arch Linux:
$ sudo pacman -S screen
對(duì)于紅帽企業(yè) Linux:
$ sudo yum install screen
獲得訪問權(quán)限后,通過 SSH 連接到服務(wù)器。如果您計(jì)劃在您的工作站進(jìn)行長(zhǎng)時(shí)間的夜間工作,但又不想讓您的 SSH 客戶端停機(jī),您可以使用該screen命令。這可以分離您的屏幕會(huì)話。
要分離屏幕按Ctrl-A,然后Ctrl-D從鍵盤上分離。您可以隨時(shí)從終端登錄以監(jiān)控工作進(jìn)度。要使用會(huì)話重新連接或連接現(xiàn)有會(huì)話,請(qǐng)使用以下命令:
$ screen -r
screen -D -r
2. tmux
tmux或終端多路復(fù)用器是程序員和系統(tǒng)管理員非常流行且有用的工具,它允許用戶在同一終端中的程序之間切換。保持 SSH 會(huì)話在后臺(tái)運(yùn)行tmux是一個(gè)非常快速的解決方案。它可以分離和重新附加進(jìn)程在后臺(tái)運(yùn)行的應(yīng)用程序。
對(duì)于 Arch Linux:
$ sudo pacman -S tmux
對(duì)于紅帽企業(yè) Linux:
$ sudo yum install tmux
對(duì)于 Ubuntu:
$ sudo apt-get install tmux
對(duì)于 OpenSUSE:
$ sudo zypper install tmux
安裝后tmux,啟動(dòng)tmux session使用終端命令。安裝不會(huì)花費(fèi)太多時(shí)間。完成安裝后,您現(xiàn)在可以開始使用tmux。要開始tmux,只需在終端中輸入 tmux:
$ tmux
如果您需要運(yùn)行多個(gè)終端多路復(fù)用器以保持所有 SSH 會(huì)話在后臺(tái)運(yùn)行,在這種情況下,您可能會(huì)發(fā)現(xiàn)tmux在tmux. 以下是從一種形式切換到另一種形式的命令行:
$ tmux detach
$ tmux attach
$ tmux attach -t 2
要檢查所有tmux屏幕,請(qǐng)使用 tmuxlist命令:
$ tmux ls
3. byobu
byobu工具主要用于 Linux 上的遠(yuǎn)程 SSH 管理和屏幕監(jiān)控。它是一個(gè)開源軟件,可以與tmux或screen工具一起使用。byobu您可以使用該工具查看當(dāng)前狀態(tài)、通知和消息。雖然byobu默認(rèn)情況下隨 Ubuntu 一起安裝。但如果沒有,您可以將其安裝在您的 Linux 機(jī)器中。byobu通過檢查其他版本的 byobu 來檢查您的系統(tǒng)中是否已安裝:
$ tmux ls
然后啟用 byobu,這將有助于在斷開連接后保持 SSH 會(huì)話在后臺(tái)運(yùn)行:
$ byobu-enable$ byobu-啟用
對(duì)于 Ubuntu:
$ sudo apt install byobu
對(duì)于 OpenSUSE:
$ sudo zypper addrepo https://download.opensuse.org/repositories/utilities/openSUSE_Leap_42.3/utilities.repo
$ sudo zypper refresh
$ sudo zypper install byobu
對(duì)于 Arch Linux:
$ yaourt -S byobu
$ packer -S byobu
對(duì)于紅帽企業(yè) Linux:
$ sudo yum install byobu
對(duì)于 Fedora:
$ sudo dnf install byobu
要開始使用byobu,只需在終端中輸入 byobu 并按 Enter:
$ byobu
現(xiàn)在,如果您使用tmux或screen,您可以在其中任何一個(gè)之間進(jìn)行選擇以進(jìn)行后端協(xié)作:
$ byobu-select-backend
現(xiàn)在,您可以使用系統(tǒng)鍵盤功能鍵,在斷開連接后管理和保持您的 SSH 會(huì)話在后臺(tái)運(yùn)行。要斷開 SSH 會(huì)話,請(qǐng)按F6鍵。。要分離 SSH 會(huì)話并仍保持連接,請(qǐng)按SHIFT+F6。要僅保持當(dāng)前屏幕會(huì)話處于活動(dòng)狀態(tài)并關(guān)閉所有其他窗口,請(qǐng)按ALT+F6。
4. nohup
nohupor no hangup 命令是screen或 tmux 的一個(gè)非常有用的替代工具。它還允許用戶在斷開連接后保持 SSH 會(huì)話運(yùn)行。該命令通過避免信號(hào)掛起 (SIGHUP)nohup來告訴系統(tǒng)在后臺(tái)運(yùn)行所有進(jìn)程。
要檢查nohupLinux 終端的手冊(cè)和選項(xiàng),請(qǐng)?jiān)诮K端中鍵入以下命令并按 Enter:
$ nohup options
要檢查當(dāng)前活動(dòng)的作業(yè)列表,請(qǐng)使用-l終端中的命令:
$ jobs -l
現(xiàn)在對(duì)于 SSH 連接,為避免連接丟失并在斷開連接后保持會(huì)話運(yùn)行,請(qǐng)使用 nohup 命令行。您還可以使用 cat 命令和 nohup 命令在文本文件中獲取作業(yè)的輸出列表:
$ n$ nohup ./hello.sh
$ cat nohup.out.out
5. disown
如果您沒有系統(tǒng) root 權(quán)限,也許這個(gè)可以解決您的問題。該disown命令可以使任何任務(wù)從正在運(yùn)行的系統(tǒng)日志中不列出。因此,它可以隱藏正在進(jìn)行的進(jìn)程以避免所有自動(dòng)注銷錯(cuò)誤或信號(hào)掛斷(SIGHUP)。實(shí)際上,您可以使用 diswon 進(jìn)程管理命令通過隱藏任務(wù)來保持 SSH 會(huì)話運(yùn)行。
要從任務(wù)管理器中刪除或隱藏您的任務(wù),請(qǐng)?jiān)诮K端中使用 diswon 命令:
$ disown <task>
要檢查任務(wù)的當(dāng)前狀態(tài),請(qǐng)使用當(dāng)前 shell 命令:
$ current shell
您還可以在單行終端命令中設(shè)置任務(wù)列表:
$ disown jobs1
$ disown jobs1 jobs2 jobsn
要檢查任務(wù)列表,請(qǐng)使用-l命令:
$ jobs -l
要從窗口中刪除所有當(dāng)前作業(yè),請(qǐng)鍵入-adisown的語法:
$ disown -a
要從窗口中僅刪除一個(gè)或正在運(yùn)行的作業(yè),請(qǐng)使用-rdiswon 的語法:
$ disown -r
對(duì)于 SSH,要在會(huì)話連接后在后臺(tái)運(yùn)行作業(yè),請(qǐng)使用-h語法。即使在斷開連接后,此過程也可以使您的 SSH 會(huì)話保持運(yùn)行:
$ disown -h jobID
$ disown -h %2
小結(jié)
對(duì)于系統(tǒng)管理員來說,保持 SSH 會(huì)話和進(jìn)程運(yùn)行是滿足客戶端和完成任務(wù)的關(guān)鍵工作。斷開連接和頻繁丟失會(huì)話非常煩人和煩人。因此在本文中,討論了 SSH 會(huì)話斷開連接的可能原因,并描述了在斷開連接后如何保持 SSH 會(huì)話運(yùn)行的所有可能方法。