У меня есть Virpus VPS под управлением Ubuntu 18.04. С тех пор, как я получил его пару недель назад, у меня были проблемы с подключением через SSH. Я могу подключиться просто отлично, но, казалось бы, случайно отключить (через разные промежутки времени). После отключения я обычно должен подождать минуту, пока он не вернется. Я использовал экран, чтобы сохранить мой экранный сеанс, и, как только я войду, я могу присоединиться к экрану без проблем.
Я проверил его в трех разных сетях на трех разных машинах, двух под Windows 10 и одной под CentOS. В Windows я пытался использовать PuTTY, WinSCP, библиотеку Python SSH под названием paramiko и Git Bash для Windows. В CentOS я просто использовал команду CLI ssh. Все с одинаковыми результатами. Я пробовал SSH-в разные учетные записи пользователей, но проблема остается. Я даже пытался на моем телефоне (Android 6) с помощью ConnectBot. Неудачно.
PuTTY говорит: «Ошибка сети: программное обеспечение вызвало прерывание соединения»
CLI CentOS говорит: packet_write_wait: Connection to 198.167.140.11 port 22: Broken pipe
Я пытался установить Keepalive в PuTTY, но это не имеет никакого эффекта. После потери соединения я не могу пропинговать сервер, даже с другого хоста. То есть, если я подключаюсь по SSH к серверу с компьютера A, то я отключаюсь, затем я немедленно перехожу на компьютер B и пытаюсь пропинговать сервер, но не получаю ответа. Мне кажется, что это вина сервера. С другой стороны, если я отключаю вручную (чисто), я могу пропинговать его.
Служба поддержки 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]
Это пока я ssh'd как другой пользователь (не root), но выполняю команды 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-адресов, которые не соответствуют ни одному из моих.