sshd не соблюдает настройки sshd_config

Я добавляю следующие настройки в свой файл centos 7 / etc / ssh / sshd_config на основе докеров:

Match User ansible
        PermitEmptyPasswords yes
        PasswordAuthentication no
        PermitRootLogin without-password
        PubkeyAuthentication no
        HostbasedAuthentication yes

И я заметил, что sshd не соблюдает эти настройки, по крайней мере, он все еще запрашивает пароль. В моей настройке у моего пользователя ansible вообще нет пароля, но я все равно требую, чтобы он запускался на различных машинах без аутентификации. Я знаю о ssh-copy-id , однако, поскольку это закрытая сеть докеров, я хочу обойти их обработку ключей и просто позволить пользователю ansible войти.

Я знаю, что это небезопасно, но это только для тестовой среды для разработки.

Какие дополнительные настройки я должен добавить в свой файл sshd_config, чтобы меня никогда не беспокоили пароли и не просили ввести «да», чтобы принять отпечаток пальца?

Вот что я вижу в докере:

[root@docker-ansible /]# ssh ansible@portal.docker.local

The authenticity of host 'portal.docker.local (172.31.0.2)' can't be established.
ECDSA key fingerprint is SHA256:klErLlMAooQXDpAVNAsGoQTt5r+GdjDX06Fgihstteo.
ECDSA key fingerprint is MD5:60:4e:1e:6a:05:12:45:e9:21:79:4b:22:0b:1b:a7:cd.

Are you sure you want to continue connecting (yes/no)? yes <-- I need to not be typing yes here.

Warning: Permanently added 'portal.docker.local,172.31.0.2' (ECDSA) to the list of known hosts.

Permission denied (gssapi-keyex,gssapi-with-mic,hostbased).

Когда я пытаюсь снова, после ввода «да», все равно:

[root@docker-ansible /]# ssh ansible@portal.docker.local

Permission denied (gssapi-keyex,gssapi-with-mic,hostbased).

Обновление: Я только что попробовал идею @ telcoM, и хотя она кажется мне близкой, она не работает. Конец моего файла sshd_config таков:

Match User ansible 
   PermitEmptyPasswords yes 
   AuthenticationMethods none 

Но теперь я получаю следующую ошибку:

[ansible@docker-ansible ~]$ ssh -o StrictHostKeyChecking=no portal.docker.local
ansible@ocker-ansible's password:
:(

Таким образом, похоже, что пароль все еще нужен ...

0
задан 5 October 2019 в 01:28
1 ответ

Хост ключевые отпечатки пальцев и сообщение "Вы уверены, что хотите продолжить подключение?" приглашение генерируется вашим SSH-клиентом , а не удаленным sshd . Никакая конфигурация на сервере sshd не изменит этого. Параметр, который необходимо изменить в вашем локальном личном ~ / .ssh / config или в локальном системном / etc / ssh / ssh_config , равен StrictHostKeyChecking .

  • Если вы установите его на accept-new , новые ключи будут приняты, но измененные ключи на ранее известных хостах не будут.
  • Если вы установите его на нет , будут приняты как новые, так и измененные ключи хоста.
  • Значение по умолчанию - спросить , что у вас есть в настоящее время.
  • Настройка на да - самый лучший вариант. Параметр strict: с этой настройкой клиент SSH никогда не будет подключаться, если у него заранее не будет локально доступного ключа хоста (максимальная безопасность, минимальное удобство).

Теперь давайте проанализируем ваш sshd_config фрагмент:

Match User ansible
        PermitEmptyPasswords yes
        PasswordAuthentication no
        PermitRootLogin without-password
        PubkeyAuthentication no
        HostbasedAuthentication yes
  • PermitEmptyPasswords yes : не очень применимо, поскольку вы установили PasswordAuthentication no . Это все еще может помешать sshd рассматривать учетную запись пользователя без пароля как эквивалент отключенной.
  • PasswordAuthentication no : у вас никогда не будет запроса на ввод пароля для этого пользователя (или если вы это сделаете , это будет фальшивая подсказка, чтобы зря потратить время потенциального злоумышленника)
  • PermitRootLogin без пароля : здесь нет никакого эффекта, мы в блоке Match User ansible , мы ' мы говорим о входе в систему как пользователь ansible , а не как root .
  • PubkeyAuthentication no : ~ ansible / .ssh / authorized_keys не будет иметь эффект.
  • HostbasedAuthentication yes : этот может работать не так, как вы думаете.

Требования для HostbasedAuthentication

Для HostbasedAuthentication , чтобы разрешить ваш логин, ключ хоста хоста, с которого вы приходите, уже должен существовать в удаленном / etc / ssh / ssh_known_hosts или в ~ ansible /. ssh / known_hosts , и либо ваше локальное имя хоста должны быть указаны в общесистемном /etc/ssh/shosts.equiv или /etc/hosts.equiv или ваше локальное имя хоста и имя пользователя должны быть указаны в ~ ansible / .shosts или ~ ansible / .rhosts .

Итак, HostbasedAuthentication определенно не является установкой входа без пароля без предварительной подготовки, как вы могли себе представить.

Чтобы получить полностью открытый набор без проверки подлинности - вверх для пользователя ansible , попробуйте этот блок Match:

Match User ansible
    PermitEmptyPasswords yes
    AuthenticationMethods none

Очевидно, НИКОГДА не используйте его ни на чем, что подключено к Интернету.

4
ответ дан 4 December 2019 в 11:41

Теги

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