Я регулярно подключаюсь к компьютеру с двойной загрузкой OS X / Linux. Экземпляры двух ОС не используют один и тот же ключ хоста, поэтому их можно рассматривать как два хоста с одинаковыми IP и DNS. Допустим, IP есть 192.168.0.9
, а имена hostname
иhostname.domainname
Насколько я понял, решение для возможности подключения к двум хостам заключается в добавлении их обоих в ~/.ssh/know_hosts
файл. Однако, это легче сказать , чем сделать, потому что файл хешируется, и, вероятно , несколько входов на хост ( 192.168.0.9
, hostname
, hostname.domainname
). Как следствие, у меня есть следующее предупреждение
Warning: the ECDSA host key for 'hostname' differs from the key for the IP address '192.168.0.9'
Есть ли простой способ отредактировать known_hosts
файл, сохранив при этом хэши. Например, как я могу найти строки, соответствующие данному хостам? Как я могу сгенерировать хеши для некоторых известных хостов?
Идеальное решение позволило бы мне не подключиться к бесшовно к этому компьютеру с помощью SSH, независимо от того , назову ли я его 192.168.0.9
, hostname
или hostname.domainname
, если ни она использует Linux HOSTKEY или его OSX HOSTKEY. Тем не менее, я все еще хочу получить предупреждение, если есть настоящая атака «человек посередине», т.е. если используется другой ключ, чем эти два.
Ответы:
Самое простое решение здесь - просто использовать одни и те же ключи хоста для Linux и OS X. То есть выбрать один набор
/etc/ssh/ssh_host_*_key*
файлов и скопировать их в другую ОС. Затем тот же ключ хоста будет представлен клиенту SSH независимо от того, в какую ОС вы загрузились, и клиент SSH не будет мудрее.источник
/private/etc/ssh_host*
, нет/etc/ssh/ssh_host*
.sshd
загружает ключи хоста один раз при запуске, поэтому вам, скорее всего, потребуется перезагрузкаsshd
. Я добавлю это к ответу. Что касается других решений лучше, это зависит от вашей ситуации. Я бы сказал, что основные плюсы этого метода в том, что он требует единовременной настройки и с большей вероятностью будет работать с несколькими реализациями клиентов SSH.sshd
загружает ключи хоста при каждом новом соединении. Может быть, так было долго, и я просто предположил, что ключи хоста были обработаны как другаяsshd
конфигурация. Так или иначе, это может или не может быть вашей проблемой.Как предложил @Izzy в приведенном выше комментарии, ssh сообщает вам обидную строку, и, удалив эту строку (сохранив ее в другом месте), приняв новый ключ, а затем скопировав удаленную строку обратно, вы получите два ключа для одного и того же хост, и ssh примет либо.
(Вы также можете использовать
ssh-keygen -H -F <hostname>
для поиска строк в вашем файле known_hosts, которые соответствуют этому имени хоста. Выполнение этого после копирования удаленной строки должно отобразить две записи.)Если кто-нибудь знает, как заставить PuTTY сделать то же самое, мне было бы очень интересно узнать об этом.
источник
Я нашел это, которое может помочь вам с тем, чего вы хотите достичь.
Источник: /programming/733753/how-to-handle-ssh-host-key-verification-with-2-different-hosts-on-the-same-but
источник
known_hosts
иCheckHostIP
.Самый простой способ решить вашу проблему - дать каждому хосту свой собственный IP-адрес. С 253 адресами, доступными в вашей (частной) сети и IPv4, это не должно быть проблемой. Дайте им фиксированные IP-адреса (так как DHCP-сервер будет идентифицировать машину на основе MAC-адреса сетевых карт, и оба получат один и тот же адрес). Я не вижу другого решения, если вы хотите сохранить меры безопасности (которые я бы тоже не отказался от этого небольшого «комфорта»).
источник
192.168.0.xx
является и не является частным. Это «настоящий» адрес IPv4, данный моим университетом, который я не могу изменить.Я не сталкиваюсь с этой проблемой при подключении к различным VPS-блокам, использующим один и тот же IP-адрес, поскольку каждый из них имеет свой порт SSH (2002, 2322 и т. Д.), Поэтому они регистрируются как известные хосты с разными ключами.
Может ли это быть обходным путем для вас?
источник
Еще одна статья , в которой описано несколько способов решения вашей проблемы:
источник
hostname
он перезагружается в Linut или OSXПоскольку вы хотите сохранить строгую проверку ключа хоста, я бы попросил их использовать разные
known_hosts
файлы. Для этого настройте свой~/.ssh/config
файл (или/etc/ssh/ssh_config
файл, если вам это нужно для работы с несколькими локальными учетными записями пользователей) следующим образом:, заменив его
$REALHOSTNAME
на фактическое имя хоста или IP-адрес, конечно. (Неважно, какой вы выберете, только после того, как вы выберете что-то после «Hostname», которое будет соответствовать IP-адресу, но я бы использовал имя хоста вместо IP-адреса, просто на общих принципах.)Тогда
ssh myserver.linux
иssh myserver.osx
может иметь разные ключи хоста, но вы все равно получаете проверку. Если работает Linux и вы вводите OS X (или наоборот), вы получите предупреждение (которое, я считаю, является желаемым эффектом).Если бы у меня была эта проблема, я бы удостоверился, что в главном
known_hosts
файле было что-то совершенно не то, что не соответствует ни одному из них, так что если вы печатаете$REALHOSTNAME
вместоmyserver.osx
вас, вы получите предупреждение. :-) Я бы сделал это, поставив что-то вродепо моему
/etc/hosts
, затем сделавssh $REALHOSTNAME
и приняв новый ключ, затем убрав эту запись.источник