我有一个工作的networking锁在防火墙后面,只有使用代理服务器才能连接Internet。 在工作中,我可以连接到分布在整个networking上的数据库。
但是,在家里,我无法连接到代理服务器或数据库。
如何才能做到这一点? 我可以通过LogMeIn访问我的工作站,所以我可以安装任何东西。
我想在我的工作站中安装某种隧道机制。 然后,在家里,我可以连接到这个机制,从而进行所需的连接。
所以基本上,我想要做的可以用下面的图来表示: Home => Workstation => Database 。 例如,只要我在家连接到10.140.0.1:1234,就会被redirect到我的工作站的10.140.0.1:1234,因为10.140.0.1:1234只能通过公司networking使用。
注意:我正在使用Windows XP。
如果你可以将OpenSSH加载到你的工作站计算机上(比如Cygwin的openssh软件包),你可以使用一个名为corkscrew的代理helper来使OpenSSH客户端通过代理进行隧道传输。 Cygwin有一个corkscrew包,所以如果你已经安装了Cygwin,使用起来很方便。 阅读corkscrew手册页,了解其configuration的说明(我相信这是对/etc/ssh_config的一个简单的单行添加)。
接下来,您需要使您的家用PC成为工作站上ssh客户端连接的可靠端点,为此,您需要运行sshd守护进程。 再次,Cygwin是获得它的一个地方:安装openssh软件包,然后运行ssh-host-config脚本来创buildsshd服务。 接受每个configuration脚本的问题的默认答案。
由于你的家用电脑是在NAT路由器的后面(正确的?),将TCP端口22转发到你的电脑,并把这个端口作为你电脑防火墙的一个例外。 这是一个安全风险,所以采取适当的预防措施(留作练习)。
最后,创build一个隧道将您的家庭PC上的连接传输到公司数据库:login到您的工作站(通过LogMeIn),然后打开一个隧道回到您的家用电脑,如下所示(在Cygwin bash shell中):
ssh -N -R 1234:10.140.0.1:1234 [email protected]
其中username是连接到你的sshd服务器的用户的名字,而xxx.xxx.xxx.xxx是你的家庭路由器的真正可路由的IP地址。 您在家用电脑上的任何与localhost:1234连接都将通过隧道转发到10.140.0.1:1234 ,这样看起来好像企业数据库正在监听您的家用PC的TCP端口1234.完成后,你可以用Ctrl-Cclosures工作站上的ssh命令来closures隧道。