手机看片精品高清国产日韩,色先锋资源综合网,国产哺乳奶水91在线播放,乱伦小说亚洲色图欧洲电影

如何保持 SSH 會話不中斷?

2023-11-06 16:52:50 7388

如何保持 SSH 會話不中斷?

使用終端(XShell、secureCRT 或 MobaXterm 等)登錄 Linux 服務(wù)器之后如果有一段時(shí)間沒有進(jìn)行交互,SSH 會話就會斷開

image.png

如果正在執(zhí)行一些非后臺命令,SSH 會話斷開就可能會使得這些命令可能會被中斷,導(dǎo)致任務(wù)無法完成

那如何保持 SSH 會話不中斷呢?我們來看一下

為什么 SSH 會關(guān)閉連接?

簡短的回答是,這一切都?xì)w結(jié)為 TCP 超時(shí)。

TCP 超時(shí)時(shí)間是指 TCP 連接或網(wǎng)絡(luò)操作在認(rèn)為進(jìn)程失敗之前等待響應(yīng)的時(shí)間

在 Linux 中,TCP 超時(shí)時(shí)間設(shè)置確定了 TCP 連接或操作在丟包或者連接無響應(yīng)前應(yīng)該等待多長時(shí)間

TCP 超時(shí)機(jī)制確保了網(wǎng)絡(luò)通信的可靠性和效率

在保持 SSH 會話的情況下,有三個(gè)關(guān)鍵的系統(tǒng)參數(shù)我們需要注意:

  • tcp_keepalive_time:在空閑 TCP 連接上發(fā)送 TCP keepalive 探針的間隔時(shí)間,即使在沒有實(shí)際數(shù)據(jù)傳輸?shù)那闆r下。TCP      keepalive 探針用于檢測遠(yuǎn)程主機(jī)是否仍然存活和響應(yīng)

  • tcp_keepalive_probes:TCP keepalive 探針,由 TCP 端發(fā)送的數(shù)據(jù)包,用于檢查空閑連接中遠(yuǎn)端的運(yùn)行狀況和響應(yīng)性。有助于檢測遠(yuǎn)程主機(jī)是否變得不可訪問,或者連接是否由于網(wǎng)絡(luò)問題而丟失

  • tcp_keepalive_intvl:控制發(fā)送空閑 TCP 連接的 keepalive 探針的時(shí)間間隔

我們可以通過下面的命令來查看上面三個(gè)參數(shù)的值:

[root@localhost ~]# cat /proc/sys/net/ipv4/tcp_keepalive_time
600

[root@localhost ~]
# cat /proc/sys/net/ipv4/tcp_keepalive_probes
9

[root@localhost ~]
# cat /proc/sys/net/ipv4/tcp_keepalive_intvl
75

tcp_keepalive_time 為 600 表示保持 TCP 連接時(shí)間為 600s 或 10 分鐘,但是這并不意味著我們的 SSH 會話就真的會保持 10 分鐘

因?yàn)?tcp_keepalive_probes 為 9 和 tcp_keepalive_intvl 為 75 表示系統(tǒng)會每隔 75s 發(fā)送 9 個(gè)探測包(總計(jì) 675 s),之后會話將會被視為失敗然后關(guān)閉

也就是說,在 675s 后,SSH 會話將在不活動(dòng)時(shí)終止,即沒有在終端中輸入內(nèi)容

如何保持 SSH 會話

保持 SSH 會話是一個(gè)涉及 client 和 server 配置的過程

Linux client 配置

對于 Linux client ,我們在家目錄下修改 ~/.ssh/config 文件(如果沒有就創(chuàng)建)

vim  ~/.ssh/config

下面是配置

Host *
ServerAliveInterval
120
ServerAliveCountMax
30

  • Host:配置僅對 “Host” 關(guān)鍵字后面列出的主機(jī)生效。由于使用了通配符      (*),因此它們適用于所有主機(jī)

  • ServerAliveInterval:設(shè)置超時(shí)間隔(以秒為單位),如果沒有從 server 接收到數(shù)據(jù),SSH 將通過加密通道發(fā)送消息,請求 server 響應(yīng)。默認(rèn)值為 0,表示不會將這些消息發(fā)送到 server

  • ServerAliveCountMax:設(shè)置在 SSH 沒有收到任何消息的情況下向 server 發(fā)送keepalive 消息的數(shù)量。如果達(dá)到了該閾值,SSH 將斷開與 server 的連接,終止會話(默認(rèn)值為 3)

表示 client 每 120s 向 server 發(fā)送 keepalive 消息,一共發(fā)送 30 次,也就是 120 * 30 = 3600 s(一個(gè)小時(shí)),在這一個(gè)小時(shí)內(nèi) SSH 會話會一直保持

Windows client 配置

對于 Windows 而言,我們一般使用終端來訪問 server

以 secureCRT 為例

選項(xiàng)——>會話選項(xiàng)

image.png

然后點(diǎn)擊【終端】

image.png

Linux server 配置

上面介紹的是 client 端的配置,我們接下來介紹 server 端的配置

修改 /etc/ssh/sshd_config 文件

vim /etc/ssh/sshd_config
TCPKeepAlive
yes
ClientAliveInterval
120
ClientAliveCountMax
30

  • TCPKeepAlive:是否應(yīng)該向 client 發(fā)送 TCP keepalive 信息

  • ClientAliveInterval:設(shè)置超時(shí)間隔(以秒為單位),如果沒有從 client 接收到數(shù)據(jù),SSH 將通過加密通道發(fā)送消息,請求 client 響應(yīng)。默認(rèn)值為 0,表示不會將這些消息發(fā)送到 client

  • ClientAliveCountMax:設(shè)置在 SSH 沒有收到任何消息的情況下向 client 發(fā)送keepalive 消息的數(shù)量。如果達(dá)到了該閾值,SSH 將斷開與 client 的連接,終止會話(默認(rèn)值為 3)

與前面講到的 Linux client 配置一樣,server 將保持 SSH 會話一個(gè)小時(shí)(120 * 30 = 3600s)

配置之后重啟 SSH 服務(wù)

systemctl restart sshd

 


提交成功!非常感謝您的反饋,我們會繼續(xù)努力做到更好!

這條文檔是否有幫助解決問題?

非常抱歉未能幫助到您。為了給您提供更好的服務(wù),我們很需要您進(jìn)一步的反饋信息:

在文檔使用中是否遇到以下問題: