SSH «отказанный ключ» только с публичным IP, работает локально

SSH «отказанный ключ» только с публичным IP, работает локально

Итак, моя проблема в том, что я не могу подключиться к своему SSH-серверу (работающему на Linux Mint Sarah) с моего клиента (Windows 7 через PuTTY). Работает только через локальный IP.

И сервер, и клиент находятся в одной подсети. Сервер SSH настроен на разрешение только соединений с ключом SSH-RSA без паролей. Я установил ключ, и он успешно работает, как и требовалось, когда я подключаюсь к локальному IP сервера.

Я открыл порт 22 в брандмауэре моего WAN-устройства и могу подтвердить, что он подключается к нужному полю, когда я пытаюсь использовать публичный IP, потому что включение/выключение брандмауэра сервера приводит к отклонениям. Таким образом, SSH-соединение успешно достигает сервера, пытается пройти аутентификацию с помощью закрытого ключа, но терпит неудачу:

Server refused our key

Звучит очевидно, но я не понимаю, почему ключ не проходит аутентификацию, когда я могу пройти ее с тем же ключом локально. Эту проблему было трудно исследовать, потому что большинство результатов — это неправильная переадресация портов.

Это то, что я попробовал (следуяэтотруководство, среди прочего):

  • Обновлены все пакеты на сервере и apt-get install openssh-server.
  • Я /etc/ssh/sshd_configустановил:
    • Port 22
    • AllowUsers user
    • PasswordAuthentication no
    • UsePAM no
  • В PuTTYgen создал открытый и закрытый ключ, сохранил в каталоге (в Windows).
  • В /home/user/.ssh/authorized_keysскопировал часть открытого ключа, начинающуюся с ssh-rsaи заканчивающуюся == commentна в одну строку с возвратом каретки в конце.
  • chmod 700 ~/.sshкоторый перечисляет под ls -alкакdrwx------
  • chmod 644 ~/.ssh/authorized_keysкоторый перечисляет под ls -lкак-rw-r--r--
  • В PuTTY в разделе SSH > Auth установите для параметра «Закрытый ключ для аутентификации» сгенерированный ранее закрытый ключ.
  • Подключитесь к порту 22 как user@<local_ip>... успешно.
  • Подключитесь к порту 22 как user@<public_ip>... Server refused our key.

Бонусом tailing /var/log/auth.logничего мне не дает при отказе от ключа. При локальном подключении печатает Accepted publickeyстроку.

И последнее, и я не уверен, относится ли это к делу, но попытка подключиться по SFTP с FileZilla по публичному IP-адресу приводит к следующей ошибке:

Error:  The first key-exchange algorithm supported by the server is diffie-hellman-group1-sha1, which is no longer secure. Aborting connection.
Error:  Could not connect to server

Сказать, что я средний пользователь Linux, было бы натяжкой, так что, возможно, я что-то упускаю из виду. Надеюсь, я ясно изложил свою проблему. Буду признателен за любую помощь!


Редактировать: Вывод пакетов SSH PuTTY и необработанные данные (в основном мусор, поэтому включил то, что посчитал пригодным для человеческого восприятия):

Event Log: Looking up host "<omitted>"
Event Log: Connecting to <omitted> port 22
Event Log: We claim version: SSH-2.0-PuTTY_Release_0.67
Event Log: Server version: SSH-2.0-dropbear_0.46
Event Log: We believe remote version has SSH-2 channel request bug
Event Log: Using SSH protocol version 2
Event Log: Using Diffie-Hellman with standard group "group1"
Event Log: Doing Diffie-Hellman key exchange with hash SHA-1
Event Log: Host key fingerprint is:
Event Log: ssh-rsa 1040 <omitted>
Outgoing packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC client->server encryption
Event Log: Initialised HMAC-SHA1 client->server MAC algorithm
Incoming packet #0x2, type 21 / 0x15 (SSH2_MSG_NEWKEYS)
Event Log: Initialised triple-DES CBC server->client encryption
Event Log: Initialised HMAC-SHA1 server->client MAC algorithm
Incoming packet #0x4, type 51 / 0x33 (SSH2_MSG_USERAUTH_FAILURE)
  00000000  00 00 00 12 70 75 62 6c 69 63 6b 65 79 2c 70 61  ....publickey,pa
  00000010  73 73 77 6f 72 64 00                             ssword.
Event Log: Server refused our key

решение1

Эта строка заставляет меня подозревать, что на самом деле вы подключаетесь к своему маршрутизатору или модему, когда подключаетесь к порту 22 на своем публичном IP-адресе.

Event Log: Server version: SSH-2.0-dropbear_0.46

Если вы подключаетесь с использованием внутреннего IP, вы получаете ту же строку Server version? Если нет, вам, вероятно, нужно отключить SSH на вашем модеме и/или маршрутизаторе и настроить переадресацию портов (если это еще не сделано) для порта 22 на внутренний IP вашего сервера Linux.

Если вы не можете отключить SSH на своем модеме/маршрутизаторе, вы можете попробовать переадресовать другой порт (например, 2222) на порт 22 на вашем сервере Linux.

Связанный контент