Как пропустить вопрос «known_host» при первом подключении к машине через SSH с открытыми / закрытыми ключами?

36269

Как пропустить вопрос «known_host» при первом подключении к машине через SSH с открытыми / закрытыми ключами?

15
Почему это было отмечено как дубликат, когда оно предшествовало другому вопросу? Jason Axelson 6 лет назад 0

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

28
Jason Axelson

Во всех других текущих ответах отсутствует UserKnownHostsFile = / dev / null

Если вы просто хотите сделать это один раз, вы можете использовать:

ssh -o StrictHostKeychecking=no hostname 

Если вы хотите сделать это несколько раз, вы должны добавить что-то вроде следующего в ваш ~ / .ssh / config

Host 192.168.0.* StrictHostKeyChecking no UserKnownHostsFile=/dev/null 

Чтобы настроить это в OpenSSH для Windows, просто замените /dev/nullна NUL.

Хорошее объяснение от: http://linuxcommando.blogspot.com/2008/10/how-to-disable-ssh-host-key-checking.html

Я искал отфильтровать подсеть в течение нескольких месяцев (не активно), это именно то, что я хотел. У нас есть небольшая сеть разработки с dhcp, и наши устройства всегда получают новый IP-адрес, что значительно облегчает подключение к ним. Спасибо! Adam Lewis 9 лет назад 1
13
chaos

Выключите StrictHostKeyCheckingчерез ssh_configили параметры командной строки.

/ etc / ssh / ssh_config или ~ / .ssh / config --- или любой другой эквивалент в windows, если это ваша клиентская платформа Doug Harris 15 лет назад 0
2
Nelson
$ ssh -o StrictHostKeychecking=no hostname 

Это приведет к пропуску проверки и автоматическому добавлению ключа удаленного хоста при первом входе в систему. (Существует также опция CheckHostIP, но, похоже, она фактически не отключает проверку на наличие ключа вообще).

Мне также нравится использовать UserKnownHostsFile, чтобы подпись не запоминалась в моей системе. Хороший трюк: `ssh -o UserKnownHostsFile = / dev / null -o StrictHostKeychecking = нет имени хоста` metavida 12 лет назад 2
2
richo

Это заняло у меня некоторое время, чтобы найти. Наиболее распространенный вариант использования, который я видел, это когда у вас есть ssh-туннели к удаленным сетям. Все решения, приведенные здесь, генерировали предупреждения, которые нарушали мои сценарии (нагиос).

Вариант, который мне был нужен, был:

NoHostAuthenticationForLocalhost yes 

Который, как следует из названия, относится только к localhost.

1
egridasov

You can get the public key, add it to known_hosts file and then rehash it:

ssh-keyscan -t rsa hostname >> .ssh/known_hosts ssh-keygen -H rm .ssh/known_hosts.old 
0

Вы можете отключить проверку, но, конечно, это менее безопасно. В идеальной ситуации вам нужно, чтобы кто-то, у кого уже был доступ к машине, взял ее открытый ключ хоста и сказал ssh использовать его. т.е.: взять вывод:

cat /etc/ssh/ssh_host_rsa_key.pub 

добавьте имя хоста машины и добавьте эту строку в файл ~ / .ssh / known_hosts на вашей машине. Вы получите что-то похожее на:

myhost.example.com ssh-rsa AAAAB3Netc ...

В качестве альтернативы, если вы просто хотите захватить отпечаток ключа, который может быть легче передать по каналу с ограниченной пропускной способностью (например, телефонный звонок), вы можете запустить помощника:

ssh-keygen -lf /etc/ssh/ssh_host_rsa_key.pub 
0
endolith

Если вы просто хотите временно отключить проверку хоста, то можете, например, войти в систему LiveCD, переименовать ее ~/.ssh/known_hostsво что-то другое, а затем изменить ее, когда закончите.

-2
Cliff Kennedy
  1. Add "StrictHostKeyChecking no" to /etc/ssh/ssh_config
  2. cd ~/.ssh
  3. rm known_hosts
  4. ln -s /dev/null known_hosts

Bingo

Вы знаете, какую атаку должен предотвратить этот вопрос? vonbrand 11 лет назад 1

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