做外貿(mào)要建什么網(wǎng)站百度收錄批量查詢
在遠(yuǎn)程服務(wù)器管理和安全數(shù)據(jù)傳輸中,SSH(Secure Shell)是不可或缺的工具。然而,它的便利性和安全性有時(shí)會(huì)因常見的問題而受到損害:凍結(jié) SSH 會(huì)話。
此外,session
的突然中斷可能會(huì)導(dǎo)致工作丟失、項(xiàng)目延遲和無助感。但不用擔(dān)心,因?yàn)榻鉀Q方案就在眼前。這份綜合指南[1]揭示了維持活躍且響應(yīng)迅速的 SSH 連接的秘密,確保無縫體驗(yàn),避免凍結(jié)問題。
因此,告別沮喪,迎接高效、不間斷的 SSH 會(huì)話。但在我們繼續(xù)之前,讓我們回答一個(gè)重要的問題。
為什么 SSH 會(huì)關(guān)閉連接?
簡而言之,這一切都?xì)w結(jié)于 TCP 超時(shí)。 TCP 超時(shí)是指 TCP 連接或網(wǎng)絡(luò)操作在認(rèn)為進(jìn)程失敗之前等待響應(yīng)的持續(xù)時(shí)間。在 Linux 中,TCP 超時(shí)設(shè)置確定 TCP 連接或操作在假設(shè)數(shù)據(jù)包丟失或連接無響應(yīng)之前應(yīng)等待多長時(shí)間。這種機(jī)制對(duì)于確保網(wǎng)絡(luò)通信的可靠和高效至關(guān)重要。在保持 SSH 連接處于活動(dòng)狀態(tài)的情況下,我們將在下面簡要討論三個(gè)關(guān)鍵系統(tǒng)參數(shù)。
-
tcp_keepalive_time:確定在空閑 TCP 連接上發(fā)送 TCP keepalive 探測之間的時(shí)間間隔。即使沒有傳輸數(shù)據(jù),Keepalive 探針也會(huì)檢查遠(yuǎn)程對(duì)等點(diǎn)是否仍處于活動(dòng)狀態(tài)并有響應(yīng)。 -
tcp_keepalive_probes:由 TCP 端點(diǎn)發(fā)送的小數(shù)據(jù)包,用于檢查空閑連接中遠(yuǎn)程端點(diǎn)的運(yùn)行狀況和響應(yīng)能力。它檢測遠(yuǎn)程端點(diǎn)是否無法訪問或連接是否由于網(wǎng)絡(luò)問題而丟失。 -
tcp_keepalive_intvl:控制在空閑 TCP 連接上發(fā)送 keepalive 探測的時(shí)間間隔。
每個(gè)值以秒為單位,可以使用以下命令輕松檢查。
cat?/proc/sys/net/ipv4/tcp_keepalive_time
cat?/proc/sys/net/ipv4/tcp_keepalive_probes
cat?/proc/sys/net/ipv4/tcp_keepalive_intvl

這是什么意思呢? Keepalive 時(shí)間為 7200 秒,即 120 分鐘(2 小時(shí))。然而,這并不意味著您的 SSH 會(huì)話將保持活動(dòng)狀態(tài) 2 小時(shí),因?yàn)橐韵聝蓚€(gè)參數(shù)至關(guān)重要。
系統(tǒng)默認(rèn)設(shè)置以 75 秒的間隔發(fā)送 9 個(gè)探測,總共 675 秒,之后會(huì)話被視為失敗并關(guān)閉。
換句話說,在超過 11 分鐘后,您的 SSH 會(huì)話將因不活動(dòng)而終止——即,如果您沒有在終端中輸入任何內(nèi)容。
當(dāng)然,您可以調(diào)整這些設(shè)置,但這不是正確的方法。 SSH 提供了保持會(huì)話活動(dòng)的機(jī)制,我們將在下面向您展示。
如何保持 SSH 會(huì)話處于活動(dòng)狀態(tài)
保持 SSH 會(huì)話處于活動(dòng)狀態(tài)是一個(gè)涉及客戶端和服務(wù)器端配置的過程。
Linux
在客戶端,您的 Linux 桌面系統(tǒng),在您的主目錄中創(chuàng)建一個(gè)文件(如果尚不存在)“~/.ssh/config”。
touch?~/.ssh/config
但是,如果“~/.ssh”目錄不存在,則必須創(chuàng)建它,然后設(shè)置適當(dāng)?shù)臋?quán)限。
mkdir?~/.ssh
chmod?700?~/.ssh
nano?~/.ssh/config
#?以下為寫入內(nèi)容
Host?*
ServerAliveInterval?120
ServerAliveCountMax?30
每個(gè)選項(xiàng)的含義如下:
-
Host:指定的配置僅適用于“Host”關(guān)鍵字后面列出的主機(jī)。因?yàn)槲覀兪褂昧送ㄅ浞?(*),所以它們適用于所有主機(jī)。 -
ServerAliveInterval:設(shè)置一個(gè)超時(shí)間隔(以秒為單位),在此之后,如果沒有從服務(wù)器收到數(shù)據(jù),SSH 將通過加密通道發(fā)送消息來請求服務(wù)器響應(yīng)。默認(rèn)為0,表示這些消息不會(huì)發(fā)送到服務(wù)器。 -
ServerAliveCountMax:設(shè)置 SSH 在沒有從服務(wù)器返回任何消息的情況下可以發(fā)送的服務(wù)器活動(dòng)消息的數(shù)量。如果在發(fā)送服務(wù)器活動(dòng)消息時(shí)達(dá)到此閾值,SSH 將與服務(wù)器斷開連接,從而終止會(huì)話。默認(rèn)值為 3。
也就是說,客戶端每隔120秒(2分鐘)就會(huì)向服務(wù)器發(fā)送一條keepalive消息,共發(fā)送30次。 120 * 30 = 3600 秒,即一小時(shí)。這是即使沒有活動(dòng),我們的 SSH 會(huì)話也將保持活動(dòng)狀態(tài)的總時(shí)間。
Windows
為了保持 SSH 會(huì)話處于活動(dòng)狀態(tài),使用 PuTTY 通過 SSH 進(jìn)行遠(yuǎn)程訪問的 Windows 用戶必須將“連接”選項(xiàng)卡中的“保持活動(dòng)間隔秒數(shù)”選項(xiàng)設(shè)置為大于零的值。
在下面的示例中,我們將此值設(shè)置為 60,這意味著 PuTTY 客戶端每分鐘都會(huì)向服務(wù)器發(fā)送一條 keepalive 消息,以保持 SSH 連接處于活動(dòng)狀態(tài)。

當(dāng)然,不要忘記保存對(duì) PuTTY 會(huì)話的更改(“類別”>“保存的會(huì)話”>“保存”)。
服務(wù)器端配置
更改服務(wù)器的超時(shí)選項(xiàng)會(huì)影響連接到服務(wù)器的所有客戶端。您需要編輯“/etc/ssh/sshd_config”文件來執(zhí)行此操作。
sudo?nano?/etc/ssh/sshd_config
然后設(shè)置以下三個(gè)選項(xiàng):
TCPKeepAlive?yes
ClientAliveInterval?120?
ClientAliveCountMax?30

這三個(gè)選項(xiàng)的含義如下:
-
TCPKeepAlive:指定系統(tǒng)是否應(yīng)向客戶端發(fā)送 TCP keepalive 消息。 -
ClientAliveInterval:設(shè)置一個(gè)超時(shí)間隔(以秒為單位),在此之后,如果沒有收到客戶端的數(shù)據(jù),SSH 服務(wù)器將通過加密通道發(fā)送消息以請求客戶端的響應(yīng)。默認(rèn)為0,表示這些消息不會(huì)發(fā)送到客戶端。 -
ClientAliveCountMax:設(shè)置在 SSH 服務(wù)器未收到客戶端返回的任何消息的情況下可以發(fā)送的客戶端活動(dòng)消息的數(shù)量。如果在發(fā)送客戶端活動(dòng)消息時(shí)達(dá)到此閾值,SSH 服務(wù)器將斷開客戶端連接,從而終止會(huì)話。默認(rèn)值為 3。
與上述客戶端配置的情況一樣,SSH 服務(wù)器將使連接保持一小時(shí)(120 * 30 = 3600 秒)。
最后,重新啟動(dòng) SSH 服務(wù)器:
sudo?systemctl?restart?ssh
總結(jié)
實(shí)現(xiàn) SSH 超時(shí)和保持活動(dòng)在增強(qiáng)安全性和確??煽窟B接之間實(shí)現(xiàn)了微妙的平衡。
SSH 超時(shí)和保活的好處顯而易見,它們可以自動(dòng)終止空閑會(huì)話,從而降低未經(jīng)授權(quán)的訪問和潛在攻擊的風(fēng)險(xiǎn),從而對(duì)網(wǎng)絡(luò)安全做出貢獻(xiàn)。
另一方面,過分地應(yīng)用超時(shí)和保活也會(huì)帶來缺點(diǎn)。過于激進(jìn)的設(shè)置可能會(huì)導(dǎo)致意外斷開連接,從而降低工作效率并給用戶帶來挫敗感。
因此,為了取得適當(dāng)?shù)钠胶?#xff0c;管理員必須仔細(xì)考慮他們的網(wǎng)絡(luò)基礎(chǔ)設(shè)施和用戶行為。這樣做可以為遠(yuǎn)程通信創(chuàng)建一個(gè)安全高效的環(huán)境,從而提高用戶滿意度和數(shù)據(jù)保護(hù)。
Reference
Source: https://linuxiac.com/how-to-keep-ssh-session-alive/
本文由 mdnice 多平臺(tái)發(fā)布