libssh: require private key or user-agent for public key auth

Closes #20110
This commit is contained in:
Harry Sintonen 2025-12-29 16:56:39 +01:00 committed by Daniel Stenberg
parent bc9ab557df
commit 16d5f2a566
No known key found for this signature in database
GPG key ID: 5CC908FDB71E12C2

View file

@ -921,7 +921,11 @@ static int myssh_in_AUTHLIST(struct Curl_easy *data,
"keyboard-interactive, " : "",
sshc->auth_methods & SSH_AUTH_METHOD_PASSWORD ?
"password": "");
if(sshc->auth_methods & SSH_AUTH_METHOD_PUBLICKEY) {
/* For public key auth we need either the private key or
CURLSSH_AUTH_AGENT. */
if((sshc->auth_methods & SSH_AUTH_METHOD_PUBLICKEY) &&
(data->set.str[STRING_SSH_PRIVATE_KEY] ||
(data->set.ssh_auth_types & CURLSSH_AUTH_AGENT))) {
myssh_to(data, sshc, SSH_AUTH_PKEY_INIT);
infof(data, "Authentication using SSH public key file");
}