我有一个Apache网络服务器通过反向ssh隧道在本地机器上运行,即:
ssh -R *:80:local_machine:8080 username @ gateway_machine
换句话说,来自gateway_machine上端口80的所有流量 被发送到local_machine上的端口8080。
出于监控目的,我希望了解远程客户端的IP地址 连接到gateway_machine。但是我的本地Apache服务器看到了 来自gateway_machine的IP地址的所有流量。
我的问题:有没有办法设置在gateway_machine上运行的ssh服务器 它使用实际的远程IP地址将所有流量发送到local_machine?
答案 0 :(得分:2)
SSH协议使用名为" direct-tcpip"的通道类型。用于转发TCP连接。 The protocol message for opening one of these channels包括正在转发其连接的客户端的地址和端口。因此,您想要的信息可供ssh客户端使用(在您的情况下,打开与转发目标的连接)。
OpenSSH ssh
客户端在调试级别消息中记录发起者地址和端口,因此如果您使用-v
选项运行ssh,则可以看到它:
$ ssh -v -R 2000:localhost:1000 localhost
...
debug1: client_request_forwarded_tcpip: listen localhost port 2000, originator ::1 port 51101
这里的始发者地址是:: 1(IPv6本地主机)和端口51101. ssh
实用程序不对信息做任何其他事情。
因此,根据您的需求,您有三种方法来收集此信息:
ssh
选项调用创建这些转发的-v
进程,并安排收集和解析相关的调试信息。ssh
进行source code次更改,以使其按照您希望的方式处理信息。