我有一台运行 Ubuntu 18.04 的 Virpus VPS。自从几周前购买以来,我一直无法通过 SSH 保持连接。我可以正常连接,但它似乎会随机断开连接(间隔不同)。断开连接后,我通常需要等待一分钟才能重新连接。我使用 screen 保持我的 screen 会话,一旦进入,我就可以毫无问题地重新连接到 screen。
我在三台不同的机器上的三个不同网络上测试过它,其中两台运行 Windows 10,一台运行 CentOS。在 Windows 上,我尝试使用 PuTTY、WinSCP、名为 paramiko 的 Python SSH 库和适用于 Windows 的 Git Bash。在 CentOS 上,我只使用了 CLI ssh 命令。所有结果都相同。我尝试通过 SSH 连接到不同的用户帐户,但问题仍然存在。我甚至尝试在我的手机(Android 6)上使用 ConnectBot。没有运气。
PuTTY 显示:“网络错误:软件导致连接中止”
CentOS CLI 说:packet_write_wait: Connection to 198.167.140.11 port 22: Broken pipe
我尝试在 PuTTY 中设置 Keepalives,但这没有效果。一旦我失去连接,我就无法 ping 服务器,即使从不同的主机。例如,如果我从机器 A 通过 SSH 进入服务器,然后断开连接,然后我立即转到机器 B 并尝试 ping 服务器,我没有得到任何响应。在我看来,这似乎是服务器的错误。另一方面,如果我手动断开连接(干净地),我能对其进行 ping 操作。
Virpus 支持团队表示我的 SSH 设置没有问题,他们能够保持连接(在 Linux 机器上)至少一个小时而不会出现问题,之后他们手动断开连接。换句话说,他们无法复制该问题。
为了解决这个问题,他们更改了服务器的公共 IP,但这并没有解决问题。他们的下一步是重新部署到另一个节点,这似乎有点奏效,但现在我仍然遇到同样的问题。他们告诉我他们现在能做的就是重新部署到另一个节点。因为他们已经这样做了,所以我认为这不会解决问题。
有人有什么建议吗?我可以发布你要求的任何配置信息,只是我不知道该发布什么。
更新:
根据要求,以下是输出ufw status
:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22 ALLOW Anywhere
80/tcp ALLOW Anywhere
443/tcp ALLOW Anywhere
443 ALLOW Anywhere
80 ALLOW Anywhere
80,443/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)
22 (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
80,443/tcp (v6) ALLOW Anywhere (v6)
为了更好的测量,这里是输出iptables -L
:
https://pastebin.com/GdScv2rv
更新:
我查看了 auth.log 并发现我一直连续收到以下消息:
Nov 10 03:47:04 <hostname> sshd[17618]: Failed password for root from <ip_address> port 44738 ssh2
Nov 10 03:47:05 <hostname> sshd[17618]: Received disconnect from <ip_address> port 44738:11: [preauth]
这是当我以其他用户(非 root)的身份通过 ssh 登录但运行 sudo 命令时的情况。与<ip_address>
我的主机或远程服务器不匹配。
似乎有人在试图暴力破解我,因为我收到了一连串这样的消息:
Nov 12 12:21:12 <hostname> sshd[20367]: Invalid user demo from <ip_address> port 49709
Nov 12 12:21:15 <hostname> sshd[20367]: pam_unix(sshd:auth): check pass; user unknown
Nov 12 12:21:15 <hostname>sshd[20367]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=<ip_address>
Nov 12 12:21:17 <hostname> sshd[20367]: Failed password for invalid user demo from 193.105.134.97 port 49709 ssh2
Nov 12 12:21:17 <hostname> sshd[20367]: Disconnecting invalid user demo <ip_address> port 49709: Change of username or service not allowed: (demo,ssh-connection) -> (root,ssh-connection) [preauth]
大约有 1500 个,他们都使用不同的用户名。我已在 中屏蔽了 IP 地址ufw
。
还有许多Failed password for root from
IP 地址与我的都不匹配。