2015-10-14 140 views
0

我正在使用libssh来创建我自己的ssh服务器(某种蜜罐)。我想将连接客户端的IP地址保存到我的日志文件中。如何获得这个IP地址?用C++编程。在此先感谢你们!如何使用libssh获取客户端ip地址

回答

-1
s = ssh_get_fd(session); 
getpeername(s, ...); 
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蜜罐的实现。

相关问题