Как получить IP-адрес клиента с помощью libssh

Я использую libssh для создания собственного ssh-сервера (своего рода приманки). Я хотел бы сохранить IP-адрес подключенного клиента в свой файл журнала. Как получить этот IP-адрес? Программирование на С++. Заранее спасибо, ребята!


person Casio    schedule 14.10.2015    source источник


Ответы (1)


Вот небольшая функция, которую я использую.

string getClientIp(ssh_session session) {

    struct sockaddr_storage tmp;
    struct sockaddr_in *sock;
    unsigned int len = 100;
    char ip[100] = "\0";

    getpeername(ssh_get_fd(session), (struct sockaddr*)&tmp, &len);
    sock = (struct sockaddr_in *)&tmp;
    inet_ntop(AF_INET, &sock->sin_addr, ip, len);

    string ip_str = ip;

    return ip_str;
}

Он основан на функции "get_client_ip" из https://github.com/PeteMo/sshpot/blob/master/auth.c, где находится полная реализация приманки SSH.

person vojtamicka    schedule 14.11.2015