SSH 端口转发
本文用于记录一下 SSH 端口转发功能的学习笔记,以做备忘,主要参考文章如下:
SSH 不仅可以远程登录,还有一个非常实用的功能:端口转发。
SSH 端口转发又叫 SSH 隧道(tunnel),是在 SSH 连接的基础上,通过将客户端或服务器端的某个端口的数据放到 SSH 连接中加密传输,从而在不安全的网络中安全的传输数据或者绕过防火墙的限制实现对目的主机目的端口的访问的一个功能。
端口转发有两个主要作用:
(1)将不加密的数据放在 SSH 安全连接里面传输,在不安全的网络或不受信任的网络提供安全连接,比如通过端口转发访问 Telnet、FTP 等明文服务,数据传输就都会加密,或者在不安全的公用网络中,利用信任的 SSH 服务器访问网络或邮件服务器。
(2)绕过防火墙的限制实现对目的主机的访问。
端口转发有三种使用方法:本地端口转发,远程端口转发,动态端口转发。
本地端口转发(本地隧道)
本地端口转发 是指在 SSH 连接的基础上,将远程的 SSH 服务器作为中介,建立一个本地客户端主机到目的主机(第三台主机)的连接,将对于本地客户端主机指定端口的访问通过 SSH 连接转发给 SSH 服务器,再由 SSH 服务器发到目标主机的目标端口,同时将结果传回。由于被转发的端口位于本地客户端,所以就叫做本地端口转发。本地被转发的端口类似于隧道的的入口,目标主机的目标端口类似于隧道的出口。
创建本地端口转发的命令格式如下:
ssh -L 本地端口:目标主机:目标端口 uesr@host [-N]
- 这个命令在本地客户端主机执行,它在建立端口转发的同时也建立了基本的 SSH 连接;
- -L 选项表示建立本地端口转发,在之后本地端口、目标主机、目标端口之间用 :(冒号)隔开;
- user@host 是登录 SSH 服务器的用户名与地址;
- -N 选项(可选)表示这个 SSH 连接只进行端口转发ÿ