是否可以使用没有 SSH 的 Windows 机器作为网关,连接到只能从网络内部访问的 SSH 服务器?
让我用一张草图来澄清我的问题:
我(Linux 机器)---> WIN(没有 SSHD 的 Windows)--->LIN(带有 SSHD 的 Linux)。
Machine Me 是我用来通过 WIN 连接 LIN 的 PC。WIN 可从外部访问,它有一个开放的 RDESKTOP 端口,而 LIN 只能从网络内部访问。
希望你理解这个问题。
答案1
OpenSSH 具有通过 ProxyCommand 选项使用代理的非常灵活的能力。如果 Windows 机器上没有 SSH 守护程序,那么您可以安装 socks 代理、HTTP CONNECT 代理或通用 TCP 代理吗?如果可以,那么您可以将其用作连接到内部系统的点。具体细节取决于您安装的代理类型以及各个系统之间的防火墙/过滤器类型。
如果不安装某种代理,Windows 系统就无法实现这一点。Windows 没有任何内置的通用代理可以转发 SSH 流量。
答案2
核心问题是你是否可以通过另一台机器连接到某项服务。答案是可以的,但你需要软件。
我刚刚快速谷歌了一下,发现了这个东西:http://www.quantumg.net/portforward.php Linux 上也有各种实用程序,但我个人最喜欢的是 rinetdhttp://www.boutell.com/rinetd/。
两者的工作方式相同 - 您运行一个程序,该程序基本上将数据包从一台主机转发到另一台主机。如果您可以访问中间的机器,则应该能够安装一个守护进程/服务器来执行此操作。
答案3
Windows具有内置的端口映射机制:
netsh interface ipv6 install # Port forwarding needs to enable ipv6
netsh interface portproxy add v4tov4 listenaddress=123.234.12.34 listenport=22 connectaddress=192.168.1.2 connectport=22
将 123.234.12.34 替换为你的 Windows Server 的公网 IP,将 192.168.1.2 替换为你的 Linux Server 的内网 IP
答案4
不,sshd 会进行转发,因此如果 Windows 中没有运行 SSH 守护程序,您就无法进行转发。