gpt4 book ai didi

ssh - 如何从反向 ssh 隧道获取远程 IP 地址

转载 作者:行者123 更新时间:2023-12-02 02:00:30 25 4
gpt4 key购买 nike

我有一个通过反向 ssh 隧道在本地计算机上运行的 Apache Web 服务器,即:

ssh -R *:80:local_machine:8080 用户名@gateway_machine

换句话说,来自 gateway_machine 上端口 80 的所有流量发送到 local_machine 上的端口 8080。

为了监控目的,我想知道远程客户端的IP地址连接到 gateway_machine。然而我的本地 Apache 服务器看到所有流量均来自 gateway_machine 的 IP 地址。

我的问题:有没有办法设置在 gateway_machine 上运行的 ssh 服务器,以便它将所有流量发送到具有实际远程 IP 地址的 local_machine?

最佳答案

SSH 协议(protocol)使用名为“direct-tcpip”的 channel 类型来转发 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 实用程序不会对该信息执行任何其他操作。

因此,根据您的需求,您可以通过三种方法来收集此信息:

  1. 使用 -v 选项调用创建这些转发的 ssh 进程,并安排收集和解析相关调试信息。
  2. 制造source code更改 ssh 以使其按照您希望的方式处理信息。
  3. 编写您自己的 ssh 客户端来执行您想要的操作。 SSH 客户端库适用于大多数现代编程语言。

关于ssh - 如何从反向 ssh 隧道获取远程 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12007113/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com