茗宸博客网

  • 首页
  • 数据通信
    • 华为
    • 思科
    • 浪潮科技
    • 锐捷
  • 硬件瞎折腾
    • 电脑折腾
    • 软路由
    • 服务器
    • 私有NAS
    • FPV无人机瞎折腾
  • 网络安全
    • CTF经验
    • 实战环境
    • 渗透实战
    • 蓝队加固
    • 近期赛事
    • 漏洞分享
  • 网络技术
    • 网络基础
    • 网络技术精品
    • linux基础
    • 计算机基础
  • 编程学习
    • python
  • 运行维护
  • 服务器搭建
  • 资源分享
  • 随手笔记
    • 随手笔记之ensp
    • 随手笔记之mysql
  • 日常
    • 拍摄
茗宸博客
随手笔记
  1. 首页
  2. 网络技术
  3. linux基础
  4. 正文

SSH端口转发实现穿透内网

2024年9月19日 33点热度 0人点赞 0条评论
内容目录

今天遇到RD要在外网访问内网服务器的需求。公司用的电信宽带,浮动ip,直接路由器端口转发这条路行不通。联想到ssh端口转发,配合一个外网固定ip的服务器作为跳板,结合SSH隧道,就能成功实现内网穿透。本文介绍具体操作步骤。

SSH端口转发实现穿透内网

假设有本地内网服务器A,外网服务B(固定IP)。为了进行端口转发,需要从A ssh连到B(建立隧道)并监听端口。达到该目的的命令是:

ssh -R 外网监听端口:本地服务器:本地端口 username@host

例如要将B上的8081端口请求转发到A,则在A上运行命令:

ssh -R 8081:localhost:8080 username@hostB

该命令会建立一个A到B的连接,并在B上监听8081端口,将该端口收到的请求转发到A的8080端口。在连接到的B的终端上输入: netstat -nltp| grep sshd 或者 ss -lntp | grep sshd,可以看到sshd进程已经在监听8081端口。

离正式使用还差一步:B的8081端口只监听了本地(127.0.0.1或者::1),意味着其他用户不同通过 “http://B:8081” 访问A上的内容。这是因为ssh默认不允许远程主机进行端口转发。为了启用端口转发,编辑 /etc/ssh/sshd_config文件,找到 GatewayPorts 选项,配置为:

GatewayPorts yes

重启sshd服务并重新连接到B,打开浏览器,输入”http://B:8081″,访问到的内容和 “http://A:8080” 将会一致。

如果只是进行端口转发,就没必要登录到B上并打开终端。ssh命令的-R参数可以配合-f和-N一起使用,达到静默连接和转发的效果。运行命令:

ssh -fNR 8081:localhost:8080 user@hostB

-f参数表示后台执行,-N表示不执行远程命令。该命令只建立连接,不分配终端,进程后台执行,连接成功后终端控制权马上交给用户。

解决了内网穿透问题,接下来是浮动ip问题。浮动ip会导致建立的ssh连接断开,转发就失效了。为了让转发长时间有效,保证服务的可用性,可以定时检测ssh连接,断线自动重连。以下是断线重连的脚本:

#!/usr/bin/bash
​
while true
    do
        RET=`ps ax | grep "ssh" | grep -v grep`
        if [ "$RET" = "" ]; then
            echo "the recent ssh disconnect at `date`" >> ~/check.log
            echo "restart ssh connect"
            ssh -fNR 8081:localhost:8080 user@host
        else
            echo "ssh connect at `date`"
            break;
        fi
    done

为了自动重连,你需要先配置ssh免密登录。然后配置crontab定期执行脚本: */2 * * * * 脚本路径。如此一来内网穿透和浮动ip的问题就都解决了。

其他

可以使用ngrok、花生壳、frq等内网穿透工具打到同样的效果,但是需要安装客户端。

标签: 暂无
最后更新:2024年9月19日

站长

这个人很懒,什么都没留下

点赞
< 上一篇
下一篇 >

文章评论

您需要 登录 之后才可以评论

站长

这个人很懒,什么都没留下

最新 热点 随机
最新 热点 随机
Mbps、Kbps、bps 与 MB、KB、B 区别/联系/换算 Linux systemctl 命令 linux的service IPTABLES一文通 网安路线图 DOS相关常用命令了一篇了解大全
IPTABLES一文通linux的serviceLinux systemctl 命令Mbps、Kbps、bps 与 MB、KB、B 区别/联系/换算MYSQL数据库学习记录DOS相关常用命令了一篇了解大全
看完秒懂负载均衡 MBR和GPT分区表详解 记一次梯云纵搭建【不适合0基础】 OSPF : 区域 / 为什么非骨干互访需要经过骨干 一文双篇(快速搞懂TCP/UDP协议区别) 计算机网络各层网络设备(中继器、集线器、网桥、交换机、路由器、网关)总结
文章目录
    • SSH端口转发实现穿透内网
    • 其他

COPYRIGHT © 2023 茗宸bk. ALL RIGHTS RESERVED.

站长微信:printJ7

鲁ICP备2024114188号

鲁公网安备37130202372760号