1. 概覽
有多少次,我們想要保持SSH會話一直處于連接狀態(tài),以保持應(yīng)用程序運(yùn)行,或者只是避免在返回我們使用的SSH窗口時感到沮喪。在本教程中,你將獲得如何通過防止SSH會話超時,直到你關(guān)閉終端窗口。
2. 為什么SSH會關(guān)閉連接?
我們?yōu)榱耸褂肧SH登錄到服務(wù)器上,目的服務(wù)器上的守護(hù)進(jìn)程(sshd)一定是保持運(yùn)行狀態(tài)。如果SSH客戶端一段時間沒有發(fā)送到目的服務(wù)器,服務(wù)器會在超過一段時間后關(guān)閉連接。
為了防止關(guān)閉SSH連接,我們可以在客戶端或者服務(wù)端進(jìn)行配置。
3. 設(shè)置配置文件
有幾個配置文件可以修改,以保持SSH會話的連接,避免超時。要看是從客戶端配置還是服務(wù)端配置。
3.1 客戶端配置
客戶端文件位置
$HOME/.ssh/config
如果我們使用使用cat $HOME/.ssh/config
,可能會得到一個錯誤信息 “no file found”。
$ cat $HOME/.ssh/config
cat: /.ssh/config: No such file or directory
如果我們看到這個錯誤消息,意味著我們需要手動創(chuàng)建這個配置文件。如果.ssh
目錄不存在,首先創(chuàng)建.ssh
目錄,使用命令mkdir $HOME/.ssh
來創(chuàng)建目錄,如果提示目錄已經(jīng)存在,我們將會看到一個消息 “File exists”,請忽略即可;如果目錄創(chuàng)建成功,我們不會看到任何輸出信息。
$HOME/.ssh mkdir
然后創(chuàng)建配置文件touch $HOME/.ssh/config
。
$HOME/.ssh/config touch
一旦我們創(chuàng)建好配置文件,我們還需要使用chmod
修改配置文件的權(quán)限,不能讓所有人都可以編輯這個配置文件。
$HOME/.ssh/config chmod 600
現(xiàn)在我們可以任何編輯器來編輯這個配置文件了,比如nano
或者vim
,在終端使用vim $HOME/.ssh/config
打開配置文件。
現(xiàn)在讓我們來添加一些配置信息到配置文件里面。在vim
按i
進(jìn)入編輯模式,然后輸入下面的內(nèi)容:
Host example
Hostname example.com
ServerAliveInterval 240
上面的配置信息,僅在SSH會議連接到example這個域的時候才會生效。
ServerAliveInterval設(shè)置了客戶端在發(fā)送保持連接信號之前的等待時間。
然后按ESC
鍵,進(jìn)入vim的命令模式,連續(xù)輸入:wq
保存退出vim編輯器。
另外可以把example
換成*
來指定所有的域的配置
Host *
ServerAliveInterval 240
我們可以使用上面同樣的步驟來編輯和保存配置文件。
3.2. 服務(wù)端配置文件
在某些情況下,我們可能可以訪問服務(wù)器上的配置文件。如果是這種情況,我們可以配置何時希望服務(wù)器關(guān)閉SSH連接。
在服務(wù)器上編輯配置文件的過程與客戶端配置文件類似,但有一些不同。
首先,服務(wù)器端配置文件的文件位置是/etc/ssh/sshd_config
;
現(xiàn)在我們使用 vim 把ClientAliveInterval
添加到配置文件,注意,這里是"Client"
而不是"Server"
,跟上面客戶端的配置是不一樣的。
ClientAliveInterval 60
ClientAliveInterval
是以秒為單位指定的超時間隔。如果服務(wù)器從客戶端接收數(shù)據(jù)的時間超過了超時間隔,則服務(wù)器將向客戶端發(fā)送請求響應(yīng)的消息。
3.3. 為什么不設(shè)置為從不斷開連接?
雖然將SSH會話設(shè)置為永不斷開可能很誘人,但在某些情況下,我們更明智的做法是為SSH設(shè)置超時。
如果我們連接的服務(wù)器是我們自己維護(hù)的服務(wù)器,那么設(shè)置超時可能沒有充分的理由。然而,如果我們在AWS E3這樣的平臺上托管我們的服務(wù)器,如果我們不設(shè)置超時,代價(jià)可能會很高。許多云托管平臺使用服務(wù)器時每分鐘收費(fèi),即使我們不積極使用SSH會話,保持SSH會話持續(xù)運(yùn)行也會增加成本。
要在客戶端
上配置超時,我們可以在與上面相同的配置文件中使用ServerAliveCountMax配置項(xiàng)來設(shè)置嘗試的次數(shù):
Host *
ServerAliveInterval 240
ServerAliveCountMax 2
客戶端繼續(xù)每240秒發(fā)送一次信號,客戶端現(xiàn)在還將偵聽來自服務(wù)器的信號。如果它兩次執(zhí)行ServerAliveInterval而沒有收到信號,它將關(guān)閉SSH會話。
同樣的,我們可以在服務(wù)器上做同樣的配置:
ClientAliveInterval 60
ClientAliveCountMax 2
注意,服務(wù)器上的配置沒有Host *
的配置項(xiàng)
4. 結(jié)論
在本文中,我們學(xué)習(xí)了如何在客戶端和服務(wù)器端計(jì)算機(jī)上創(chuàng)建SSH設(shè)置的配置文件。然后,我們研究了哪些配置可以防止SSH會話超時。最后,總結(jié)一下我們不應(yīng)該將SSH會話設(shè)置為永不斷開的一些原因。
審核編輯 :李倩
-
服務(wù)器
+關(guān)注
關(guān)注
12文章
9253瀏覽量
85745 -
客戶端
+關(guān)注
關(guān)注
1文章
290瀏覽量
16726 -
SSH
+關(guān)注
關(guān)注
0文章
189瀏覽量
16363
原文標(biāo)題:保持SSH會話不掉線
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論