Назад | Перейти на главную страницу

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:
:(

Так что, похоже, он все еще хочет пароль ...

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

  • Если вы установите его на accept-new, новые ключи будут приняты, но измененные ключи на ранее известных хостах не будут.
  • Если вы установите его на noбудут приняты как новые, так и измененные ключи хоста.
  • По умолчанию установлено ask, который у вас есть сейчас.
  • Установив его на yes - самый строгий вариант: с этим параметром клиент 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 without-password: здесь нет эффекта, мы в пределах Match User ansible блок, мы говорим о входе в систему как пользователь ansible, а не как root.
  • PubkeyAuthentication no: ~ansible/.ssh/authorized_keys не будет иметь никакого эффекта.
  • HostbasedAuthentication yes: этот может работать не так, как вы думаете.

Требования для аутентификации на основе хоста

Для того чтобы 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

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