diff options
author | Toni Uhlig <matzeton@googlemail.com> | 2018-08-10 17:29:01 +0200 |
---|---|---|
committer | Toni Uhlig <matzeton@googlemail.com> | 2018-08-10 17:29:01 +0200 |
commit | 27a6d041ae59e04c9c5aa35a8b3b7ec9e05ef045 (patch) | |
tree | aa0306c1890dc95181ce6383785efaf40e3db747 /src | |
parent | 98c853efc489b3545ba7ee8130589a74e73f23d5 (diff) |
removed keyboard INTERACTIVE from auth methods and added PUBLICKEY (denies access atm)
Signed-off-by: Toni Uhlig <matzeton@googlemail.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/protocol_ssh.c | 45 |
1 files changed, 33 insertions, 12 deletions
diff --git a/src/protocol_ssh.c b/src/protocol_ssh.c index 5564cc8..7aa666e 100644 --- a/src/protocol_ssh.c +++ b/src/protocol_ssh.c @@ -565,6 +565,11 @@ failed: static int authenticate(ssh_session session, ssh_login_cache *cache) { ssh_message message; + ssh_key pubkey; + int rc, auth_methods = SSH_AUTH_METHOD_PUBLICKEY | SSH_AUTH_METHOD_PASSWORD; + char *pk_hashstr; + unsigned char *pk_hash; + size_t pk_hashlen; do { message = ssh_message_get(session); @@ -586,20 +591,39 @@ static int authenticate(ssh_session session, ssh_login_cache *cache) ssh_message_free(message); return 1; } - ssh_message_auth_set_methods(message, - SSH_AUTH_METHOD_PASSWORD | - SSH_AUTH_METHOD_INTERACTIVE); + + ssh_message_auth_set_methods(message, auth_methods); /* not authenticated, send default message */ ssh_message_reply_default(message); break; + case SSH_AUTH_METHOD_PUBLICKEY: + pubkey = ssh_message_auth_pubkey(message); + rc = ssh_get_publickey_hash(pubkey, + SSH_PUBLICKEY_HASH_SHA1, &pk_hash, &pk_hashlen); + + pk_hashstr = NULL; + if (rc >= 0) { + pk_hashstr = ssh_get_hexa(pk_hash, pk_hashlen); + } + + if (pk_hashstr) { + N("SSH: user '%s' wants to auth with public key '%s'", + ssh_message_auth_user(message), + pk_hashstr); + ssh_string_free_char(pk_hashstr); + } + + ssh_message_auth_set_methods(message, auth_methods); + ssh_message_reply_default(message); + break; + case SSH_AUTH_METHOD_NONE: N("SSH: User '%s' wants to auth with method '%d': NONE", ssh_message_auth_user(message), ssh_message_subtype(message)); - ssh_message_auth_set_methods(message, - SSH_AUTH_METHOD_PASSWORD | - SSH_AUTH_METHOD_INTERACTIVE); + + ssh_message_auth_set_methods(message, auth_methods); ssh_message_reply_default(message); break; @@ -607,18 +631,15 @@ static int authenticate(ssh_session session, ssh_login_cache *cache) N("SSH: User '%s' wants to auth with unknown auth '%d'", ssh_message_auth_user(message), ssh_message_subtype(message)); - ssh_message_auth_set_methods(message, - SSH_AUTH_METHOD_PASSWORD | - SSH_AUTH_METHOD_INTERACTIVE); + + ssh_message_auth_set_methods(message, auth_methods); ssh_message_reply_default(message); break; } break; default: - ssh_message_auth_set_methods(message, - SSH_AUTH_METHOD_PASSWORD | - SSH_AUTH_METHOD_INTERACTIVE); + ssh_message_auth_set_methods(message, auth_methods); ssh_message_reply_default(message); } ssh_message_free(message); |