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