本地机器具有公共IP。
远程计算机正在客户端运行。 我有充分的机会,但它没有一个公共的IP。 目前我们正在使用TeamViewer远程访问这台机器,但我们宁愿使用基于x11vnc的解决scheme。
是否有某种守护程序或软件可以在远程机器上运行,以便在启动时可以通过SSH(也许是通过隧道?)。
(123.45.6.78) local .-,( ),-. __ _ .-( )-. Remote [__]|=| ---->( internet )-------> __________ ------> ____ __ /::/|_| '-( ).-' [_...__...°] | | |==| '-.( ).-' |____| | | /::::/ |__|
以下解决scheme的工作如下:
Local .-,( ),-. __ _ .-( )-. Gateway RemoteX [__]|=| ---->( internet )-------> __________ ------> ____ __ /::/|_| '-( ).-' [_...__...°] | | |==| '-.( ).-' |____| | | /::::/ |__|
你可以通过ssh的ProxyCommand工具来做到这一点。 将以下内容添加到您的$HOME/.ssh/config文件中。 创build它,如果它不存在与这个内容:
Host RemoteX User userint ProxyCommand ssh userext@Gateway nc RemoteX %p Host RemoteY User userint ProxyCommand ssh userext@Gateway nc RemoteY %p
然后连接到不同的内部远程服务器,如下所示:
$ ssh RemoteX -or- $ ssh RemoteY
就这个特性而言,这是冰山一angular。 查看标题为: 通过中间人服务器的SSH隧道 – 如何一步连接(使用密钥对)? , 更多细节。
注意:上面的方法正在使用一个叫做nc (netcat)的工具,它应该在任何主要的发行版本库中。
一个Host节,许多主机。
Host *.mydom.com * ProxyCommand ssh externalserver nc %h %p
一个主持节,为许多用户。
将Hosts节添加到系统的/etc/ssh/ssh_config文件中,以便任何login到该框的人都可以使用它。
如果您遇到“远端”系统波动的情况,您可以使用dynamicDNS服务(DDNS) ,如noip 。 这些服务有十几种,有的是免费的,有的是有偿的。
这些服务的基本思想是,他们会给你一个静态的名字,比如me.noip.org并在“远程”客户端上运行一个小的守护进程工具。 在你的情况下,它可能是网关系统,甚至是远程系统之一。 这个守护进程将获得当前在互联网上分配的网关的IP,并将其中继到DDNS服务,然后将其列为me.noip.org的当前IP。 随着它的变化,它会随着时间的推移而更新。