SSH端口转发实现内网穿透的实现

我们局域网的机器能够访问外网,但是外网不能访问内网。因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址。(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持、不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh也是这个方法。

使用ssh命令链接公网服务器

1、首先在外网服务器上编辑sshd的配置文件

vim /etc/ssh/sshd_config
#将GatewayPorts 开关打开
GatewayPorts yes
重启sshd服务,使用修改生效(linux 版本不同命令可能会有差异)
systemctl restart sshd

2、命令

ssh -NTf -R <local-host>:<local-port>:<remote -host>:<remote-port> user@host

local-host 可省略
例如:ssh -NTf -R 8888:127.0.0.1:8080 root@host

3、参数说明

-C 允许压缩数据
-f 后台运行
-N 表示只连接远程主机,不打开远程shell
-R 将端口绑定到远程服务器,反向代理
-L 将端口绑定到本地客户端,正向代理
-T 不为这个连接分配TTY
-NT 代表这个SSH连接只用来传数据,不执行远程操作

保持ssh链接不断开

通常我们使用ssh 链接服务器的时候,如果长时间不操作,这个链接是会关闭的。

方法一、设置客户端

1)用户级别的设置

vim ~/.ssh/config(如果没有config创建一个)

2)全局设置

/etc/ssh/ssh_config

选择其中一个就可以,添加下面参数

#每隔60秒向服务器发送一个空包
ServerAliveInterval 60
#如果超过两次没成功就断开
ServerAliveCountMax 2
#转发失败后退出,便于重建连接
ExitOnForwardFailure yes 

临时写法(推荐,不影响他人)

ssh -o ServerAliveInterval=30 root@host
ssh -NTf -R 8888:127.0.0.1:8080 root@host -o ServerAliveInterval=30 -o ServerAliveCountMax=2

方法二、设置服务器端

vim /etc/ssh/sshd_config
#每隔30秒,服务器端向客户端发送心跳
ClientAliveInterval 30
#3次心跳无响应之后,会认为Client已经断开
ClientAliveCountMax 3

方法三、使用shell脚本

touch myAutoSSH.sh
因为我设置ssh连接是rsa免密认证,所以这里逻辑就不需要密码 

ssh免密登录方法

while(1)
do
  ssh -NTR <local-host>:<local-port>:<remote -host>:<remote-port> user@host
done

保证断开后立马就能连上把-f参数去掉 否则就死循环了

方法四、使用autossh

需要下载autossh软件,操作和直接使用ssh 差不多

-M是监听端口,监听命令是否有无响应的,帮我们保持链接的

autossh -M 5678 -NTR <local-host>:<local-port>:<remote-host>:<remote-port> user@host

我不喜欢下载软件-乱七八糟的软件装的很多,也不喜欢修改配置-修改后怕影响别人使用,所以我喜欢使用客户端临时配置的方式

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • SSH端口转发,本地端口转发,远程端口转发,动态端口转发详解

    第一部分 SSH端口转发概述 当你在咖啡馆享受免费 WiFi 的时候,有没有想到可能有人正在窃取你的密码及隐私信息?当你发现实验室的防火墙阻止了你的网络应用端口,是不是有苦难言?来看看 SSH 的端口转发功能能给我们带来什么好处吧! SSH端口转发概述 让我们先来了解一下端口转发的概念吧.我们知道,SSH 会自动加密和解密所有 SSH 客户端与服务端之间的网络数据.但是,SSH 还同时提供了一个非常有用的功能,这就是端口转发. 它能够将其他 TCP 端口的网络数据通过 SSH 链接来转发,并且自

  • SSH远程登录和端口转发详解

    介绍 SSH 是创建在应用层和传输层基础上的安全协议,为计算机上的 Shell(壳层)提供安全的传输和使用环境. SSH 只是协议,有多种实现方式,本文基于其开源实现 OpenSSH 远程登录 SSH主要用于远程登录: $ ssh user@host 当本地用户名和远程用户名一致时,可省略用户名: $ ssh host SSH 协议默认端口是22,指定端口可使用 -p 参数 $ ssh -p 2222 user@host MITM SSH 采用公钥加密的方式来保证传输安全.过程如下: 客户端发起

  • SSH端口转发实现内网穿透的实现

    我们局域网的机器能够访问外网,但是外网不能访问内网.因为内网访问互联网时候能确定外网的地址,外网却不能确定我们局域网内的具体地址.(ip地址有限)如果 我们在访问外网的时候,这个链接让他保持.不断,那么这个链接就相当于我们建了一条路,内网数据能出去,外网数据能进来,ssh也是这个方法. 使用ssh命令链接公网服务器 1.首先在外网服务器上编辑sshd的配置文件 vim /etc/ssh/sshd_config #将GatewayPorts 开关打开 GatewayPorts yes 重启sshd

  • vscode远程开发使用SSH远程连接服务器的方法「内网穿透」

    目录 1.安装OpenSSH 2.vscode配置ssh 3. 局域网测试连接远程服务器 4. 公网远程连接 4.1 ubuntu安装cpolar 4.2 创建隧道映射 4.3 测试公网远程连接 5. 配置固定TCP端口地址 5.1 保留一个固定TCP端口地址 5.2 配置固定TCP端口地址 5.3 测试固定公网地址远程 远程连接服务器工具有很多,比如XShell.putty等,可以通过ssh来远程连接服务器,但这用于写代码并不方便,可能需要现在本地写好代码后再将源代码传送到服务器运行.服务器上

  • 公网使用SSH远程登录macOS服务器的过程(内网穿透)

    目录 前言 1. macOS打开远程登录 2. 局域网内测试ssh远程 3. 公网ssh远程连接macOS 3.1 macOS安装配置cpolar 3.2 获取ssh隧道公网地址 3.3 测试公网ssh远程连接macOS 4. 配置公网固定TCP地址 4.1 保留一个固定TCP端口地址 4.2 配置固定TCP端口地址 5. 使用固定TCP端口地址ssh远程 前言 macOS系统自带有Secure Shell 客户端,它可让您登录到侦听传入SSH连接的远程服务器和台式机.我们可以用ssh user

  • linux ssh端口转发的三种方式

    ssh是我使用最频繁的两个命令行工具之一(另一个则必须是vim).有了ssh,我可以远程处理各种可能出现的问题而无需肉身到现场. 这几天teamviewer被黑的事情影响挺大,于是由远程控制想到了内网穿透,自然而然的想到了ssh的端口转发也能实现内网穿透.再细想一下,发现ssh隧道.或者说端口转发,竟然实现了正向代理.反向代理和内网穿透三种常用的网络功能,更佩服其功能的强大和使用中的便利. ssh有三种端口转发模式,本文一一对其做简要介绍. 本地转发 本地端口转发(Local Port Forw

  • 详解基于docker搭建lanproxy内网穿透服务

    文档更新说明 2018年04月06日 v1.0 内网穿透相信是后端开发者经常遇到的需求,可是怎么实现呢?其实有现成的服务:花生壳.ngrok等,但是,最近花生壳宣布,免费版的内网穿透将不支持80端口映射了,而免费版的ngrok也不够稳定,于是乎,我就开始需找新的解决方案了 本文使用了docker.nginx,要全部搞懂的话需要一定的后端基础(当然,基本上入个门就可以了),个人认为还是有一定阅读门槛的,但是你如果只是想把服务搭建起来,按照步骤来做是不难的 1.概述 内网穿透其实就是用服务器做一个中

  • 超好用的免费内网穿透工具【永久免费不限制流量】

    目录 1. 安装cpolar内网穿透工具 1.1 Windows系统 1.2 Linux系统 1.2.1 安装 国内使用 1.2.2 向系统添加服务 1.2.3 启动服务 1.2.4 查看服务状态 2. 创建隧道映射内网端口 对于开发人员来讲,演示内网web站点.本地开发微信公众号.小程序开发.调试第三方支付系统对接等开发环境,往往需要一个环境可以进行调试. 而解决办法很简单,用内网穿透工具就可以,不需要自己搭建服务,也不需要公网IP.市面上内网穿透工具有很多,这里推荐一款简单又好用的————c

  • 高性能的内网穿透工具frp使用场景

    目录 什么是 frp 为什么使用 frp 安装 使用 使用场景 统一的服务端配置 SSH 连接内网服务器 暴露内网 HTTP 服务 TCP 类型 HTTP 类型 静态文件下载服务 本文将分享一个很好用的内网穿透工具 frp,以及一些具体的使用场景. 什么是 frp frp 是一个专注于内网穿透的高性能的反向代理应用,支持 TCP.UDP.HTTP.HTTPS 等多种协议.可以将内网服务以安全.便捷的方式通过具有公网 IP 节点的中转暴露到公网. 为什么使用 frp 通过在具有公网 IP 的节点上

  • Nodejs实现内网穿透服务

    也许你很难从网上找到一篇从代码层面讲解内网穿透的文章,我曾搜过,未果,遂成此文. 1. 局域网内代理 我们先来回顾上篇,如何实现一个局域网内的服务代理?因为这个非常简单,所以,直接上代码. const net = require('net') const proxy = net.createServer(socket => { const localServe = new net.Socket() localServe.connect(5502, '192.168.31.130') // 局域网

  • ssh端口转发是什么?有什么用?

    目录 前言 1. 本地端口转发 2. 远程端口转发 3. 动态端口转发(SOCKS5) 4. 本地端口转发 和 动态端口转发有啥区别 5. 多级端口转发 6. 总结 前言 一开始我对 ssh 端口转发这个名词概念很模糊,听起来也很晦涩难懂,不知道它的作用到底是什么,有什么用处,于是便开始查找相关资料.理解.运用,后来发现其实也没那么复杂,理解和用起来异常简单. 首先,ssh 端口转发可分为:本地端口转发.远程端口转发.动态端口转发 下面我会单独给每种端口转发类型进行讲解. 1. 本地端口转发 首

  • 详解使用内网穿透工具Ngrok代理本地服务

    目录 1.官网地址 2.下载 3.添加白名单 4.使用 5.访问 我们在微信开发过程中,需要不断调试,微信服务器无法访问我们本地的接口,那么我们就需要一个内网穿透的工具,将我们本地的服务暴露出去使外部能够访问,内网穿透成功后,我们自己开发的电脑就相当于一台云服务器.常用的内网穿透工具有:ngrok.花生壳.Natapp.小米球等等,我平常使用的就是 ngrok 了. 1.官网地址 https://ngrok.com/ 在官网可以下载 ngrok 的安装包,和我使用的版本不一样,推荐使用我的资源文

随机推荐