我在运行 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 会话到我的服务器并捕获文件。所以,有些事情正在发生,但我不确定是什么。有没有人有任何想法?
更新
我一直在尝试解决这个问题,似乎我可以在单个 ssh 会话中传输的数据量有一个硬性限制。如果我这样做cat file.sql,我会立即点击它,但我也可以继续输入ls -l一致的次数,并且还会收到“对等方重置连接”消息。我试过了:
我在远程服务器上写了一个 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
Run Code Online (Sandbox Code Playgroud)
更新 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。
由于这台计算机在我路由器的防火墙后面,我现在可以禁用它,但我有兴趣弄清楚这里发生了什么。
| 归档时间: |
|
| 查看次数: |
43555 次 |
| 最近记录: |