ssh – 奇怪的问题:通过对等重置连接

我在运行CentOS的 linux服务器上遇到SSH问题.我可以使用PuTTY或 Windows cmd中的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一致的次数,并且还会得到’Connection reset by peer’消息.我试过了:

>生成新的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防火墙,我不会遇到“通过对等连接重置”消息.要回答这个显而易见的问题,是的,端口21在Windows防火墙上是打开的.

由于这台计算机位于路由器的防火墙后面,我现在可以暂时禁用它,但我很想知道这里发生了什么.

您可以使用此命令使用命令行解决(以管理员身份键入):

netsh advfirewall设置全局statefulftp禁用

相关文章

Centos下搭建性能监控Spotlight
CentOS 6.3下Strongswan搭建IPSec VPN
在CentOS6.5上安装Skype与QQ
阿里云基于centos6.5主机VPN配置
CentOS 6.3下配置multipah
CentOS安装、配置APR和tomcat-native