Передача аргумента yes во время команды scp

Я столкнулся с проблемой, когда я просто запускаю эти команды.

Удаленный сервер хочет передать yes, чтобы добавить ключ в файл RSA, потому что установлено первое соединение времени с scp.

приведены ниже

#!/bin/bash

scp  -P58222 [email protected]:/root/K /N
/usr/bin/expect -c 'expect "\n" { expect "Are you sure you want to continue connecting (yes/no)?" }'
send "yes\r"
expect "$ "
send "exit\r"

На самом деле, я должен передать yes в моем script, задавая

Невозможно установить подлинность IP-адреса хоста (ip-адрес).

RSA key fingerprint is xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx.
Are you sure you want to continue connecting (yes/no)? 

Вы действительно хотите продолжить подключение (да/нет)?

Как я могу избавиться от этой проблемы?

с

scp -o  StrictHostKeyChecking=no

он все еще спрашивает.

Ответ 1

scp -o StrictHostKeyChecking=no [email protected]:/root/K 

Очевидно, что это не очень безопасное решение. Работает для одного выстрела, где вас не беспокоит человек посередине.

Ответ 2

Для меня это работает:

 yes | scp -r /opt/MyFiles [email protected]<MyNewServerIP>:/opt/MyFiles

С уважением. =)

Ответ 3

Вероятно, лучший способ сделать это - использовать следующую команду перед командой scp:

ssh-keyscan -H ${SSH_HOST} >> ~/.ssh/known_hosts

Это добавит SSH_HOST к вашим известным хостам, и scp не будет жаловаться.