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

我在运行CentOS的Linux服务器上遇到了一些SSH问题。 我可以连接到我的服务器罚款使用腻子ssh从Windows CMD。 使用安全FTP也是一样。 我可以连接到服务器,得到一个文件列表,一切都很好。 当我尝试通过networking发送任何数量的数据时,就会出现这个问题。

每当我尝试传输任何超出一定的阈值,连接失败,我看到一个“连接重置对等”消息。 我有一个在我的主目录约3 MB的SQL文件。 如果我试图FTP,它将开始传输并在大约48K转移后死亡。 然后它将启动一个新的连接,并转移另一个48K。 如果我使用PuTTY并打开一个会话,我可以连接并正常login。 如果我试图再次cat file.sql ,连接终止,我得到一个'连接重置对等'消息。 从我的本地工作站到服务器这是相同的情况。 我有相当多的源代码,我需要提交到服务器上托pipe我的svn存储库,但同样的“连接重置由对等”消息出现。

我知道问题出在我的本地工作站上,因为我可以使用我妻子的macbook和ssh到服务器,没有任何问题。 我可以ssh到一个朋友的Linux的盒子(使用相同的腻子安装)和SFTP到我的服务器,并下载文件,打开另一个SSH会话从他的箱子到我的服务器和猫文件。 所以,事情正在发生,但我不知道是什么。 有没有人有任何想法?

更新

我一直在试图弄清楚这一点,似乎有一个硬盘的限制,我可以在一个单一的SSH会话传输的数据量。 如果我使用cat file.sql ,我立即打了它,但是我也可以继续inputls -l一致的次数,并且还会得到'Connection reset by peer'消息。 我试过了:

  • 生成新的ssh密钥
  • 重新启动我的路由器
  • 重新启动我的电脑
  • 重新启动远程服务器

我在远程服务器上写了一个tcpdump,但是我不太了解TCP的详细程度,这对我来说很有意义。 我打开了在ssh中的debugging,这里是导致连接重置的日志部分:

 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上build立ftp连接方面我没有遇到任何问题,看来我的防火墙configuration看起来并不是问题。

至less在这一点上,我已经把问题缩小到了我的服务器上的ssh端口。 翻转到21和即时的问题,改回到22,没有问题的所有…

任何人都可以想到为什么监听端口会有所作为? 同样,只有在我的Windows XP盒子上才会出现问题。 让我知道,如果有人有什么想法可能会导致这一点。

更新2:

只是缩小了问题,我纠正了 – 这是一个防火墙问题,但Windows防火墙问题,而不是在我的路由器。 如果我使用端口21,并禁用Windows防火墙,我不会遇到“连接重置对等”消息。 回答这个显而易见的问题,是的,端口21是在Windows防火墙上打开的。

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

你可以用命令行解决这个命令(以pipe理员身份input):

netsh advfirewall set global statefulftp disable

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