阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

利用SSH反向代理以及autossh实现从外网连接内网服务器

443次阅读
没有评论

共计 2993 个字符,预计需要花费 8 分钟才能阅读完成。

前言

最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习 Linux 用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛。但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使用外网的小土豪就没有办法进入内网。这时能不能有一个办法可以使得通过外网连接到内网的服务器呢?答案是有的,不过这里就需要以下条件:一台在外网能访问到的服务器。

1. 描述一下目前的机器状况,梳理梳理:

机器 IP 用户名 备注
A 10.21.32.106 gdut728 目标服务器,处于 内网
B 123.123.123.123 root 外网 服务器,相当于桥梁的作用

PS:123.123.123.123 只是我随意起的,大家请别攻击别人的服务器啊啊啊


2. 解决方法:

通俗地说:就是在机器 A 上做到 B 机器的反向代理;然后在 B 机器上做正向的代理实现本地端口的转发

2.1 实现前的准备

每台都要安装 ssh 的客户端。

在这里我使用的是 CentOS7,都自带 ssh。如果是使用其他版本 Linux,请手动 Google 一下咯。

2.2 介绍一下使用到的 ssh 参数:

反向代理

ssh -fCNR

正向代理

ssh -fCNL

-f 后台执行 ssh 指令
-C 允许压缩数据
-N 不执行远程指令
-R 将远程主机 (服务器) 的某个端口转发到本地端指定机器的指定端口
-L 将本地机 (客户机) 的某个端口转发到远端指定机器的指定端口
-p 指定远程主机的端口

****************** 区分大小写啊各位亲 ******************

3. 首先在 A 上面操作:

建立 A 机器到 B 机器的反向代理,具体指令为

ssh -fCNR [B 机器 IP 或省略]:[B 机器端口]:[A 机器的 IP]:[A 机器端口] [登陆 B 机器的用户名 @服务器 IP]

在这里我使用了 B 机器的 7280 端口,以及 A 机器的 22 端口,按照上面的指令就是这样子的操作

ssh -fCNR 7280:localhost:22 root@123.123.123.123

检验是否已经启动了可以使用 ps aux | grep ssh 指令来查看:

利用 SSH 反向代理以及 autossh 实现从外网连接内网服务器


4. 接着在 B 上面操作:

建立 B 机器的正向代理,用来做转发,具体指令为

ssh -fCNL [A 机器 IP 或省略]:[A 机器端口]:[B 机器的 IP]:[B 机器端口] [登陆 B 机器的用户名 @B 机器的 IP]

按照第 3 那里输入的指令,这里的 B 机器的端口和上面的 B 机器的端口是一致的,端口 1234 的也是 B 机器的。

ssh -fCNL *:1234:localhost:7280 localhost

检验是否已经启动了可以使用 ps aux | grep ssh 指令来查看:

利用 SSH 反向代理以及 autossh 实现从外网连接内网服务器

在此 1234 端口为本地转发端口,负责和外网进行通信,并将数据转发的 7280 这个端口,实现了可以从其他机器访问的功能。同时,* 号表示可以接受任何 IP 的访问。


5. 是展现奇迹的时候了

至此我们都配置好了 AB 机器,那么我们就可以从一部外网的电脑登陆到内网里面去啦。鉴于我目前的电脑在内网,而服务器都是外网的(也就是配置的 B 机器),所以可以通过 B 机器连接到我内网的 A 中,具体指令为:

ssh -p1234 gdut728@123.123.123.123 

在此 - p 参数为指定登陆的 IP,我们在上面指定了 1234 端口为转发端口,故用 1234 端口登陆,然后 gdut728 是内网 A 机器的用户名,123.123.123.123 为外网 B 机器的 IP 地址。

利用 SSH 反向代理以及 autossh 实现从外网连接内网服务器


6. 这种反向代理的不稳定

不幸的是这种 ssh 反向链接会因为超时而关闭,如果关闭了那从外网连通内网的通道就无法维持了,为此我们需要另外的方法来提供稳定的 ssh 反向代理隧道。

6.1 ssh 每次重连都需要键入密码,故在此首先设置免密码登陆到内网

在内网的机器 A 上面执行:

ssh-copy-id 内网用户名 @外网 IP - p 指定转发的端口

按照之前我设定的端口,这个指令就是如下

ssh-copy-id gdut728@123.123.123.123 -p1234

利用 SSH 反向代理以及 autossh 实现从外网连接内网服务器

那以后这台内网的 A 机器 ssh 登陆我外网的 B 机器就可以免密码登陆啦~
检验是否已经可以使用免密码登陆可以使用如下指令来检验:

ssh root@123.123.123.123

利用 SSH 反向代理以及 autossh 实现从外网连接内网服务器

6.2 用 autossh 建立稳定隧道

centos7 上没有默认安装 autossh 的,所以使用一下命令安装

yum install autossh

来看看具体的 autossh 的指令为

autossh -M 7281 -fCNR 7280:localhost:22 root@123.123.123.123 

autossh的参数与 ssh 的参数是一致的,但是不同的是,在隧道断开的时候,autossh 会自动重新连接而 ssh 不会。另外不同的是我们需要指出的 - M 参数,这个参数指定一个端口,这个端口是外网的 B 机器用来接收内网 A 机器的信息,如果隧道不正常而返回给 A 机器让他实现重新连接。

利用 SSH 反向代理以及 autossh 实现从外网连接内网服务器


7. 最后配置在 Linux 上配置开机自动启动 autossh,免去了重启 Linux 后要自己启动的 autossh 的麻烦

输入:

vi /etc/rc.d/rc.local

添加内容:

autossh -M 7281 -fCNR 7280:localhost:22 root@123.123.123.123

因为 centos7 之后,原来直接修改 /etc/rc.d/rc.local 启动脚本自动生效的功能因为修改了需要重新赋予可执行权限

再输入 chmod +x /etc/rc.d/rc.local


8. 结言:

总算配置好了,目前不清楚会不会断线,明天看看什么情况在进行更新吧。如有不对之处,请大家指正提出~

下面关于 SSH 相关的文章您也可能喜欢,不妨参考下:

Ubuntu 下配置 SSH 服务全过程及问题解决 http://www.linuxidc.com/Linux/2011-09/42775.htm

Ubuntu 14.04 下安装 Samba 及 SSH 服务端的方法 http://www.linuxidc.com/Linux/2015-01/111971.htm

集群环境 SSH 免密码登录设置  http://www.linuxidc.com/Linux/2017-03/141296.htm

提高 Ubuntu 的 SSH 登陆认证速度的办法 http://www.linuxidc.com/Linux/2014-09/106810.htm

远程 SSH 连接服务与基本排错  http://www.linuxidc.com/Linux/2017-05/143738.htm

使用 SSH 公钥密钥自动登陆 Linux 服务器 http://www.linuxidc.com/Linux/2017-02/140642.htm

开启 SSH 服务让 Android 手机远程访问 Ubuntu 14.04  http://www.linuxidc.com/Linux/2014-09/106809.htm

SSH 非交互式密码授权远程执行脚本  http://www.linuxidc.com/Linux/2017-04/143180.htm

在 Linux 中为非 SSH 用户配置 SFTP 环境 http://www.linuxidc.com/Linux/2014-08/105865.htm

Linux 上 SSH 服务的配置和管理 http://www.linuxidc.com/Linux/2014-06/103627.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-05/144245.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2993字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19350
评论数
4
阅读量
7959347
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
免费领取huggingface的2核16G云服务器,超简单教程

免费领取huggingface的2核16G云服务器,超简单教程

免费领取 huggingface 的 2 核 16G 云服务器,超简单教程 前言 HuggingFace.co...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...