我正在尝试直接连接到我的工作电脑(工作)仅可通过外部服务器使用(外部)。
因此,网络路径为:家 » 外面 » 工作
理想情况下,这应该是可行的:
home$ ssh -f -N -L2222:work.example.com:22 outside.example.com
home$ ssh localhost -p 2222 ## This just hangs
但事实并非如此。我也可以用完全不同的服务器替换 work.example.com,结果相同。这些步骤是正确的,因为我可以使用相同的逻辑连接到工作主机的网络服务器:
home$ ssh -f -N -L10080:work.example.com:80 outside.example.com
home$ lynx http://localhost:10080/ ## work's pretty web page is displayed
另外,我可以通过 SSH 连接到工作如果我登录外部第一的:
home$ ssh outside.example.com
outside$ ssh work.example.com
work$ ## Yay, success!
最后,这也适用于涉及不同服务器的场景:
home$ ssh -f -N -L2222:different.example.com:22 another.example.com
home$ ssh localhost -p 2222
different$ ## Success!
所以,我猜想有一些 SSH 配置外部这使得我无法使用直接方法,因为它适用于不同的服务器。
家运行带有 OpenSSH_5.3 的 OpenBSD 4.6。外部运行带有 OpenSSH_5.6p1 的 MacOSX 10.7.2。 工作运行带有 OpenSSH_5.3p1 的 CentOS 6.0。
编辑:今天我来上班的时候,这个解决方案就直直地映入我的眼帘。 小告密者(防火墙)一直在阻止我的连接,并且愉快地打开了不少“您想允许此连接吗”对话框。感谢您的帮助;我同意 @golimar 的正确答案,因为这是一个非常合理的解决方案。
答案1
可能是“外部”中 sshd_config 文件中的 AllowTcpForwarding 和/或 GatewayPorts 选项
如果是这种情况,您的 ssh 客户端应该会对此进行说明(在日志文件中或使用详细选项)。我在 Windows 上的 Putty 中看到了这一点,所以我不知道 ssh 命令的作用是什么……