Я добавляю следующие настройки в свой 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
Очевидно, НИКОГДА не используйте это на чем-либо, подключенном к Интернету.