0

我正在使用 libssh 制作自己的 ssh 服务器(某种蜜罐)。我想将已连接客户端的 IP 地址保存到我的日志文件中。如何获取此 IP 地址?用 c++ 编程。提前谢谢各位!

4

2 回答 2

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;
}

它基于https://github.com/PeteMo/sshpot/blob/master/auth.c中的函数“get_client_ip”,其中完整的 SSH 蜜罐实现。

于 2015-11-14T15:31:00.883 回答
-1
s = ssh_get_fd(session);
getpeername(s, ...);
于 2015-10-15T11:07:41.670 回答