Как обрабатывать проверку ключа хоста ssh с двумя разными хостами на одном и том же (но меняющемся) IP-адресе?[закрыто]

StackOverflow https://stackoverflow.com/questions/733753

Вопрос

У меня есть 2 ssh-сервера за брандмауэром nat в месте, которое каждый день меняет свой IP-адрес.В определенный момент времени они всегда находятся на одном и том же IP-адресе, но на разных портах.

Я подключаюсь к серверу А следующим образом:

ssh -p 22001 karl@x1.example.com

и на сервер B:

ssh -p 22002 karl@x2.example.com

Таким образом, я получаю 2 разных ключа хоста для одного и того же IP-адреса, а также, когда IP-адрес меняется даже на другой IP-адрес для одного и того же хоста.

Мне приходится снова и снова удалять другой ключ или старый ключ (в случае смены IP) в файлеknown_hosts.

Я не решаюсь отключить проверку ключа, потому что это будет менее безопасно.Но постоянное получение предупреждения также небезопасно (потому что тогда я все время игнорирую такие предупреждения).Есть ли лучшее решение?

Это связано с моим старым вопросом здесь, но не то же самое:

Предупреждающее сообщение о входе в систему SSH на сервере с двумя DNS-именами

Это было полезно?

Решение

Я думаю, это сработает:

Создать config файл в вашем .ssh каталог следующим образом:

Host server1
  Hostname x1.example.com
  HostKeyAlias server1
  CheckHostIP no
  Port 22001
  User karl

Host server2
  Hostname x2.example.com
  HostKeyAlias server2
  CheckHostIP no
  Port 22002
  User karl

Пояснения ниже (от man ssh_config)

ПроверитьHostIP

Если этот флаг установлен на «Да», SSH (1) дополнительно проверит IP -адрес хоста в файле stornal_hosts.Это позволяет SSH обнаружить, изменяется ли клавиша хоста из -за подготовки DNS.Если опция установлен на «Нет», проверка не будет выполнена.По умолчанию это «да».

HostKeyAlias

Определяет псевдоним, который следует использовать вместо реального имени хоста при поиске или сохранении клавиши хоста в файлах базы данных клавиш хоста.Эта опция полезна для туннелирования SSH -соединений или для нескольких серверов, работающих на одном хосте.

А Username и Port line позволяет вам не указывать эти параметры и в командной строке, поэтому вы можете просто использовать:

% ssh server1
% ssh server2
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top