我正在尝试在机器 A 和 B 之间创建反向 ssh 隧道。两台机器都是 Windows 并且使用Win32 OpenSSH。以下是我所做的。
- 在机器 AI 上,有一个在端口 8080 上运行的 Web 应用程序
- 在机器 BI 上,sshd 正在运行
- 在机器 AI 上运行此命令
ssh -v -R 9000:localhost:8080 user@MachineB
然后我在机器 A 的控制台上看到下面的几行
debug1: Remote connections from LOCALHOST:9000 forwarded to local address localhost:8080
debug1: channel 0: new [client-session]
debug1: Requesting [email protected]
debug1: Entering interactive session.
debug1: client_input_global_request: rtype [email protected] want_reply 0
debug1: remote forward success for: listen 9000, connect localhost:8080
debug1: All remote forwarding requests processed
当我在机器 B 上进行调用时localhost:9000
,我在机器 A 的控制台上看到以下错误。
debug1: client_input_channel_open: ctype forwarded-tcpip rchan 3 win 2097152 max 32768
debug1: client_request_forwarded_tcpip: listen localhost port 0, originator :: port 52487
WARNING: Server requests forwarding for unknown listen_port 0
debug1: failure forwarded-tcpip
我哪里做错了?我该如何解决此问题?
更新
另外,当我在机器 B 上进行调用时localhost:9000
,以下几行会写入sshd.log
文件中。
6388 10:06:47 708 error: getsockname failed: Bad address
6388 10:06:47 745 channel 3: open failed: administratively prohibited: open failed
答案1
当我在机器 B 上调用 localhost:9000 时
检查此步骤中将“localhost”替换为 127.0.0.1 是否有效
如果是这种情况,则意味着隧道正常,但从 ssh 服务器外部看不到该端口。解决方案:查看:
- 你的 openssh 服务器的 sshd_config 文件有GatewayPorts 是
- 即防火墙openssh 服务器没有阻止它