奇怪的问题:对等连接重置


10

我在运行CentOS的Linux服务器上使用SSH遇到麻烦。我可以使用PuTTY或Windows cmd中的ssh连接到服务器。使用安全FTP也是一样。我可以连接到服务器,获取文件列表,一切正常。当我尝试通过网络发送任何数量的数据时,就会出现问题。

每当我尝试传输超出特定阈值的任何内容时,连接都会失败,并且会看到“对等方重置连接”消息。我的主目录中有一个大约3 MB的sql文件。如果我尝试通过FTP传输,它将开始传输并在传输大约48k之后死亡。然后它将启动一个新的连接并传输另一个48k。如果我使用PuTTY并打开一个会话,则可以正常连接和登录。如果我cat file.sql再次尝试,连接将终止,并且会收到“对等连接重置”消息。从我的本地工作站到服务器,情况相同。我有很多源代码需要提交到服务器上托管的svn存储库,但是会出现相同的“由对等方重置连接”消息。

我知道问题出在我的本地工作站上,因为我可以毫无问题地使用妻子的macbook和ssh到服务器。我可以将ssh放入朋友的linux盒中(使用相同的腻子安装程序),然后从他们的sftp到我的服务器并下载文件,然后从他的盒中打开另一个ssh会话到我的服务器并管理该文件。因此,发生了一些事情,但是我不确定。有人有什么想法吗?

更新资料

我一直在尝试找出更多的答案,似乎在单个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已打开。

由于这台计算机位于路由器的防火墙后面,因此我暂时可以将其禁用,但是我想弄清楚这里发生了什么。


+1我在尝试通过端口21连接到SSH服务器的Windows 7 PC上在这里遇到了同样的问题。对于外壳访问来说,该连接很好,直到我开始在同一连接上使用隧道来传输更多数据为止。以下亚历山德罗的答案为我解决了。
Wim Coenen 2010年

Answers:


10

您可以通过以下命令使用命令行来解决(以管理员身份输入):

netsh advfirewall set global statefulftp disable


+1修复了该问题。为了清楚起见:此命令将在Windows PC上执行。
Wim Coenen's

太好了,我一段时间以来一直遇到这个确切的问题。所有与Windows 7防火墙有关。两者都使用21以上的Putty SSH和21以上的NXclient连接(nxshh)。netsh advfirewall set global statefulftp disable这使我的nxclient连接现在可以连接并完成连接,因此可以看到桌面。

1

这可能与您的路由器尝试自动处理FTP NAT连接跟踪有关。它只会在端口21而不是端口22上发生。请访问http://www.faqs.org/docs/iptables/complexprotocols.html


谢谢,我将检查这篇文章,看看它是否对正在发生的事情有所启示。
proflux

里卡多似乎是正确的。请参阅有关winscp.net/forum/viewtopic.php?t=9360的讨论。想知道在ip_conntrack_ *中触发的任何问题中是否存在可利用的东西
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.