SSH端口映射

SSH端口映射包括远程和本地两种方式,允许穿越网络限制访问服务。通过`ssh-R`实现远程端口映射,将局域网主机的端口映射到可访问外网的主机上;而`ssh-L`用于本地端口映射,将远程主机的端口映射到本地。使用`-N`和`-T`参数可以优化端口转发,autossh工具则用于保持SSH连接的持久性,配合systemd等服务管理工具可应对断电重启情况。

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

SSH端口映射

1. 远程端口映射

1.1 什么是远程端口映射

将局域网内的某个主机的端口映射到远程主机的某个端口, 使得访问了远程某个主机端口就像直接来访问局域网的某个端口一样

1.2 测试案例
  • 考虑主机A局域网, 开了22端口的ssh服务, 不能访问外网
  • 考虑主机B局域网, 能访问外网
  • 远程主机C, 开启了ssh服务, 具有固定的外网IP
  • 想通过远程主机C的20022端口访问局域网主机A的ssh服务
    主机B上执行命令
ssh -R 20022:A的ip地址:22 root@C的ip地址

然后在外网的主机C上指向如下命令,即可登录到A主机

ssh -p 20022 root@127.0.0.1
  • 没有主机A,就映射B自己的22端口
    则在主机B上执行
ssh -R 20022:127.0.0.1:22 root@C的ip地址

2. 本地端口映射

2.1 什么是本地端口映射

将远程主机的某个端口映射到本主机的某个端口, 使得可以直接通过访问到本主机的某个端口和来访问远程主机的端口

2.2 测试案例

和 1.2 主机情况一模一样

  • A在局域网不能访问外网
  • B在局域网但能访问外网, 且B能通过ssh登录到C主机上
  • C远程主机, 开启了ssh服务(22号端口)

现在在A主机上,想访问自己的20022端口来直接访问C主机的ssh服务
主机A执行如下命令

ssh -L 20022:C的ip:22 root@B的ip地址

通过B这个桥梁来访问到C的端口

3. 其它重要问题

3.1 关于端口转发常用的参数
  • -N参数, 不指定远程命令,只用于转发
  • -T参数, 不分配一个伪终端
    这样在端口映射时, 就不会给你分配终端了, 所以最终命令类似是这样
ssh -NT -L 20022:remote_ip:remote_port root@ip
3.2 监控保活
  • 一般ssh连接, 可能一般使用几个小时可能没问题,但是如果想长久后台使时间久了就会断开
  • 为了解决这个问题, 使用autossh就可以了, 用apt或者yum命令可以直接安装
  • 参数和ssh基本是一模一样的, 就额外多一个参数 -M 参数, 指定一个端口用来监控这个ssh连接
    所最最终的命令像是这样
autossh -M 5678 -NT -L 20022:remote_ip:remote_port root@ip
3.3 断电重启

这个问题倒不是ssh所能解决的问题, 可以使用linux相关的一些服务, 最最常用的systemd来管理

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值