Опция авторизации OpenSSH "from", работающая только с IP-адресами, а не с именами хостов

604
Dave

Я использую OpenSSH 6.7p1 на Debian 8 (Джесси).

Я использую аутентификацию с открытым ключом. Как часть этого, я использую опцию авторизации "from" в моем файле author_keys.

Я обнаружил, что при указании разрешенного исходного узла по IP-адресу ограничения доступа работают, как и ожидалось. Но когда я указываю разрешенный исходный хост по имени хоста, доступ не предоставляется. Он пропускает аутентификацию с открытым ключом и запрашивает пароль.

Рабочая запись в author_keys выглядит следующим образом:

from="10.1.1.1" ssh-rsa ... 

Неработающая запись в author_keys выглядит так:

from="snoopy" ssh-rsa ... 

Имя хоста "snoopy" разрешается файлом / etc / hosts. У меня нет DNS-клиента, работающего на одной из машин. Следующая запись появляется в / etc / hosts на обеих задействованных машинах: 10.1.1.1 snoopy

Есть ли какой-нибудь способ, которым я могу заставить это работать, или это ограничение / проблема с моей версией OpenSSH?

1
Хм, когда OpenSSH отправляется для разрешения имен хостов входящего соединения, я полагаю, что оно выполнит «обратное» разрешение, которое работает несколько иначе, чем обычное «прямое» разрешение и часто дает совсем другие результаты. Я не уверен, что при обратном разрешении обычно обращают внимание на / etc / hosts или они пропускают прямо к вашим серверам имен. Фактически, [этот ответ] (https://stackoverflow.com/questions/13356274/can-etc-hosts-config-reverse-resolution) в StackOverflow говорит, что это не так. Cliff Armstrong 6 лет назад 0
Спасибо за ссылку. Я прочитаю это. В какой-то момент я встану на DNS-сервер, поэтому проблема может решить. Dave 6 лет назад 0

1 ответ на вопрос

2
Kenster

Для сервера OpenSSH это поведение контролируется параметром «UseDNS» в файле sshd_config сервера :

UseDNS
Указывает, должен ли sshd (8) искать имя удаленного хоста и проверять соответствие сопоставленного имени хоста для удаленного IP-адреса тому же IP-адресу.
Если для этого параметра установлено значение no (по умолчанию), то в директивах ~ / .ssh / authorized_keys from и sshd_config Match Host могут использоваться только адреса, а не имена хостов.

Итак, если у вас есть доступ к настройке сервера ssh, вам следует включить UseDNS в файле конфигурации сервера, а затем перезапустить sshd.

Обратите внимание, что включение UseDNS может привести к тому, что ssh-соединение на короткое время (10-30 секунд) будет зависать, если поиск DNS по IP-адресу клиента идет медленно или не работает. Вы можете оставить этот параметр отключенным.

Похожие вопросы