Назад | Перейти на главную страницу

Ответить «да» на ssh-copy-id при первом запуске скриптом?

Первый раз 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, вы можете написать сценарий, который:

  1. Бегать ssh-keyscan против целевого сервера, чтобы получить открытый ключ
  2. Добавьте это в файл known_hosts
  3. Бегать ssh-copy-id

Попробуй это:

ssh-copy-id -i ~/.ssh/id_rsa.pub user@example.com -y

он не добавляет ключи хоста в файл known_hosts, но позволяет копировать (или добавлять) открытый ключ в authorized_keys что вы хотите, если это единственная цель здесь.