Некоторое время я использовал curl (с помощью git-ftp) и передавал только имя пользователя и sftp
URL.
Аутентификация всегда будет работать косвенно через открытый ключ.
Внезапно curl больше не будет подключаться через SSH - по-видимому, потому, что он не получает ключ хоста и поэтому отклоняет соединение:
Trying {IP}...
* Connected to host.example.com ({IP}) port 22 (#0)
* SSH MD5 fingerprint: {Fingerprint}
* SSH host check: 2, key: <none>
* Closing connection 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.