SSH隧道

4 分钟读完

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.