Commit fbdf5bdd9f530ed163667be108107864c16b00ea

kas 2019-11-16T22:41:25

Adds support for multiple SSH auth mechanisms being used sequentially

diff --git a/src/transports/ssh.c b/src/transports/ssh.c
index 2159418..0c492ca 100644
--- a/src/transports/ssh.c
+++ b/src/transports/ssh.c
@@ -518,6 +518,7 @@ static int _git_ssh_setup_conn(
 {
 	git_net_url urldata = GIT_NET_URL_INIT;
 	int auth_methods, error = 0;
+	int sub_error;
 	size_t i;
 	ssh_stream *s;
 	git_cred *cred = NULL;
@@ -638,6 +639,15 @@ post_extract:
 		}
 
 		error = _git_ssh_authenticate_session(session, cred);
+
+		if (error == GIT_EAUTH) {
+			/* refresh auth methods */
+			sub_error = list_auth_methods(&auth_methods, session, urldata.username);
+			if (sub_error < 0) {
+				error = sub_error;
+				goto done;
+			}
+		}
 	}
 
 	if (error < 0)