ssh: автоматически принимать ключи

152

Я написал этот небольшой скрипт:

for h in $SERVER_LIST; do ssh $h "uptime"; done

Когда новый сервер добавляется в $SERVER_LIST , сценарий останавливается с помощью:

The authenticity of host 'blah.blah.blah (10.10.10.10)' can't be established.
RSA key fingerprint is a4:d9:a4:d9:a4:d9a4:d9:a4:d9a4:d9a4:d9a4:d9a4:d9a4:d9.
Are you sure you want to continue connecting (yes/no)?

Я пробовал yes :

for h in $SERVER_LIST; do yes | ssh $h "uptime"; done

без везения.

Есть ли способ параметризовать ssh , чтобы автоматически принять новый ключ?

    
задан Adam Matan 18.04.2012 в 11:11
источник

4 ответа

160

Используйте параметр StrictHostKeyChecking, например:

ssh -oStrictHostKeyChecking=no $h uptime

Эта опция также может быть добавлена ​​в ~ / .ssh / config, например:

Host somehost
    Hostname 10.0.0.1
    StrictHostKeyChecking no

Обратите внимание, что при изменении ключей хоста вы получите предупреждение даже с этой опцией:

$ ssh -oStrictHostKeyChecking=no somehost uptime
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
@    WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!     @
@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
IT IS POSSIBLE THAT SOMEONE IS DOING SOMETHING NASTY!
Someone could be eavesdropping on you right now (man-in-the-middle attack)!
It is also possible that a host key has just been changed.
The fingerprint for the RSA key sent by the remote host is
31:6f:2a:d5:76:c3:1e:74:f7:73:2f:96:16:12:e0:d8.
Please contact your system administrator.
Add correct host key in /home/peter/.ssh/known_hosts to get rid of this message.
Offending RSA key in /home/peter/.ssh/known_hosts:24
  remove with: ssh-keygen -f "/home/peter/.ssh/known_hosts" -R 10.0.0.1
Password authentication is disabled to avoid man-in-the-middle attacks.
Keyboard-interactive authentication is disabled to avoid man-in-the-middle attacks.
ash: uptime: not found

Если ваши хосты не часто переустанавливаются, вы можете сделать это менее безопасным (но более удобным для часто меняющихся ключей хоста) с опцией -oUserKnownHostsFile=/dev/null . Это отбрасывает все принятые ключи хоста, чтобы он никогда не генерировал предупреждение.

    
ответ дан Lekensteyn 18.04.2012 в 11:29
источник
86

Вы можете использовать следующую команду для добавления отпечатка пальца для сервера к вашим известным_hosts

ssh-keyscan -H <ip-address> >> ~/.ssh/known_hosts
ssh-keyscan -H <hostname> >> ~/.ssh/known_hosts

ПРИМЕЧАНИЕ: Заменить & lt; ip-address & gt; и & lt; hostname & gt; с именем IP и dns сервера, который вы хотите добавить.

Единственная проблема заключается в том, что в конечном итоге вы столкнетесь с некоторыми серверами в ваших known_hosts дважды. Это не очень много, просто упомянуть. Чтобы убедиться, что дубликатов нет, вы можете сначала удалить все серверы, выполнив сначала следующее:

ssh-keygen -R <ip-address>
ssh-keygen -R <hostname>

Итак, вы можете запустить:

for h in $SERVER_LIST; do
    ip=$(dig +search +short $h)
    ssh-keygen -R $h
    ssh-keygen -R $ip
    ssh-keyscan -H $ip >> ~/.ssh/known_hosts
    ssh-keyscan -H $h >> ~/.ssh/known_hosts
done

Одна вещь, которую следует иметь в виду при удалении только для повторного добавления, вы по существу устраняете безопасность проверки отпечатка пальца. Таким образом, вы не захотите запускать этот скрипт перед каждым исполнением вашего скрипта утилиты.

    
ответ дан mhost 17.10.2013 в 02:24
источник
23

Я немного опоздал с этим ответом, но разумным способом было бы сделать ssh-keyscan на новой машине, прежде чем запускать сборку времени безотказной работы.

ssh-keyscan  <newhost> >> ~/.ssh/known_hosts

Отключение проверки работоспособности для удобства саксофона звучит как плохой план, даже если вы считаете, что полностью контролируете окружающую среду.

    
ответ дан tink 24.11.2014 в 20:47
источник
0

Чтобы добавить список серверов автоматически, мы можем сделать ниже:

Добавить сервер серверов в список серверов серверов

IP-адреса должны быть добавлены в следующем формате.

Выход cat servers-list

123.1.2.3
124.1.2.4
123.1.2.5

Измените выше IP-адреса, заменив ваши.

Ниже команда добавит все серверы из списка.

ssh-keyscan -p61 -H "'cat servers-list'" >> ~/.ssh/known_hosts
    
ответ дан Waqas Khan 16.02.2018 в 08:46
источник

Ознакомьтесь с другими вопросами по меткам