我有一个小型本地网络,只有一台机器可以通过外网访问(这个不容易改变)。我想设置SSH请求,使不通过标准端口进入的请求转向另一台机器。这是可能的吗?如果可以,如何实现?
哦,还有所有这些机器都在运行Ubuntu或OS X。
另一种方法是使用ssh隧道技术(发生在客户端)。
您需要执行以下ssh命令:
ssh -L 8022:myinsideserver:22 paul@myoutsideserver
这将使您连接到可以从外部访问的机器(myoutsideserver),并通过该ssh连接在只能从内部访问的服务器上创建到端口22(标准ssh端口)的隧道。
然后,您将执行另一条ssh命令,如下所示(保持第一条仍处于连接状态):
ssh -p 8022 paul@localhost
你连接本地主机端口8022后,将通过第一次ssh连接被隧道化,从而到达myinsideserver。
在myoutsideserver上可能需要您执行一些操作以允许ssh端口转发。我现在再次确认这一点。
编辑
嗯,ssh手册说:**只有超级用户才能转发特权端口。**
看起来不需要超级用户权限,只要被转发的端口(在此例中为8022)不是特权端口(如22),就可以进行转发了。感谢Mike Stone的澄清。
我本来也想这么说,但你比我先说了!无论如何,我只想补充一下还有一个选项:-R:
ssh -R 8022:myinsideserver:22 paul@myoutsideserver
ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no
nossh somehost
即可忽略所有密钥错误。但要知道,这样做意味着你正在忽略安全信息,因此存在理论风险。不需要操纵防火墙规则,您可以设置一个~/.ssh/config文件。
假设10.1.1.1是“网关”系统,10.1.1.2是“客户端”系统。
Host gateway
Hostname 10.1.1.1
LocalForward 8022 10.1.1.2:22
Host client
Hostname localhost
Port 8022
您可以通过以下方式打开到 'gateway' 的ssh连接:
ssh gateway
ssh client
http://portforward.com/help/portforwarding.htm
在此页面上有关于如何设置路由器以进行端口转发请求的说明:
http://www.portforward.com/english/routers/port_forwarding/routerindex.htm