前言
大家好,這里是浩道linux,主要給大家分享linux、python、網(wǎng)絡通信相關的IT知識平臺。
今天浩道跟大家分享運維工作中常常被大家忽略的SSH會話中斷背后的一些知識點!
相信大家在工作中常常遇到通過SSH連接到Linux服務器一段時間后會自動斷開了,但是這時候大家往往不去追究其中的原理,只是習慣性在CRT等連接工具中的會話窗口按下回車鍵再次連接了。本文就讓你看看這個斷開背后的原理,以及弄清楚其背后的原理后告訴你為什么不能設置永不斷開!
1. 概覽
有多少次,我們想要保持SSH會話一直處于連接狀態(tài),以保持應用程序運行,或者只是避免在返回我們使用的SSH窗口時感到沮喪。在本教程中,你將獲得如何通過防止SSH會話超時,直到你關閉終端窗口。
2. 為什么SSH會關閉連接?
我們?yōu)榱耸褂肧SH登錄到服務器上,目的服務器上的守護進程(sshd)一定是保持運行狀態(tài)。如果SSH客戶端一段時間沒有發(fā)送到目的服務器,服務器會在超過一段時間后關閉連接。
為了防止關閉SSH連接,我們可以在客戶端或者服務端進行配置。
3. 設置配置文件
有幾個配置文件可以修改,以保持SSH會話的連接,避免超時。要看是從客戶端配置還是服務端配置。
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)建成功,我們不會看到任何輸出信息。
$ mkdir $HOME/.ssh然后創(chuàng)建配置文件touch $HOME/.ssh/config。
$ touch $HOME/.ssh/config
一旦我們創(chuàng)建好配置文件,我們還需要使用chmod修改配置文件的權限,不能讓所有人都可以編輯這個配置文件。
$ chmod 600 $HOME/.ssh/config
現(xiàn)在我們可以任何編輯器來編輯這個配置文件了,比如nano或者vim,在終端使用vim $HOME/.ssh/config打開配置文件。
現(xiàn)在讓我們來添加一些配置信息到配置文件里面。在vim按i進入編輯模式,然后輸入下面的內容:
Host example Hostname example.com ServerAliveInterval 240
上面的配置信息,僅在SSH會議連接到example這個域的時候才會生效。
ServerAliveInterval設置了客戶端在發(fā)送保持連接信號之前的等待時間。
然后按ESC鍵,進入vim的命令模式,連續(xù)輸入:wq保存退出vim編輯器。
另外可以把example換成*來指定所有的域的配置
Host * ServerAliveInterval 240
我們可以使用上面同樣的步驟來編輯和保存配置文件。
3.2. 服務端配置文件
在某些情況下,我們可能可以訪問服務器上的配置文件。如果是這種情況,我們可以配置何時希望服務器關閉SSH連接。
在服務器上編輯配置文件的過程與客戶端配置文件類似,但有一些不同。
首先,服務器端配置文件的文件位置是/etc/ssh/sshd_config;
現(xiàn)在我們使用 vim 把ClientAliveInterval添加到配置文件,注意,這里是"Client"而不是"Server",跟上面客戶端的配置是不一樣的。
ClientAliveInterval 60
ClientAliveInterval是以秒為單位指定的超時間隔。如果服務器從客戶端接收數(shù)據(jù)的時間超過了超時間隔,則服務器將向客戶端發(fā)送請求響應的消息。
3.3. 為什么不設置為從不斷開連接?
雖然將SSH會話設置為永不斷開可能很誘人,但在某些情況下,我們更明智的做法是為SSH設置超時。
如果我們連接的服務器是我們自己維護的服務器,那么設置超時可能沒有充分的理由。然而,如果我們在AWS E3這樣的平臺上托管我們的服務器,如果我們不設置超時,代價可能會很高。許多云托管平臺使用服務器時每分鐘收費,即使我們不積極使用SSH會話,保持SSH會話持續(xù)運行也會增加成本。
要在客戶端上配置超時,我們可以在與上面相同的配置文件中使用ServerAliveCountMax配置項來設置嘗試的次數(shù):
Host * ServerAliveInterval 240 ServerAliveCountMax 2
客戶端繼續(xù)每240秒發(fā)送一次信號,客戶端現(xiàn)在還將偵聽來自服務器的信號。如果它兩次執(zhí)行ServerAliveInterval而沒有收到信號,它將關閉SSH會話。
同樣的,我們可以在服務器上做同樣的配置:
ClientAliveInterval 60 ClientAliveCountMax 2
注意,服務器上的配置沒有Host *的配置項
4. 結論
在本文中,我們學習了如何在客戶端和服務器端計算機上創(chuàng)建SSH設置的配置文件。然后,我們研究了哪些配置可以防止SSH會話超時。最后,總結一下我們不應該將SSH會話設置為永不斷開的一些原因。
審核編輯:湯梓紅
-
Linux
+關注
關注
87文章
11304瀏覽量
209499 -
計算機
+關注
關注
19文章
7494瀏覽量
87954 -
服務器
+關注
關注
12文章
9160瀏覽量
85421 -
SSH
+關注
關注
0文章
189瀏覽量
16337 -
python
+關注
關注
56文章
4797瀏覽量
84689
原文標題:【運維須知】為何SSH會話不能設置為永不斷開?
文章出處:【微信號:浩道linux,微信公眾號:浩道linux】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論