SSH隧道
SSH隧道
SSH非常适合安全访问服务器,但SSH也有一些功能强大,鲜为人知的功能。其中一个更强大且常常未知的功能是隧道。
通过隧道,您可以将远程服务器上的端口转发到本地服务器上的端口。这对于Web开发人员尤其有用,因为它允许您在本地Web服务器和Internet之间创建一个隧道,允许任何人访问您的本地应用程序或网站。
要求
在开始之前,您需要拥有一个可以通过SSH访问的可公开访问的服务器。只要安装了SSH,它就可以是任何类型的服务器。
您还需要 GatewayPorts yes
在SSH服务器配置文件中进行设置。这通常位于 /etc/ssh/sshd_config
,但可能因您的系统而异。进行编辑后,请确保通过运行 sudo /etc/init.d/ssh restart
或重新启动SSH服务器 sudo service ssh restart
。
创建隧道
一旦完成所有设置,下一步就非常简单。你只需要运行:
$ ssh -N -R 3999:localhost:80 you@example.com
注意:您无需键入$符号
以下是每个部分的功能细分:
> ssh -N -R
这一切都开始了。-N
可以确保您还没有登录到远程服务器,-R
就是告诉SSH建立隧道。
> 3999:localhost:80
您可以在此处设置远程服务器的端口,本地服务器地址和本地服务器的端口。
第一个数字是您希望远程服务器侦听的端口。这可以是1024-65535之间的任何数字,如果您有一个设置,则需要确保在防火墙中允许该端口。接下来是本地服务器地址。在几乎所有情况下,这都是localhost。最后,最后一个数字是本地Web服务器正在侦听的端口。
> you@example.com
该命令的最后一部分是指定对服务器具有SSH访问权限的用户以及远程服务器的地址。
如果您已在DNS中为服务器设置域名,则可以使用它来访问隧道。否则,您将需要使用服务器的IP地址。
现在您已打开SSH隧道,使用浏览器中的转发端口转到远程服务器地址,例如 example.com:3999,应该允许您从任何有Internet连接的地方查看本地网站或应用程序。
设置需要一些工作,但SSH隧道非常适合共享或测试本地开发站点/应用程序。
Thanks.