1、安装sshpass(CentOS7)

rpm -ivh sshpass-1.06-1.el7.x86_64.rpm

若内网无法连接网络,可下载后,在上传至内网服务器,下载地址:
https://centos.pkgs.org/7/epel-x86_64/sshpass-1.06-1.el7.x86_64.rpm.html

2、内网服务器的操作

ssh -N -v -R 外网服务器端口:127.0.0.1:内网服务器端口 外网服务器用户@外网服务器ip,如:

ssh -N -v -R 8080:127.0.0.1:8090 root@120.79.255.186

该命令在内网服务器执行,执行完之后,需要输入外网服务器用户对应的密码,之后,外网服务器120.79.255.186:8080 的所有请求,都会被转发至内网服务器的8090端口。
但是执行完之后,会话不能关闭,否则端口映射会失效,可使用如下命令让映射运行在后台:

nohup sshpass -p ‘外网服务器密码’ ssh -N -v -R 8080:127.0.0.1:8090 root@120.79.255.186 > 8080.out

端口映射的日志,会输出到当前目录的8080.out文件中

3、外网服务器的配置

3.1.打开 /etc/ssh/sshd_config,将GatewayPorts参数设为yes
3.2.systemctl restart sshd.service,重启ssh服务
注意:较低版本的Linux服务器 重启命令为 service sshd restart
3.3. 解决Linux服务器 FIN_WAIT2 连接过多的问题:
修改/etc/sysctl.conf文件:
net.ipv4.tcp_syncookies = 1
表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭
net.ipv4.tcp_fin_timeout = 30
表示如果套接字由本端要求关闭,这个参数决定了它保持在FIN-WAIT-2状态的时间。
net.ipv4.tcp_max_syn_backlog = 8192
表示SYN队列的长度,默认为1024,加大队列长度为8192,可以容纳更多等待连接的网络连接数。
net.ipv4.tcp_max_tw_buckets = 5000
表示系统同时保持TIME_WAIT套接字的最大数量,如果超过这个数字,TIME_WAIT套接字将立刻被清除并打印警告信息。默认为180000,改为5000。

4、保持ssh长连接

如果仅仅是以上配置,端口映射无法长时间维持,时间长了,可能会断掉。
方法1:
修改外网服务器配置文件/etc/ssh/sshd_config
ClientAliveInterval 60 #server每隔60秒发送一次请求给client,然后client响应,从而保持连接
ClientAliveCountMax 3 #server发出请求后,客户端没有响应得次数达到3,就自动断开连接
配置完之后,通过命令’systemctl reload sshd’重启

方法2:
修改内网服务器配置文件/etc/ssh/sshd_config
ServerAliveInterval 60 #client每隔60秒发送一次请求给server,然后server响应,从而保持连接
ServerAliveCountMax 3 #client发出请求后,服务器端没有响应得次数达到3,就自动断开连接

说明:
1、端口映射需要开通22端口,ssh的端口映射,是通过22端口实现的
2、内网服务器应用重启,不需要重新执行端口映射的命令
3、执行端口映射的命令后,外网服务器的映射端口会被占用,故使用的进程不能被关闭,否则端口映射失效

linux内网穿透(内外网服务器端口映射)相关推荐

  1. SSH配置和安装,花生壳配置内网穿透,解决服务器拒绝了密码的问题

    前言: 问题描述: 广义上配置的SSH连接只能存在于局域网下,如果需要使用公网访问,需要将服务器挂在到公网上,这里我们使用了花生壳. 配置成功后,再次使用Xshell通过SSH进行连接(解决了服务器拒 ...

  2. 内网穿透实现实体服务器变云服务器:服务器无公网ip,如何提供公网网站,又如何异地ssh登录或者异地登录服务器的宝塔面板

    先说本经验的应用场景 up主的就业方向是开发网站前后端,有一台自己的实体服务器,没有公网IP,我希望: 能长久地提供任何人在任何地点都能用浏览器访问到的网站: 另外由于服务器存放在家里,我开学.旅游. ...

  3. 做内网穿透外网远程访问群晖NAS 1-2

    系列文章 做内网穿透外网远程访问群晖NAS 2-2 如何在群晖NAS上安装cpolar内网穿透 配置群晖NAS中的cpolar开机自启动 1-2 配置群晖NAS中的cpolar开机自启动 2-2 为公 ...

  4. 做内网穿透外网远程访问群晖NAS 2-2

     系列文章 做内网穿透外网远程访问群晖NAS 1-2 做内网穿透外网远程访问群晖NAS 2-2 如何在群晖NAS上安装cpolar内网穿透 配置群晖NAS中的cpolar开机自启动 1-2 配置群晖N ...

  5. cpolar内网穿透外网远程访问本地网站

     系列文章 cpolar内网穿透工具 cpolar内网穿透可应用于哪些场景? cpolar内网穿透可以做什么? 如何下载安装并使用cpolar内网穿透 配置认证cpolar内网穿透 cpolar内网穿 ...

  6. 内网和外网之间的通信(端口映射原理)

    内网和外网之间的通信(端口映射原理) 首先解释一下"内网"与"外网"的概念: 内网:即所说的局域网,比如学校的局域网,局域网内每台计算机的IP地址在本局域网内具 ...

  7. 将外网服务器端口映射到本地端口

    需要在GPU服务器上运行一个Web项目,由于本人笔记本无独显(QAQ),于是需要借助外网的GPU服务器运行后端代码:并且我们还想在自己的localhost上显示出网站页面,于是借助SSH隧道代理端口的 ...

  8. tp841虚拟服务器,TP-Link新版路由器虚拟服务器(端口映射)设置方法

    摘 要 新版tplink路由器虚拟服务器的设置方法,虚拟服务器设置,通常又叫做:端口映射设置.端口转发设置等.虽然这个功能普通用户一般用不到,但是偶尔也有用户问起,所以还是简单的介绍下. 原标题:&q ...

  9. 解决:docker容器内可以访问web应用,端口映射到宿主机却无法访问,错误代码:curl: 56 Recv failure: 连接被对方重设

    解决:docker容器内可以访问web应用,端口映射到宿主机却无法访问,错误代码:curl: 56 Recv failure: 连接被对方重设 或者 curl: 52 Empty reply from ...

最新文章

  1. zabbix 概念理解
  2. 什么?Redis 的 QPS 是 MySQL 的 100 倍?
  3. 彻底搞懂视觉-惯性SLAM:基于VINS-Fusion(正式开课)
  4. 转载----Python的zip()函数
  5. Three20对图片进行缓存之后,利用缓存的图片来进行显示的方式
  6. 成功的九字真言(冯唐)
  7. [转]毕业五年决定你的命运-----值得所有不甘平庸的人看看
  8. python 内置方法的时间复杂度
  9. “智企云中享“,首届SAP中国云大会召开
  10. 【Kafka】GroupCoordinatorNotAvailableException - The coordinator is not available
  11. RxSwift中Observable的各种创建方法
  12. i5700 预,链接
  13. 面向对象 —— 类设计(十)—— 成员函数
  14. 绅士宝智能机器人怎样_如何打败“机器人淘汰三原则”
  15. yandex定位插件
  16. 多渠道归因分析(Attribution):python实现Shapley Value(四)
  17. numpy tolist()的用法
  18. 写代码的时候图片显示不出来怎么办?
  19. 看完这篇异地多活的改造,我决定和架构师 battle 一下 / 得物技术
  20. EOS Utility无法安装的问题解决

热门文章

  1. 转载:2014 Top Security Tools as Voted by ToolsWatch.org Readers
  2. 手机邮箱中的邮件里的链接的打开方式/app更改方法
  3. Day2:python爬虫基础学习(大嘘)
  4. 3D建模和渲染吃什么硬件?新手避坑指南
  5. HEXOFontmin
  6. 【论文翻译】Playing Atari with Deep Reinforcement Learning
  7. Not creating XLA devices, tf_xla_enable_xla_devices not set
  8. postgresSQL的FDE加密
  9. FastQC使用与结果详细解读
  10. 如何把视频嵌入PPT合为一个文件