「OpenSSH」- 端口转发 @20210129

本文详细解读SSH端口转发的三种方式——动态转发用于科学上网,本地转发实现本地服务映射,远程转发则内外网服务互访。涵盖配置方法、应用场景及注意事项,为开发者提供全面的指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

问题描述

本地转发,将本地连接转发到远程服务器;远程转发,将本地服务映射到远程主机的端口上;动态转发,类似于 SOCKS 代理功能。

该笔记将记录:与 SSH 端口转发有关的内容。

动态转发(SSH -D)

功能介绍

该功能实际上使用SOCKS协议,因此经常被用来科学上网。使用动态转发,只要是远程主机可以访问的站点,客户端也可以访问(所以说是科学上网嘛)。

如何配置

执行如下命令即可,然后配置应用程序,使用SOCKS协议即可。

ssh -D 8888 user@remoteserver

使用场景

1)网络加速。当时由SSH提供的SOCKS协议具有某些特征,容易被长城牌子的防火墙识别,因此作用也不是很大。

本地转发(SSH -L)

功能介绍

该功能在本地监听一个端口,该端口的连接被转发到远程主机的特定端口。相当于把远程端口映射到本地,即“将远程端口放在本地”。

如何配置

如下命令,监听本地的 9999 端口,任何访问 9999 的客户端,都相当于访问远程主机 xample.com 的80端口,但是流量是通过 remoteserver 的,并且所有流量都被加密:

ssh -L 0.0.0.0:9999:example.com:80 user@remote.server

# 上述命令涉及到三台主机:
# 本地主机:0.0.0.0
# 目标主机:example.com,这是我们要访问的主机
# 代理主机:remote.server,也是我们的跳板机

还有一种变体:目标主机与代理主机可以是同一台主机,即将remote.server服务映射到本地:

ssh -L 0.0.0.0:9999:127.0.0.1:6379 user@remote.server

出于安全考虑,在远程主机中的某个服务只监听了6379端口,但是另一台主机想访问该服务。此时,我们便可以将服务通过SSH映射到该主机上。

使用场景

1)流量加密。比如,你在远程主机上搭建HTTP代理,但是,如果你直接使用它,容易被发现(比如被防火墙屏蔽),这时可以加一层SSH转发,将远程的HTTP端口映射到本地。现在(09/21/2019)SOCKS协议已经可以被检测到,所以不要直接访问SOCKS主机,可以将流量通过SSH进行代理。

2)服务安全。比如,上面的“变体”,明白人已经看出来6379是REDIS服务了,由于REDIS的安全性较弱,可以通过该方法提高安全性(这只是一个主意,还有很多细节需要测试,比如性能、可用性、稳定性等等)。

远程转发(SSH -R)

功能介绍

与“本地转发”正好相反,该功能在远程监听一个端口,该端口的连接被转发到本地主机的特定端口。相当于把本地端口映射到远程,即“将本地端口放在远程”。

如何配置

如下命令,在远程主机上监听 1999 端口,访问 1999 端口的连接等同于访问本地的 902 端口

ssh -v -R 0.0.0.0:1999:127.0.0.1:902 user@remote.server

使用场景

1)内网服务映射。将在内网中的服务,通过远程主机暴露出来,提供给他人访问。

补充说明

通过 -N 选项,可使不执行任何命令。

参考文献

WikiNotes/端口转发
SSH Examples, Tips & Tunnels
SSH 端口转发
SSH port forwarding without session - Super User

### 在麒麟操作系统中使用 yum 安装 openssh-server 和 openssh-clients 并配置 SSH 服务 #### 安装 OpenSSH 服务器和客户端 在银河麒麟操作系统中,可以通过 `yum` 包管理器安装 `openssh-server` 和 `openssh-clients`。执行以下命令以完成安装: ```bash yum install -y openssh-server openssh-clients ``` 此命令将安装 SSH 服务器和客户端的相关组件[^1]。 #### 启动并设置 SSH 服务自启动 安装完成后,需要启动 SSH 服务,并将其设置为开机自启动: ```bash systemctl start sshd systemctl enable sshd ``` 通过上述命令,可以确保 SSH 服务在系统启动时自动运行[^2]。 #### 修改 SSH 配置文件 为了支持远程图形界面的转发功能,需要修改 SSH 服务的配置文件 `/etc/ssh/sshd_config`。具体操作如下: - 打开配置文件: ```bash vi /etc/ssh/sshd_config ``` - 将 `X11Forwarding` 选项设置为 `yes`,以启用 X11 转发功能: ```plaintext X11Forwarding yes ``` - 保存并退出编辑器后,重启 SSH 服务以使更改生效: ```bash systemctl restart sshd ``` #### 配置客户端环境 在客户端(如另一台麒麟系统)上,执行以下步骤以允许远程 X 界面连接: - 在客户端终端中运行以下命令,允许来自服务器的 X11 连接: ```bash xhost + 192.168.1.4 ``` - 设置显示变量,将远程显示界面定位到本地显示器: ```bash export DISPLAY=192.168.1.5:0.0 ``` #### 使用 SSH 连接并启用图形界面转发 通过以下命令从客户端连接到服务器,并启用 X11 转发功能: ```bash ssh -X root@192.168.1.4 ``` 此时,用户可以在本地打开远程服务器上的图形化界面[^3]。 #### 测试图形界面转发功能 在成功连接到服务器后,可以尝试运行一个图形化应用程序(如 `xclock` 或 `xterm`)以验证 X11 转发是否正常工作: ```bash xclock ``` 如果一切配置正确,图形窗口将在客户端显示器上显示。 --- #### 注意事项 - 确保防火墙规则允许 SSH 连接(默认端口为 22)。可以通过以下命令检查并开放端口: ```bash firewall-cmd --add-service=ssh --permanent firewall-cmd --reload ``` - 如果遇到“Error: no DISPLAY environment variable specified”的错误,请检查是否正确设置了 `DISPLAY` 变量[^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值