linux下使用SSH实现端口映射

场景

在实际的开发过程中,需要在外边主机访问局域网内的内网端口,可以将远端服务器一个端口remote_port绑定到本地端口port,其中-C是进行数据压缩,-f是后台操作,只有当提示用 户名密码的时候才转向前台。-N是不执行远端命令,在只是端口转发时这条命令很有用处。-g 是允许远端主机连接本地转发端口。-R表明是将远端主机端口映射到本地端口。如果是-L,则是将本地端口映射到远端主机端口。

1、转发到远端。

ssh -C -f -N -g -L 本地端口:目标IP:目标端口 用户名@目标IP

2、转发到本地。

ssh -C -f -N -g –R 本地端口:目标IP:目标端口 用户名@目标IP

命令说明:

-C:压缩数据传输。

-f :后台认证用户/密码,通常和-N连用,不用登录到远程主机。

-N :不执行脚本或命令,通常与-f连用。

-g :在-L/-R/-D参数中,允许远程主机连接到建立的转发的端口,如果不加这个参数,只允许本地主机建立连接。

-L 本地端口:目标IP:目标端口

将本地机(客户机)的某个端口转发到远端指定机器的指定端口。工作原理是这样的, 本地机器上分配了一个 socket 侦听port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 同时远程主机和 host 的 hostport 端口建立连接。 可以在配置文件中指定端口的转发.。只有 root 才能转发特权端口。IPv6 地址用另一种格式说明: port/host/hostport。

-R本地端口:目标IP:目标端口

将远程主机(服务器)的某个端口转发到本地端指定机器的指定端口。工作原理是这样的, 远程主机上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转向出去, 同时本地主机和 host 的 hostport 端口建立连接.。可以在配置文件中指定端口的转发。只有用 root 登录远程主机才能转发特权端口。IPv6 地址用另一种格式说明: port/host/hostport。

-p :被登录的ssd服务器的sshd服务端口。

-D port

指 定一个本地机器 “动态的'’ 应用程序端口转发. 工作原理是这样的, 本地机器上分配了一个 socket 侦听 port 端口, 一旦这个端口上有了连接, 该连接就经过安全通道转发出去, 根据应用程序的协议可以判断出远程主机将和哪里连接. 目前支持 SOCKS4 协议, 将充当 SOCKS4 服务器. 只有 root 才能转发特权端口. 可以在配置文件中指定动态端口的转发。

 

### SSH 端口映射配置教程 #### 一、使用 Nginx 反向代理 SSH 隧道转发实现内网端口映射 可以通过 SSH 的 `-R` 参数创建一个反向隧道,将本地的某个服务暴露到远程服务器上。具体命令如下: ```bash ssh -R 7000:localhost:8080 user@remote_ip ``` 这条命令的作用是将在 `localhost:8080` 上运行的服务通过 SSH 转发到远程服务器上的 `7000` 端口[^1]。 --- #### 二、通过路由器端口映射实现 SSH 登录 如果目标设备位于局域网中,则需要在路由器上配置端口映射来允许外部访问。以下是具体的配置方法: ##### 1. 添加转发规则 进入路由器管理界面,导航至 **【转发规则】->【虚拟服务器】** 页面,添加一条新的记录: - **服务(外部)端口**: 设置为大于等于 9000 的任意可用端口(建议避开常用端口)。这是外网用户用来访问的目标端口。 - **内部端口**: 默认填写为 22,表示要映射的是 SSH 服务的标准端口。 - **IP 地址**: 输入目标计算机的实际 IP 地址,可以在路由器的 DHCP 客户端列表中查找对应机器的地址。 - **协议**: 选择 ALL 表示支持 TCP UDP 流量传输。 完成上述设置保存并应用更改之后,就可以从互联网上通过以下方式连接该设备: ```bash ssh username@public_ip -p external_port ``` 例如: ```bash ssh zguo@115.24.161.110 -p 9085 ``` 此过程实现了对外部网络开放特定主机的 SSH 访问权限[^2]。 --- #### 三、关于随机端口的选择 当不需要指定固定的外网端口时,可以选择让系统自动分配一个未被占用的随机端口作为出口通道。“内网端口”则应依据实际提供服务的应用程序设定其监听位置;比如常见的有SSH服务使用的22号端口、Windows Remote Desktop采用的3389以及数据库管理系统MS SQL Server所依赖的1433等等[^3]。 --- #### 四、针对 VMware 虚拟环境下的 NAT 模式调整 对于那些部署于 Linux 平台之上的 VMware Workstation 中的虚拟实例而言,若想达成跨公网对其实施远控的目的,则除了前述提到的基础步骤之外还需额外注意一点——即修改宿主操作系统里有关 vmnet8 接口的相关参数文件(/etc/vmware/networking),确保其中包含了恰当形式表述出来的子网掩码长度字段(subnet bits)[^4]。 --- ### 常见问题及其解决方案 1. **无法建立初始会话** 如果尝试启动 session 失败,请确认防火墙策略是否阻止了必要的通信路径,并验证公钥认证机制或者密码输入无误后再重试一次完整的握手流程。 2. **连接超时错误** 这通常意味着中间存在路由可达性的障碍或者是目的地址根本不存在有效响应实体的情况发生。检查DNS解析结果正确与否的同时也要保证物理链路质量良好稳定不中断。 3. **权限不足报错** 当遇到类似 'Permission denied (publickey)' 提示的时候,可能是因为缺少正确的身份凭证材料所致。务必上传个人私钥副本给目标节点接受检验并通过后才能继续前进下去。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

liangshitian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值