ref: f8eb5a1d13c1911c95fd26fbbc300e74aee558af
parent: 1f6a604c23b0a5cad68c8692e990a76c250e17df
author: aiju <devnull@localhost>
date: Mon Apr 24 12:04:09 EDT 2017
ssh: add "none" method to find out list of acceptable methods
--- a/sys/src/cmd/ssh.c
+++ b/sys/src/cmd/ssh.c
@@ -673,6 +673,32 @@
}
int
+noneauth(void)
+{
+ static char authmeth[] = "none";
+
+ if(!authok(authmeth))
+ return -1;
+
+ sendpkt("bsss", MSG_USERAUTH_REQUEST,
+ user, strlen(user),
+ service, strlen(service),
+ authmeth, sizeof(authmeth)-1);
+
+Next0: switch(recvpkt()){
+ default:
+ dispatch();
+ goto Next0;
+ case MSG_USERAUTH_FAILURE:
+ werrstr("authentication needed");
+ authfailure(authmeth);
+ return -1;
+ case MSG_USERAUTH_SUCCESS:
+ return 0;
+ }
+}
+
+int
pubkeyauth(void)
{
static char authmeth[] = "publickey";
@@ -1171,7 +1197,7 @@
break;
}
- if(pubkeyauth() < 0 && passauth() < 0 && kbintauth() < 0)
+ if(noneauth() < 0 && pubkeyauth() < 0 && passauth() < 0 && kbintauth() < 0)
sysfatal("auth: %r");
recv.pkt = MaxPacket;