Может ли кто-нибудь дать пример с сервером с аутентификацией открытого ключа ssh с помощью libssh? Я нашел это https://github.com/substack/libssh/blob/master/examples/samplesshd-tty.c, но это аутентификация с паролем. Может быть, кто-то видел такой пример, но с аутентификацией открытого ключа в libssh. Или может быть, кто-то может изменить код ниже, чтобы получить его.Сервер с аутентификацией открытого ключа ssh с libssh
я добавил для переключения (ssh_message_subtype (сообщение))
case SSH_AUTH_METHOD_PUBLICKEY:
printf("User %s wants to auth with key %s\n",
ssh_message_auth_user(message),
ssh_message_auth_pubkey(message));
if(authenticate_pubkey(session, message)){
ssh_message_auth_reply_success(message,0);
ssh_message_free(message);
return 1;
}
ssh_message_auth_set_methods(message,
SSH_AUTH_METHOD_PUBLICKEY);
// not authenticated, send default message
ssh_message_reply_default(message);
break;
и это
static int authenticate_pubkey(ssh_session session, ssh_message message)
{
int rc;
std::string us = ssh_message_auth_user(message);
rc = ssh_userauth_publickey_auto(session, ssh_message_auth_user(message), NULL);
if (rc == SSH_AUTH_ERROR)
{
fprintf(stderr, "Authentication failed: %s\n",
ssh_get_error(session));
return SSH_AUTH_ERROR;
}
return rc;
}