Estou usando o curl (por meio do git-ftp) há um tempo e passando apenas o nome de usuário e uma sftp
URL.
A autenticação sempre funcionaria implicitamente por meio de chave pública.
De repente, o curl não se conectará mais por SSH - aparentemente porque não obtém uma chave de host e, portanto, rejeita a conexão:
Trying {IP}...
* Connected to host.example.com ({IP}) port 22 (#0)
* SSH MD5 fingerprint: {Fingerprint}
* SSH host check: 2, key: <none>
* Closing connection 0
Por que o curl não consegue a chave?
Conexões com ssh -v
trabalho e me dão 2 chaves de host, também curl --insecure
funcionarão.
libssh2 não suporta algumas chaves posteriores como ecdsa-sha2-nistp256 e ssh-ed25519 .
Portanto, se você já tiver uma dessas chaves em seu .ssh/known_hosts , libssh2 falhará. Mas você pode adicionar outra chave compatível com libssh2, como RSA:
Para corrigi-lo, recupere a chave pública RSA do host remoto e adicione-a ao seu
known_hosts
arquivo:ssh-keyscan hostname.example.com >> ~/.ssh/known_hosts
O formato exato e a localização do arquivo podem variar de acordo com o sistema.
Corrigi o problema substituindo o endereço ipv6 pelo domínio, dentro do
known_hosts
arquivo.Acontece que já existe em um arquivo nomeado
known_hosts2
no mesmo diretório, mas acho que esse arquivo não é realmente lido por ssh/curl.