Я уже некоторое время использую curl (с помощью git-ftp) и передаю только имя пользователя и sftp
URL.
* Подключено к host.example.com ({IP}) порт 22 (# 0)
* Отпечаток SSH MD5: {Fingerprint}
* Проверка хоста SSH: 2, ключ: <нет>
* Закрытие соединения 0
Почему curl не может получить ключ?
Соединения с ssh -v
работают и дают мне 2 ключа хоста, также curl --insecure
будет работать.
libssh2 не поддерживает некоторые более поздние ключи, такие как ecdsa-sha2-nistp256 и ssh-ed25519 .
Итак, если у вас уже есть один из этих ключей в вашем .ssh / known_hosts , libssh2 завершится ошибкой. Но вы можете добавить еще один ключ, который поддерживает libssh2, например RSA:
Чтобы исправить это, получите открытый ключ RSA с удаленного хоста и добавьте его в свой файл known_hosts
:
ssh-keyscan hostname .example.com >> ~ / .ssh / known_hosts
Точный формат и расположение файла могут отличаться в зависимости от системы.
Я решил проблему, заменив адрес ipv6 на домен в файле known_hosts
.
Он уже существовал в файле с именем known_hosts2
в том же каталоге, но я предполагаю, что этот файл на самом деле не читается ssh / curl.