Ssh

奇怪的問題:對等點重置連接

  • September 12, 2021

我在執行 CentOS 的 linux 伺服器上使用 SSH 時遇到了一些問題。我可以使用 Windows cmd 中的 PuTTY 或 ssh 連接到我的伺服器。使用安全 FTP 也是如此。我可以連接到伺服器,獲取文件列表,一切正常。當我嘗試通過網路發送任意數量的數據時,就會出現問題。

每當我嘗試傳輸超出特定門檻值的任何內容時,連接都會失敗,並且我會看到“對等方重置連接”消息。我的主目錄中有一個大約 3 MB 的 sql 文件。如果我嘗試對它進行 FTP 傳輸,它將開始傳輸並在傳輸大約 48k 後終止。然後它將啟動一個新連接並傳輸另一個 48k。如果我使用 PuTTY 並打開一個會話,我可以正常連接和登錄。如果我再次嘗試cat file.sql,連接將終止,我會收到“對等連接重置”消息。從我的本地工作站到伺服器,情況相同。我有相當多的原始碼需要送出到託管在伺服器上的 svn 儲存庫,但是會出現相同的“由對等方重置連接”消息。

我知道問題出在我的本地工作站上,因為我可以毫無問題地使用我妻子的 macbook 和 ssh 連接到伺服器。我可以 ssh 進入朋友的 linux 機器(使用相同的 putty 安裝)並從他們的伺服器 sftp 到我的伺服器並下載文件,從他的機器打開另一個 ssh 會話到我的伺服器並 cat 文件。所以,有些事情正在發生,但我不確定是什麼。有沒有人有任何想法?

更新

我一直在嘗試解決這個問題,似乎我可以在單個 ssh 會話中傳輸的數據量存在硬性限制。如果我這樣做了,我會立即點擊它,cat file.sql但我也可以繼續輸入ls -l一致的次數,並且還會收到“對等方重置連接”消息。我試過了:

  • 生成新的 ssh 密鑰
  • 重新啟動我的路由器
  • 重新啟動我的電腦
  • 重新啟動遠端伺服器

我在遠端伺服器上寫了一個 tcpdump,但我對 TCP 的理解不夠詳細,以至於對我來說很有意義。我在 ssh 中打開了調試,這裡是導致連接被重置的日誌部分:

Jul 24 23:10:56 server sshd[4507]: debug1: permanently_set_uid: 500/503
Jul 24 23:10:56 server sshd[4507]: debug1: Entering interactive session for SSH2.
Jul 24 23:10:56 server sshd[4507]: debug1: server_init_dispatch_20
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_open: ctype session rchan 256 win 16384 max 16384
Jul 24 23:10:56 server sshd[4507]: debug1: input_session_request
Jul 24 23:10:56 server sshd[4507]: debug1: channel 0: new [server-session]
Jul 24 23:10:56 server sshd[4507]: debug1: session_new: init
Jul 24 23:10:56 server sshd[4507]: debug1: session_new: session 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_open: channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_open: session 0: link with channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_open: confirm session
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_req: channel 0 request pty-req reply 1
Jul 24 23:10:56 server sshd[4507]: debug1: session_by_channel: session 0 channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_input_channel_req: session 0 req pty-req
Jul 24 23:10:56 server sshd[4507]: debug1: Allocating pty.
Jul 24 23:10:56 server sshd[4505]: debug1: session_new: init
Jul 24 23:10:56 server sshd[4505]: debug1: session_new: session 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_pty_req: session 0 alloc /dev/pts/2
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_req: channel 0 request shell reply 1
Jul 24 23:10:56 server sshd[4507]: debug1: session_by_channel: session 0 channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_input_channel_req: session 0 req shell
Jul 24 23:10:56 server sshd[4508]: debug1: Setting controlling tty using TIOCSCTTY.
Jul 24 23:10:59 server sshd[4507]: Read error from remote host <my-ip>: Connection reset by peer
Jul 24 23:10:59 server sshd[4507]: debug1: do_cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: do_cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: deleting credentials
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: closing session
Jul 24 23:10:59 server sshd[4505]: pam_unix(sshd:session): session closed for user <me>
Jul 24 23:10:59 server sshd[4505]: debug1: session_pty_cleanup: session 0 release /dev/pts/2

更新 2:

大約一周前,我使用這個 wiki 文章修改了我的伺服器上的 ssh 設置:http ://wiki.centos.org/HowTos/Network/SecuringSSH

因為我偶爾需要從工作中訪問我的伺服器,並且我們的防火牆上打開了埠 21,所以我將 ssh 埠更改為 21。為了進一步診斷此問題,我嘗試恢復我的 ssh 設置並將 ssh 埠更改回 22 . 低,看,當我使用埠 22 時,我沒有遇到錯誤。將它改回 21,當我傳輸 48k 的數據時,就像發條一樣 - 對等連接重置。

鑑於我可以獲得初始連接並且過去在埠 21 上建立 ftp 連接沒有任何問題,看來我的防火牆配置不是問題。

至少在這一點上,我已經將問題縮小到我伺服器上的 ssh 埠。把它翻到21和即時問題,把它改回22,一點問題都沒有……

誰能想到為什麼監聽埠會有所作為?同樣,它只是在我的 Windows XP 機器上引起了問題。讓我知道是否有人對可能導致此問題的原因有任何想法。

更新 2:

只是縮小了問題的範圍,我得到了糾正——這是一個防火牆問題,而是一個 Windows 防火牆問題,而不是在我的路由器上。如果我使用埠 21 並禁用 Windows 防火牆,則不會遇到“對等連接重置”消息。要回答顯而易見的問題,是的,Windows 防火牆上的埠 21 是開放的。

由於這台電腦位於我路由器的防火牆後面,我現在可以將其禁用,但我很想知道這裡發生了什麼。

您可以使用帶有此命令的命令行來解決(以管理員身份在 Windows 工作站上鍵入):

netsh advfirewall set global statefulftp disable

這可能與您的路由器嘗試自動處理 FTP NAT 連接跟踪有關。它只會發生在埠 21,而不是 22。查看http://www.faqs.org/docs/iptables/complexprotocols.html

引用自:https://serverfault.com/questions/163787