Чому SSH додає відомий запис для IP-адреси?


18

У мене хост на ім'я nms.example.org. У /etc/ssh/ssh_known_hostsмене є запис для хоста з ключем RSA. Цей запис та всі інші записи керуються моєю системою управління конфігурацією.

nms.example.org ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDZqfmVPs/XqTS...

Також у мене є запис для мого /etc/ssh/ssh_configконкретного хоста, який встановлює псевдонім ключа хоста. Що, якщо я все правильно розумію, це означає, що має бути лише nms.example.orgзначення.

Host nms.example.org nms.example nms
    HostKeyAlias nms.example.org
    HostName nms.example.org

Чому тоді, коли я підключаюсь до клієнта, ssh все ще здається, що йому потрібно додати ключ до моїх відомих користувачів з користувачем із IP-адресою хоста?

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
debug1: Reading configuration data /home/zoredache/.ssh/config
debug1: /home/zoredache/.ssh/config line 61: Applying options for *
debug1: /home/zoredache/.ssh/config line 71: Applying options for *
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 84: Applying options for nms
debug1: /etc/ssh/ssh_config line 363: Applying options for *
debug1: Connecting to nms.example.org [104.236.190.144] port 22.
debug1: Connection established.
debug1: identity file /home/zoredache/.ssh/zoredache-20140204.id_rsa type 1
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: Permanently added the RSA host key for IP address '192.0.2.144' to the list of known hosts.
debug1: ssh_rsa_verify: signature correct
...

SSH знає, що мій хост дійсний (Див. Host 'nms.example.org' is known and matches the RSA host key), Тож чому він додає ключ для IP-адреси до профілю користувача?

Це надзвичайно дратує, адже коли я перевстановлюю машину, моя система управління конфігурацією обробляє збирання та розповсюдження хост-ключів до всієї системи. Але залишиться ці конфліктні ключі, пов’язані з IP-адресами, у файлах відомих_хостів за час використання, які викликають попередження про спробу підключення, що заважає скриптам підключатися.

$ ssh nms -v
OpenSSH_6.0p1 Debian-4+deb7u4, OpenSSL 1.0.1e 11 Feb 2013
...
debug1: Local version string SSH-2.0-OpenSSH_6.0p1 Debian-4+deb7u4
debug1: using hostkeyalias: nms.example.org
...
debug1: Server host key: RSA 6b:5f:b6:e9:13:c3:b7:39:1e:ec:74:05:33:64:4d:5e
debug1: using hostkeyalias: nms.example.org
debug1: Host 'nms.example.org' is known and matches the RSA host key.
debug1: Found key in /etc/ssh/ssh_known_hosts:104
Warning: the RSA host key for 'nms.example.org' differs from the key for the IP address '192.0.2.144'
Offending key for IP in /home/zoredache/.ssh/known_hosts:25
Matching host key in /etc/ssh/ssh_known_hosts:104
Are you sure you want to continue connecting (yes/no)?

Як я можу запобігти ssh кешувати це значення за IP-адресою у кожному знаючому_хості користувачів? Або є якась причина безпеки, чому мені просто доводиться жити з такою дратівливою поведінкою? Це мене також засмучує, оскільки пара серверів має кілька динамічних IP-адрес. Моє управління конфігурацією обробляє оновлення DNS. Але я отримую ці ліві ключі хоста за IP-адресою, заповнюючи мої файли відомих користувачеві знань_хостів.

Відповіді:


22

Я думаю, що це зробити CheckHostIPроботу.

Якщо цей прапор встановлено на "так", ssh (1) додатково перевірить IP-адресу хоста у known_hostsфайлі. Це дозволяє ssh виявити, чи змінився хост-ключ через підробку DNS. Якщо для параметра встановлено значення "ні", перевірка не буде виконана. За замовчуванням - «так».

Ви отримуєте трохи кращу діагностику у випадку неправильної конфігурації або нападу за допомогою цієї опції, але це насправді не покращує безпеку жодним чином, що я можу придумати.

Якщо ви вимкнете, CheckHostIPто SSH (станом на OpenSSH 6.7p1) не записує IP-адресу при підключенні до нового хоста по імені. Тому додайте це до свого .ssh/config:

CheckHostIP no

Ви можете додати його до Hostрозділу, якщо ви хочете вимкнути його лише для певного хоста (особливо для динамічної IP-адреси).


Так, це налаштування, яке мені потрібно.
Зоредаче

Хоча я згоден з усім , що ви сказали @Gilles, технічно я б (заради гарної дискусії) говорю , що CheckHostIP yes робить підвищення безпеки ... якщо користувач точно знає , що він робить, як система використовує цей параметр, і поняття прихованої довіри. Отже, я б дійсно розщеплював волоски, чого не буду робити ...
Збережу
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.