Ошибка проверки ключа хоста

1

У меня есть скрипт, который выбирает файлы с сервера, используя этот код для открытия сеанса.

sftp -o port="port" -o IdentityFile="private_key_location" "username@remote_host"

Запуск его вручную успешно загружает файлы.

Но когда я использую планировщик для запуска скрипта, он не работает и запрашивает

No RSA host key is known for [remote_host]:port and you have requested strict checking
Host key verification failed.
Couldn't read packet: Connection reset by peer

Мой private_key_locationтакже доступен другому пользователю. Я прочитал, что в том месте, ~/.ssh/known_hostsгде выполнялся скрипт, может не быть хоста, к которому я подключаюсь ~/.ssh/known_hosts.

Как настроить скрипт так, чтобы он не потерпел неудачу при запуске другим пользователем, если у него все еще есть доступ к моему private_key_location?

Благодарю.

InnZaayynn
источник
1
Попробуйте su -c 'sftp ...' YourUserName .
MariusMatutiae
Привет @MariusMatutiae, это можно сделать без ввода пароля? Как бы мне не хотелось, чтобы мой пароль был доступен всем. Спасибо,
InnZaayynn
Как указывает @MariusMatutiae, вход в систему в интерактивном режиме с указанным пользователем один раз приведет к кэшированию ключа хоста в хранилище ключей пользователей. Обратите внимание, что вы должны сделать это только один раз. и имя пользователя, о котором идет речь, - это не тот пользователь, под которым работает процесс, а тот, под которым он не работает.
Фрэнк Томас

Ответы:

3

Первое, что вы можете сделать, это запустить sftpс параметром StrictHostKeyChecking"Нет".

sftp -o StrictHostKeyChecking=no -o port="port" -o IdentityFile="private_key_location" "username@remote_host"

Эта опция отключит проверку ключа удаленного хоста.

В противном случае вы можете создать глобальный known_hostsфайл. Посмотрите этот ответ, чтобы узнать, как это сделать.

teksisto
источник
Это привело к «Отказано в доступе (publickey)».
InnZaayynn
Аутентификация пользователя происходит после проверки ключа удаленного хоста, что означает, что ваша первая проблема с known_hostsфайлом решена.
Текстисто