假设您正在本地计算机上开发 Web 应用程序,并且希望向其他开发人员显示预览。您没有公共 IP ,因此其他开发人员无法通过 Internet 访问该应用程序。
如果您可以访问远程 SSH 服务器,则可以按如下方式设置远程端口转发:
ssh -L 8080:127.0.0.1:3000 -N -f user@remote.host
上面的命令将使 ssh 服务器侦听端口 8080 并将从该端口到端口的本地计算机的所有流量隧道传输 3000 。
现在您的开发人员可以输入 the_ssh_server_ip:8080 他/她的浏览器并预览您的应用程序。
如果您有麻烦设置远程端口转发,确保 GatewayPorts 被设置为 yes 在远程 SSH 服务器配置。
动态端口转发动态端口转发允许您在充当 SOCKS 代理服务器的本地 (ssh 客户端)计算机上创建套接字。当客户端连接到此端口时,连接将转发到远程 (ssh 服务器)计算机,然后将其转发到目标计算机上的动态端口。
这样,使用 SOCKS 代理的所有应用程序将连接到 SSH 服务器,服务器将所有流量转发到其实际目的地。
在 Linux , macOS 和其他 Unix 系统中创建动态端口转发 (SOCKS) 将 -D 选项传递给 ssh 客户端:
ssh -R [LOCAL_IP:]LOCAL_PORT [USER@]SSH_SERVER
使用的选项如下:
[LOCAL_IP:]LOCAL_PORT - 本地机器的 ip 和端口号。当 LOCAL_IP 省略 SSH 客户端结合在本地主机。
[USER@]SERVER_IP - 远程 SSH 用户和服务器 IP 地址。
动态端口转发的典型示例是通过 SSH 服务器隧道传输 Web 浏览器流量。
以下命令将在端口上创建 SOCKS 隧道 9090 :
ssh -D 9090 -N -f user@remote.host
建立隧道后,您可以配置应用程序以使用它。本文介绍如何配置 Firefox 和 Google Chrome 浏览器以使用 SOCKS 代理。
必须为要对其进行隧道传输的每个应用程序单独配置端口转发。
在 Windows 中设置 SSH 隧道Windows 用户可以使用 PuTTY SSH 客户端创建 SSH 隧道。你可以在这里下载 PuTTY 。
启动 Putty 并在 Host name (or IP address) 字段中输入 SSH 服务器 IP 地址。
在 Connection 菜单下,展开 SSH 并选择 Tunnels 。检查 Local 单选按钮以设置本地, Remote 远程和 Dynamic 动态端口转发。
如果设置本地转发,请在该 Source Port 字段中 Destination 输入本地转发端口,然后输入目标主机和 IP ,例如 localhost:5901 。
对于远程端口转发,请在该 Source Port 字段中 Destination 输入远程 SSH 服务器转发端口,然后输入目标主机和 IP ,例如 localhost:3000 。
如果设置动态转发,则仅输入 Source Port 字段中的本地 SOCKS 端口。
单击 Add 按钮,如下图所示。
返回 Session 页面以保存设置,这样您每次都不需要输入它们。在 Saved Session 字段中输入会话名称,然后单击 Save 按钮。
选择已保存的会话,然后单击 Open 按钮登录远程服务器。
将显示一个询问您的用户名和密码的新窗口。输入用户名和密码后,您将登录到服务器并启动 SSH 隧道。
设置公钥验证将允许您在不输入密码的情况下连接到服务器。
总结我们已经向您展示了如何设置 SSH 隧道并通过安全的 SSH 连接转发流量。为了便于使用,您可以在 SSH 配置文件中定义 SSH 隧道,或创建将设置 SSH 隧道的 Bash 别名。
如果您遇到问题或有反馈,请在下面留言。
在Linux系统中创建SSH服务器别名 https://www.linuxidc.com/Linux/2019-05/158868.htm
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx