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

5144
peoro

Мне нужно подключиться к хосту с динамическим 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.

9

2 ответа на вопрос

6
peoro

The best solution (ie. closest to what I want) I could find is to use the option HostKeyAlias: it will use an hostname I specify to access known_hosts (rather than the IP I'm connecting to).

I will need to add the host's public key to known_hosts using a given hostname (eg: myhost) and then connect to it using:

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

The known_hosts file is not just the key, it also contains the hostname you use to connect, and if possible the IP that corresponds. Which is why you see the error, it is comparing the triplet it gets from the server with what you stored in the known_hosts file.

So, if the IP keeps changing, you could disable CheckHostIP and that means it will just check the hostname and host key. If those remain unaltered, you should have less complaints, but you will be at risk if someone hijacks your DNS.

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

Похожие вопросы