Первый раз ssh-copy-id
он спросит
# ssh-copy-id -i .ssh/id_dsa.pub backup@example.com
The authenticity of host 'example.com (xxx.xxx.xxx.xxx)' can't be established.
RSA key fingerprint is 39:fb:5e:70:30:33:2b:18:17:e9:4f:2f:91:b5:d2:21.
Are you sure you want to continue connecting (yes/no)?
Можно ли это написать в сценарии, чтобы сценарий просто ответил утвердительно?
SSH имеет возможность автоматически добавлять любые ключи хоста в файл доверенных хостов:
ssh-copy-id -i .ssh/id_dsa.pub -o StrictHostKeyChecking=no backup@example.com
В качестве альтернативы вы можете сделать следующее:
echo "yes \n" | ssh-copy-id -i .ssh/id_dsa.pub backup@example.com
редактировать: поскольку кажется, что эти решения не работают с ssh-copy-id
, вы всегда можете создать ~/.ssh/config
файл со следующей опцией в нем:
StrictHostKeyChecking no
Это должно работать со всеми соединениями SSH, независимо от того, вызываются они через скрипт или нет.
Если ваш ssh-copy-id
не поддерживает параметр StrictHostKeyChecking, вы можете написать сценарий, который:
ssh-keyscan
против целевого сервера, чтобы получить открытый ключssh-copy-id
Попробуй это:
ssh-copy-id -i ~/.ssh/id_rsa.pub user@example.com -y
он не добавляет ключи хоста в файл known_hosts, но позволяет копировать (или добавлять) открытый ключ в authorized_keys
что вы хотите, если это единственная цель здесь.