广告位
使用OpenSSH进行端口转发和代理
作者: 分类:Linux浏览(2,480)2019-11-8

介绍

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

唯一的先决条件是服务器和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]未指定,localhost则在大多数情况下SSH将默认为默认值。

这是一个实际的例子:

ssh -D 8080 root@your_server

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

SSH端口转发

该命令的一般语法如下:

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

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

范例1:

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

ssh -L 80:127.0.0.1:10000 root@your_server

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

范例2:

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

ssh -L 3389:192.168.1.5:3389 root@your_server

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

图片压缩在线工具 tools online