2

Насколько я знаю, опция ssh по умолчанию StrictHostKeyChecking настроена на ask поэтому первое соединение ssh выглядит так:

$ ssh host.example.com
The authenticity of host 'host.example.com (1.2.3.4)' can't be established.
RSA key fingerprint is 52:9b:0a:f1:e4:51:1b:96:8c:b7:96:7c:d3:d2:7d:9f.
Are you sure you want to continue connecting (yes/no)?
  • Я хотел бы автоматически добавить ключ хоста впервые при условии возможной проблемы безопасности.
  • Я хотел бы, чтобы ключ хоста использовался любым локальным пользователем автоматически (например, без каких-либо дополнительных параметров командной строки ssh ).

2 ответа2

0

Я думаю, что KeyCans чище:

/usr/bin/ssh-keyscan $host >> $SSH_KNOWN_HOSTS

Если вам нужно сначала удалить устаревшую запись:

/usr/bin/ssh-keygen -R $host -f $SSH_KNOWN_HOSTS

Тогда вам больше не нужно терпеть предупреждения.

0

Я прочитал man ssh и man ssh_config и нашел решение для этого:

#!/bin/bash

SSH_KNOWN_HOSTS=/etc/ssh/ssh_known_hosts
[ -e $SSH_KNOWN_HOSTS ] || touch $SSH_KNOWN_HOSTS
for host in \
    host1.example.com \
    host2.example.com \
; do
    ssh-keygen -R $host -f $SSH_KNOWN_HOSTS
    ssh -q -o StrictHostKeyChecking=no -o BatchMode=yes -o UserKnownHostsFile=$SSH_KNOWN_HOSTS $host echo '' || true
done
chmod a+r $SSH_KNOWN_HOSTS

Это работает, но кажется хакерским. Вы знаете более короткий способ сделать это?

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .