Я не совсем согласен с последним ответом.Когда вы принимаете ключ SSH в первый раз, вы ничего не знаете об удаленном хосте, поэтому автоматическое принятие его не имеет значения.
Что бы я сделал, это автоматически принял ключ при первом подключении к хосту.Я читал, что делать что-то вроде yes yes | ssh user@host
работает, но это не так, потому что SSH не читает из стандартного ввода, а из терминала.
Что работает, чтобы передать, что при первом подключенииследующая опция ssh (работает как для scp, так и для ssh:
scp -oStrictHostKeyChecking=no user@host1:file1 user@host2:file2
Эта команда добавит ключ при первом запуске, но если, как говорит Эрик, сделать это, как только вы приметеключ опасен (человек посередине не крутой). Если бы я был тобой, я бы добавил его в скрипт, который проверял бы ~/.ssh/known_hosts
, если для этого хоста уже есть строка, и в этом случае я бы не добавил эту опцию.С другой стороны, если бы не было строки, я бы так и сделал;).
Если вы имеете дело с зашифрованной версией known_hosts, попробуйте с помощью
ssh-keygen -F hostname
Вот кое-что, что яна самом деле использую (функция получает следующие аргументы: user, host, source_file)
deployToServer() {
echo "Deployng to $1@$2 from $3"
if [ -z "`cat ~/.ssh/known_hosts | grep $2`" ] && [ -z "`ssh-keygen -F $2`" ]
then
echo 'Auto accepting SSH key'
scp -oStrictHostKeyChecking=no $3* $1@$2:.
else
scp $3* $1@$2:.
fi
}
Надеюсь, это помогло;)