![如何为 SSH 隧道分配主机名](https://linux22.com/image/571969/%E5%A6%82%E4%BD%95%E4%B8%BA%20SSH%20%E9%9A%A7%E9%81%93%E5%88%86%E9%85%8D%E4%B8%BB%E6%9C%BA%E5%90%8D.png)
我正在使用 建立从我的 MacBook 到托管服务提供商的专用服务器的隧道。它运行良好。现在我想访问远程服务器上的几个管理站点(MongoDB 状态页面、RabbitMQ 页面等,都在不同的端口上)。它们都绑定到远程计算机上的 127.0.0.1。我如何调整此 ssh 命令以ssh [email protected] -g -L 4321:localhost:28017
- 为隧道指定一个名称,并在浏览器中使用例如“my.tunnel.name”
- 能够在我的浏览器中定义远程端口;我想连接到 my.tunnel.name:port,以便能够调用不同的站点
使用 ssh 可以实现吗?我已经阅读了手册页并在 Google 上搜索了两天,但似乎不起作用。
--编辑 2012-06-01 23:36-- 感谢提供的答案和评论,端口转发现在可以使用
ssh [email protected] -D 4321
我可以在浏览器中将其设置为代理,这样浏览器就会将对 localhost:anyport 的任何请求视为在远程服务器上发出的请求。现在无需使用名称,因为浏览器仅适用于远程服务器站点。
答案1
你所描述的情况是不可能的。不过还是有好消息的:
但是,可以与 SSH 服务器建立动态连接。这将打开本地计算机上的一个端口,您可以将浏览器的代理设置指向该端口,并允许您将隧道用作代理服务器。但您必须在浏览器中输入主机名/ip 和端口,就像浏览器在 SSH 服务器所在的机器上运行一样。
命令如下所示: 然后将您的浏览器的代理指向。ssh [email protected] -D 1234
localhost:1234
因此,如果您通过隧道进入服务器 A,并想要连接到服务器 B,您可以在浏览器中输入您在服务器 A 上运行的浏览器中输入的任何地址。如果在服务器 A 上运行的浏览器无法连接到服务器 B(如果服务器 B 上的进程仅监听 127.0.0.1),那么您仍然无法连接。听起来您只有一台服务器,但我想确保这一点很清楚。
如果您只有一台服务器,则可以使用动态连接隧道进入该服务器,并设置代理。然后,您将能够在浏览器中输入“localhost:1234”(例如),它将连接到在端口 1234 上运行的远程服务器上的服务。
安全注意事项:永远不要设置 root 可以通过 SSH 访问的服务器!存在严重的安全漏洞。创建一个普通用户帐户(允许 su 或 sudo)并以该用户身份通过 SSH 访问。
答案2
您可以利用环回适配器基本上会响应 127.0.0.0/8 网络中任何地址的事实来分配名称。
因此,您可以绑定到 127.1.2.3:4321,而不是绑定到端口 4321。然后只需设置一个主机条目,将名称映射到您使用的环回地址,这样 foo.bar 就会映射到127.1.2.3
。
在我的管理工作站上的 SSH 配置中,我配置了许多隧道,以便它们绑定到环回范围内的某个地址,并且我的主机文件中有条目,因此我使用相同的端口并行打开许多隧道并通过名称区分它们。
所以如果你像这样连接
ssh [email protected] -g -L 127.1.2.3:4321:localhost:28017
你的 hosts 文件里有这样的一行。
127.1.2.3 my.tunnel.name
然后您应该能够从本地机器连接到 my.tunnel.name:4321。
如果您的 ssh 客户端所连接的网络上有额外的 IP 地址空间,您甚至可以为您的以太网接口分配一个辅助地址并使用您的一个真实 IP,然后在您的 DNS 中设置条目(如果您希望其他系统能够使用您的 SSH 隧道)。
-L 选项-L [bind_address:]port:host:hostport
将允许您使用本地系统上的任何有效 IP 地址进行绑定。-g
如果您希望其他主机能够通过 ssh 隧道进行连接,您也需要包含该选项。
答案3
使用 SSH 隧道创建动态应用程序级端口转发(基本上是 socks 代理),然后通过该隧道指向您的应用程序。要创建动态隧道,请按如下方式连接:
ssh [email protected] -D 127.0.0.1:31337
然后配置您的应用程序以将其用作 SOCKSv5 代理。
如果您想要将主机名绑定到此,只需添加/etc/hosts
指向 127.0.0.1 的条目,但更漂亮的方法可能是为第一个隧道添加 127.0.0.2,为此添加一个主机条目,为第二个隧道添加 127.0.0.3,并为这个添加一个单独的主机条目,等等。如果您为 127.0.0.1 添加别名,有时这个别名会出现在 localhost 的其他命令查找中,这可能会造成混淆!
要在网页浏览器中顺利使用此功能,您可以使用代理插件,例如,我偏爱 Chrome 网页浏览器,对于此浏览器,我使用名为 的插件Proxy Switchy!
。您可以在此处下载:
https://chrome.google.com/webstore/detail/caehdcpeofiiigpdhbabniblemipncjj
在此插件的配置中,我可以定义几个单独的代理,然后绑定主机/URL 的正则表达式以使用某些代理,这样我就可以始终通过正确的隧道正确重定向,而无需手动切换。如果您需要进一步说明任何步骤,请告诉我!