
我有一個運行 openssh 的 Linux 伺服器。我可以從本地 LAN 和遠端連接到它。但是,有一個客戶端(Windows 10 筆記型電腦)只能在本機連線。當我嘗試遠端連線時,身份驗證被接受,但筆記型電腦上的 ssh 用戶端掛起,必須使用 Process Explorer 終止。我想問題可能是:
- Windows 防火牆 - 不。關掉它,得到同樣的行為。
- ssh 用戶端 (cygwin) - 不。使用膩子也有同樣的行為。
- Windows 10 - 否。我可以從另一台Win10機器成功遠端連線。
我已經嘗試了 cygwin 和 putty 的全新安裝。
我嘗試使用多個 -v 選項運行 ssh,並將輸出與能夠連接的其他 Win10 電腦進行比較。在某種程度上,輸出是相同的:
Authenticated to <<IP REMOVED>>.
debug2: fd 5 setting O_NONBLOCK
debug2: fd 6 setting O_NONBLOCK
debug1: channel 0: new [client-session]
debug3: ssh_session2_open: channel_new: 0
debug2: channel 0: send open
debug3: send packet: type 90
debug1: Requesting [email protected]
debug3: send packet: type 80
debug1: Entering interactive session.
debug1: pledge: network
debug3: receive packet: type 91
debug2: channel_input_open_confirmation: channel 0: callback start
debug2: fd 3 setting TCP_NODELAY
debug3: ssh_packet_set_tos: set IP_TOS 0x10
debug2: client_session2_setup: id 0
debug2: channel 0: request pty-req confirm 1
debug3: send packet: type 98
debug2: channel 0: request shell confirm 1
debug3: send packet: type 98
debug2: channel_input_open_confirmation: channel 0: callback done
debug2: channel 0: open confirm rwindow 0 rmax 32768
>>> "bad" machine hangs here
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: PTY allocation request accepted on channel 0
debug2: channel 0: rcvd adjust 2097152
debug3: receive packet: type 99
debug2: channel_input_status_confirm: type 99 id 0
debug2: shell request accepted on channel 0
Welcome to Linux Mint 17.3 Rosa (GNU/Linux 3.19.0-32-generic x86_64)
Welcome to Linux Mint
在極少數情況下,它會進一步發展 - 一次或兩次甚至到歡迎訊息 - 但連接永遠不會回應鍵入輸入。
我嘗試在伺服器上手動運行 sshd -d ,並比較“壞”遠端會話和來自另一個客戶端的“好”遠端會話之間的輸出。輸出是相同的。
總結一下:它似乎不是Windows防火牆,或是客戶端軟體,或Win10,或連接埠轉送到伺服器,或DNS,或是伺服器本身。問題僅出現在這台用戶端電腦上,並且僅在從本機 LAN 外部連線時出現。正在驗證成功。並且客戶端電腦與另一台沒有問題的電腦運行相同的 OS/ssh 用戶端,而且我在日誌中也看不到任何可以區分它的內容。
編輯:我還應該提到,與其他遠端伺服器的 ssh 連接在所有電腦上都可以正常工作。它似乎只是這個伺服器/客戶端對,並且僅在遠端連接時。
更新:請參閱下面我的評論以獲取更多資訊 - 該問題似乎特定於本地網路。
我可以採取哪些進一步步驟來調試它?
答案1
在我看來,當它掛起時,來自伺服器的 TCP 封包停止到達客戶端。我認為這是因為它有時會在不同的點掛起,並且問題會因網路配置的更改而有所不同。例如,它可能是連接埠轉送、NAT 和/或防火牆之間的一些不必要的互動。但問題是如何診斷為什麼這種情況發生在一個客戶端而不是另一個客戶端。我能想到的兩種方法:
你可以嘗試資料包監控在伺服器和用戶端以及沿途的各個點上檢查資料包是否確實遺失以及在什麼位置遺失。
您可以嘗試找出網路設定與不同客戶端是否有問題之間的關係。在工作用戶端和非工作用戶端之間交換全部或部分網路設定和 IP 位址,看看是否可以解決問題。