SSH: известный хост с динамическим адресом

12

Мне нужно подключиться к хосту с динамическим IP-адресом.

Каждый раз, когда меняется IP-адрес, SSH запрашивает у меня проверку отпечатков пальцев:

The authenticity of host '...' can't be established.
RSA key fingerprint is ....
Are you sure you want to continue connecting (yes/no)?

Можно ли передать SSH открытый ключ хоста, чтобы:

  1. SSH автоматически проверяет подлинность хоста
  2. Ключ хоста не сохраняется в файле known_hosts

Этот вопрос отличается от того, как я могу избежать проверки хоста SSH для известных хостов? так что другие вопросы ставит перед собой цель проверки подавлять SSH, а я не хочу , чтобы подавить его: Я действительно хочу , чтобы хост аутентификации только с помощью открытого ключа хоста (который я знаю, и она хранится в файле) , а не SSH known_hostsфайл.

Мне кажется, что другой вопрос заключается в том, чтобы каждый раз подключаться к другому серверу, а не к одному общеизвестному серверу с динамическим IP.

peoro
источник

Ответы:

8

Лучшее решение (т. Е. Самое близкое к тому, что я хочу), которое я мог бы найти, - это использовать опцию HostKeyAlias: он будет использовать имя хоста, к которому я обращаюсь known_hosts(а не IP, к которому я подключаюсь).

Мне нужно будет добавить открытый ключ known_hostsхоста, используя заданное имя хоста (например:), myhostа затем подключиться к нему, используя:

ssh -o 'HostKeyAlias myhost' ...
peoro
источник
Я знаю, что это было давно, но: если это лучше всего отвечает на ваш вопрос, пожалуйста, примите это.
kittykittybangbang
Примечание для других: вы можете добавить HostKeyAliasзначение конфигурации в ваш ~/.ssh/configфайл или даже в глобальный /etc/ssh/ssh_configфайл.
Каэль
6

known_hostsФайл не только ключ, он также содержит имя хоста , используемые для подключения, и , если возможно , что IP соответствует. Вот почему вы видите ошибку, она сравнивает триплет, полученный с сервера, с тем, что вы сохранили в файле known_hosts.

Таким образом, если IP-адрес продолжает меняться, вы можете отключить, CheckHostIPа это означает, что он просто проверит имя хоста и ключ хоста. Если они остаются неизменными, у вас должно быть меньше жалоб, но вы будете подвергаться риску, если кто-то похитит ваш DNS.

NickW
источник
1
Спасибо за ответ, я проверю это как можно скорее! В любом случае, почему это так? Если я знаю открытый ключ SSH хоста, этого должно быть достаточно, чтобы в любом случае быть полностью безопасным (если кому-то не удастся украсть закрытый ключ этого хоста), не так ли?
peoro
И все же мне не очень нравится, если я должен быть честным. Используя этот флаг, SSH все равно получит доступ known_hosts. Почему? Разве я не могу сказать "ssh подключиться к X с открытым ключом Y"? Почему бы нет? Не будет ли это на 100% уверен.
peoro
Идея заключается в том, что ключ хоста является частью большего целого, и одного этого недостаточно для гарантии того, что сервер, к которому вы подключаетесь, все еще тот, к которому вы подключались ранее. Вы должны быть уверены, что IP-адрес и DNS-записи также совпадают ... помните, что это сетевая оболочка, поэтому необходимо также проверить сеть.
NickW