我使用ssh [email protected] -g -L 4321:localhost:28017build立从我的MacBook到我的托pipe服务提供商处的专用服务器的隧道。 它运作良好。 现在我想要访问远程服务器上的多个pipe理站点(一个MongoDB状态页面,一个RabbitMQ页面等等,全部在不同的端口上)。 所有这些都绑定到远程机器上的127.0.0.1。 我怎样才能调整这个ssh命令
这是可能的与SSH? 我已经阅读了手册页,并search了两天,但似乎并不奏效。
–edit 2012-06-01 23:36 – 由于提供的答案和意见端口转发现在正在使用
ssh [email protected] -D 4321
我可以在浏览器中将其设置为代理,浏览器将把任何对localhost:anyport的请求视为在远程服务器上进行。 现在不需要使用名称,因为浏览器仅适用于远程服务器站点。
你所描述的是不可能的。 但是还有一个好消息:
然而,可能的是build立与SSH服务器的dynamic连接。 这将在本地计算机上打开一个端口,您可以将该端口指向浏览器的“代理服务器”设置,并允许您将该通道用作代理服务器。 但是你必须input一个主机名/ IP和端口到浏览器,就好像浏览器在SSH服务器所在的机器上运行一样。
命令如下所示: ssh [email protected] -D 1234
然后将浏览器的代理指向localhost:1234 。
因此,如果您连接到服务器A并希望连接到服务器B,则可以在浏览器中键入到运行在服务器A上的浏览器中input的任何地址。如果在服务器A上运行的浏览器无法连接到服务器B(如果服务器B上的进程只监听127.0.0.1),那么你仍然无法连接。 这听起来像你只有一台服务器,但我想确定这是清楚的。
如果你只有一台服务器,你可以使用dynamic连接进行连接,设置你的代理服务器。 然后,您将能够在浏览器中input“localhost:1234”(例如),并将其连接到在端口1234上运行在远程服务器上的服务。
Securit方面注意:永远不要永远不会设置一个服务器,其中root可以SSH进入! 严重的安全缺陷。 以该用户的身份创build一个普通的用户帐户(允许su或sudo)和SSH。
您可以使用环回适配器基本上响应127.0.0.0/8networking中的任何地址来分配一个名称。
所以,而不是绑定到端口4321可以绑定到127.1.2.3:4321。 然后只需设置一个主机条目,将名称映射到您使用的环回地址,以便foo.bar映射到127.1.2.3 。
在我的pipe理工作站上的SSHconfiguration中,我configuration了许多隧道,以便它们绑定到环回范围中的某个地址,并且在我的主机文件中有条目,所以我使用相同的端口并行打开了许多隧道,并通过它们区分名称。
所以如果你这样连接
ssh [email protected] -g -L 127.1.2.3:4321:localhost:28017
而你的hosts文件有这样的一行。
127.1.2.3 my.tunnel.name
那么你应该能够从本地机器连接到my.tunnel.name:4321。
如果您的networking上有更多的IP地址空间,您的ssh客户端连接到您甚至可以分配一个辅助地址到您的以太网接口并使用您的一个真实的IP,然后在您的DNS中设置条目,如果您希望其他系统能够使用你的SSH隧道。
-L选项-L [bind_address:]port:host:hostport将允许您使用本地系统上的任何有效IP地址进行绑定。 你也需要包含-g选项,如果你想让其他主机能够通过你的SSH隧道进行连接。
用你的SSH隧道创build一个dynamic的应用程序级的端口转发(基本上是socks代理),然后通过这个指向你的应用程序。 要创build一个dynamic隧道,连接如下:
ssh [email protected] -D 127.0.0.1:31337
然后configuration您的应用程序使用它作为SOCKSv5代理。
如果你想要绑定一个主机名,只需要添加指向127.0.0.1的/etc/hosts条目,但是更好的方法是为第一个隧道添加127.0.0.2,为这个添加127.0.0.2。如果为127.0.0.1添加别名,有时候这个别名会出现在localhost的其他命令查找中,这可能会令人困惑!
要顺利使用这个在浏览器中,你可以使用代理插件,作为一个例子,我喜欢Chrome浏览器,为这个我使用一个名为Proxy Switchy!的插件Proxy Switchy! 。 你可以在这里下载:
https://chrome.google.com/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj
在这个插件的configuration中,我可以定义几个独立的代理,然后绑定主机/ URL的正则expression式来使用某些代理,这样我总是可以正确的redirect到正确的隧道,而不必手动切换。 请让我知道,如果你需要进一步澄清任何步骤!