Skip to content

Instantly share code, notes, and snippets.

@bararchy
Created November 27, 2014 10:13
Show Gist options
  • Save bararchy/cf7a50ddd60cc5186e5b to your computer and use it in GitHub Desktop.
Save bararchy/cf7a50ddd60cc5186e5b to your computer and use it in GitHub Desktop.
C and ruby
int authenticate(ssh_session session) {
ssh_message message;
do {
message=ssh_message_get(session);
if(!message)
break;
switch(ssh_message_type(message)){
case SSH_REQUEST_AUTH:
switch(ssh_message_subtype(message)){
case SSH_AUTH_METHOD_PASSWORD:
printf("User %s wants to auth with pass %s\n",
ssh_message_auth_user(message),
ssh_message_auth_password(message));
if(auth_password(ssh_message_auth_user(message),
ssh_message_auth_password(message))){
ssh_message_auth_reply_success(message,0);
ssh_message_free(message);
return 1;
}
ssh_message_auth_set_methods(message,
SSH_AUTH_METHOD_PASSWORD |
SSH_AUTH_METHOD_INTERACTIVE);// not authenticated, send default message
ssh_message_reply_default(message);
break;
case SSH_AUTH_METHOD_NONE:
default:
printf("User %s wants to auth with unknown auth %d\n",
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_reply_default(message);
break;
}
break;
default:
ssh_message_auth_set_methods(message,
SSH_AUTH_METHOD_PASSWORD |
SSH_AUTH_METHOD_INTERACTIVE);
ssh_message_reply_default(message);
}
ssh_message_free(message);
} while (1);
return 0;
}
while true do
SSHSocket.ssh_message_get(sshsession) do |msg|
puts msg
type = SSHSocket.ssh_message_type(msg)
puts type
case type
when Messages_General::SSH_REQUEST_AUTH
subtype = SSHSocket.ssh_message_subtype(msg)
puts subtype
case subtype
when Messages_Auth::SSH_AUTH_METHOD_PASSWORD
user_ssh = SSHSocket.ssh_message_auth_user(msg)
pass_ssh = SSHSocket.ssh_message_auth_password(msg)
puts user_ssh, pass_ssh
end
else
SSHSocket.ssh_message_auth_set_methods(msg,SSH_AUTH_METHOD_PASSWORD | SSH_AUTH_METHOD_INTERACTIVE);
SSHSocket.ssh_message_reply_default(msg);
end
SSHSocket.ssh_message_free(msg)
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment