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

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

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

ssh -p 22001 [email protected]

и серверу B:

ssh -p 22002 [email protected]

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

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

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

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

Предупреждение о регистрации входа SSH на сервере с двумя именами DNS

Ответы

Ответ 1

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

Создайте файл 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)

CheckHostIP

Если для этого флага установлено значение "да", ssh (1) дополнительно проверит IP-адрес хоста в known_hosts файл. Это позволяет ssh определять, ключ хоста изменен из-за подмены DNS. Если для параметра установлено значение "нет", проверка не будет выполнена. по умолчанию "да".

HostKeyAlias ​​

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

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

% ssh server1
% ssh server2