From 16d5f2a5660c61cc27bd5f1c7f512391d1c927aa Mon Sep 17 00:00:00 2001
From: Harry Sintonen <sintonen@iki.fi>
Date: Mon, 29 Dec 2025 16:56:39 +0100
Subject: [PATCH] libssh: require private key or user-agent for public key auth

Closes #20110

Conflict:context adapt to curl-7.78.0, line number adjusted
Reference:https://github.com/curl/curl/commit/16d5f2a5660c61cc27bd5f1c7f512391d1c927aa
---
 lib/vssh/libssh.c | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

--- curl-7.78.0/lib/vssh/libssh.c	2021-07-19 15:19:57.000000000 +0800
+++ curl-7.78.0-patched/lib/vssh/libssh.c	2026-02-24 00:00:00.000000000 +0800
@@ -742,7 +742,11 @@ static CURLcode myssh_connect(struct Curl_easy *data, bool *done)
         }

         sshc->auth_methods = ssh_userauth_list(sshc->ssh_session, NULL);
-        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))) {
           state(data, SSH_AUTH_PKEY_INIT);
           infof(data, "Authentication using SSH public key file");
         }