簡體   English   中英

如果從 docker 容器啟動 SSH 端口轉發斷開連接

[英]SSH port forwarding disconnecting if initiated from a docker container

我正在使用 ssh 從 docker 容器將端口轉發到遠程數據庫:

ssh -o "ServerAliveInterval 15” -o -f -N -q -L 8000:localhost:8080 root@6.10.125.60

這有效,我可以正常訪問數據庫。 我添加了ServerAliveInterval以便即使在客戶端空閑時連接也能保持活動狀態。 我意識到這在 docker 容器中不起作用,幾分鍾后連接丟失。

我在本地使用了完全相同的命令(不是來自 docker),它按預期工作,即沒有連接丟失。

所以我的解決方法是在本地進行端口轉發,然后使用主機名別名從 docker 訪問數據庫。

以上工作並解決了我的連接丟失問題。 我的問題是為什么會這樣? 為什么ServerAliveInterval從 docker 容器內部運行時似乎沒有效果?

您還需要另一個選項ServerAliveCountMax

ServerAliveCountMax

設置可以在 ssh(1) 未從服務器接收任何消息的情況下發送的服務器活動消息的數量(見下文)。 如果在發送服務器活動消息時達到此閾值,ssh 將斷開與服務器的連接,終止 session。 需要注意的是,服務器存活消息的使用與 TCPKeepAlive 非常不同(如下)。 服務器活動消息是通過加密通道發送的,因此不會被欺騙。 TCPKeepAlive 啟用的 TCP keepalive 選項是可欺騙的。 當客戶端或服務器依賴於知道連接何時變得無響應時,服務器活動機制很有價值。

默認值為 3。例如,如果 ServerAliveInterval(見下文)設置為 15 並且 ServerAliveCountMax 保留默認值,如果服務器無響應,ssh 將在大約 45 秒后斷開連接。

http://man.openbsd.org/ssh_config#ServerAliveCountMax

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM