我在运行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已打开。
由于这台计算机位于路由器的防火墙后面,因此我暂时可以将其禁用,但是我想弄清楚这里发生了什么。