使用OpenSSH进行端口转发和代理

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com

介绍

SSH,也称为安全外壳,可用于获得远程外壳之外的更多功能。本文将演示如何将SSH用于端口转发和代理。

唯一的先决条件是OpenSSH服务器(默认在Vultr Linux映像上安装)和OpenSSH客户端(在Linux,BSD和MS Windows上可用)。

目的

SSH代理主要用于代理Web流量。例如,它可以用于保护您的Web通信免受不安全的本地网络的侵害。

SSH端口转发通常用于访问不可公开访问的服务。例如,您可以在服务器(例如Webmin)上运行系统管理Web界面,但出于安全原因,只能监听localhost上的连接。在这种情况下,您可以使用SSH将所选端口上的连接从本地计算机转发到服务正在侦听服务器端的端口,从而使您可以通过SSH隧道远程访问此特定服务。使用SSH端口转发的另一种常见情况是通过SSH隧道访问远程专用网络上该主机上的主机的服务。

用法

代理和端口转发都不需要在服务器上进行任何特殊配置。但是,始终建议在SSH中使用基于密钥的身份验证。请阅读如何生成SSH密钥。

SSH代理

创建SSH代理非常简单,一般语法如下:

ssh -D [bind-address]:[port] [username]@[server]

哪里 [bind-address] 是要监听的本地地址, [port] 是要监听的本地端口, [username] 是您服务器上的用户名,并且 [server] 是服务器的IP地址或主机名。
如果 [bind-address] 未指定,SSH将默认为 localhost 在大多数情况下这是理想的。

这是一个实际的例子:

ssh -D 8080 [email protected]_server

为了使用此代理,您必须配置浏览器以使用 SOCKSv5 作为代理类型和 8080 作为代理端口。

SSH端口转发

该命令的一般语法如下:

ssh -L [localport]:[remotehost]:[remoteport] [username]@[server]

哪里 [localport] 是SSH客户端监听的端口, [remotehost] 是将连接转发到的主机的IP地址。这是 127.0.0.1 如果您正在建立与服务器的连接隧道。最后, [remoteport] 是您要连接到的服务所使用的服务器上的端口号。

范例1:

考虑在端口上运行重要的Web服务 10000 在您的服务器上,但不能公开访问。以下命令将用于建立到该服务的SSH隧道。

ssh -L 80:127.0.0.1:10000 [email protected]_server

您现在可以通过键入以下内容进行连接 http://127.0.0.1 在您的本地浏览器中。

范例2:

您在专用网络上有两个Vultr服务器。一个正在运行Linux发行版,另一个正在运行MS Windows。在Windows实例上,RDP服务器正在运行,但出于安全原因未公开到Internet。假设 192.168.1.5 是Windows计算机的专用IP地址,您可以使用以下命令通过计算机上的端口连接到远程桌面服务器:

ssh -L 3389:192.168.1.5:3389 [email protected]_server

现在,从计算机到自身的任何RDP连接都将通过Linux服务器传送到Windows服务器。

注:本教程在Vultr VPS上测试通过,如需部署请前往Vultr.com