Ubuntu实现SSH外网连接内网(反向隧道)
应用场景:
如果你有Linux云主机(腾讯、华为等),且公司有一台只有内网IP (或动态IP) 的Linux工作机;你计划在家里工作时,通过家里的电脑连接公司的工作机 (且不想使用类似Teamviewer这样的远程控制软件) 的话,本文适合你。
1. 准备
(1) 一台内网机器 A
IP: 172.17.60.247
SSH端口: 22
用户名: root
密码: *
内网配置端口:22 (即配置SSH端口的反向隧道)
(2) 带有公网IP的机器 B
IP: 121.36.163.25
SSH端口: 22
用户名: root
密码: *
公网端口: 22222(重要, 即用B的22222端口连到A的SSH 22端口)
2. 配置SSH密钥
(0)
注意分清A是内网, B是公网
在A主机上生成SSH秘钥, 再和B用SSH建立认证
(1) A的配置(内网主机)
ssh-keygen
配置说明:
直接连按3次enter就可以了, 什么都不用输入.
密钥会自动保存在默认的地方, 方便下一步操作.
(你会获得一长串SHA256:......)
然后利用如下命令将A的SSH秘钥即SHA256:......里面的字符串, 添加到B的authorized_keys里面 (需要输入B主机root账号的密码):
ssh-copy-id root@121.36.163.25
配置说明:
注意换成你自己的IP,执行后会提示输入主机B的密码(要注意这里),
执行完毕之后,我们登录到B,就发现 ~/.ssh/authorized_keys 里面就多了A的SSH公钥了,成功建立SSH认证.
这个步骤主要是完成了从机子A到B的ssh的免密登录,具体可以看~/.ssh/下面的一些密钥更改情况
用root登陆121.36.163.25主机,
ls ~/.ssh/
会有文件
authorized_keys
(2) B的配置(公网主机)
vim /etc/ssh/sshd_config
添加
GatewayPorts yes
这句话的意思是监听端口可以绑定到任意其他IP, 不然只有本机127.0.0.1可以访问
重启一下ssdh服务
sudo service sshd restart
3. A的配置(内网主机)(内网主机安装配置反向隧道软件)
(1)
弄好了上面的, 再回到A, 安装一个autossh,
注意, 这个东西ubuntu安装比较方便
以ubuntu为例, 执行下面命令完成安装
sudo apt-get install autossh
(2) 开启autossh
autossh -M 22002 -NfR 0.0.0.0:22222:localhost:22 root@121.36.163.25
参数说明:
注意最后一个IP 是公网IP
这里,
-M 后面任意填写一个可用端口即可,
-N 代表只建立连接,不打开shell,
-f 代表建立成功后在后台运行,
-R 代表指定端口映射.
这里是将A主机的22端口映射到B主机的22222端口, 这样就完成了配置.
这时我们再访问B主机的22222端口, 就会自动转发到A主机的22端口了, 即可以公网访问了.
特别提醒:
如果是一些供应商的云主机,记得要去安全策略组那里开放22002, 22222端口,不然怎么样都是访问不了的.
4. 连接测试
ssh root@121.36.163.25 -p 22222
输入内网主机a的密码, 这时候你就会惊奇地发现已经打开了内网主机.
另外, 为了方便, 可以考虑将autossh设置为开机启动.
5. 将autossh设置为开机启动(Ubuntu)
(1) 第一步
ln -fs /lib/systemd/system/rc-local.service /etc/systemd/system/rc-local.service
(2) 第二步
sudo echo "
[Install]
WantedBy=multi-user.target
Alias=rc-local.service
" >> /etc/systemd/system/rc-local.service
(3) 第三步
sudo vim /etc/rc.local
#!/bin/bash
autossh -M 22002 -NfR 0.0.0.0:22222:localhost:22 root@121.36.163.25
(4) 第四步
chmod +x /etc/rc.local
原文链接:https://mp.weixin.qq.com/s/oJZXXTTcd2FzksrsRewq5w
Ubuntu实现SSH外网连接内网(反向隧道)的更多相关文章
- 利用ssh反向代理以及autossh实现从外网连接内网服务器
前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...
- 记<<ssh穿透防火墙连接内网的机器(不用路由端口映射)>>
场景: 在家连接公司的内网服务器. 需求: 不用设置端口映射在家用putty登录公司内网服务器. 条件: 有一台公网服务器做转发,有开放端口的控制权.(公网服务器可以是阿里云ECS, 腾讯云主机这样的 ...
- 通过ssh tunnel连接内网ECS和RDS
通过ssh tunnel连接内网ECS和RDS 这里讲了ssh tunnel的原理.很清晰. 此后又给外网访问内网增加了一种思路.感觉特别棒. 拓宽了思路:
- 配置windows路由表,使电脑同时连接内网外网方法
1.环境一(系统:windows xp,内网.外网不是同一类地址,内网地址固定): 外网:通过笔记本的无线网卡连接: 内网:通过笔记本的本地连接: 第一步,连接网线,配置本地连接地址,注意IP地址不要 ...
- [转] 如何设置双网卡同时连接内网外网_bpao_新浪博客
已剪辑自: http://blog.sina.com.cn/s/blog_5d3e229c0100skwe.html 如何设置双网卡同时连接内网外网 . 通过无线网络连接外网,确保连接成功后开始第二步 ...
- 使用ssh从外网访问内网
一.场景如下: 各个角色的对应关系如下: 角色 描述 APP 个人笔记本,属于内网IP sshd server 公网 VPS ( 映射端口: port 2222 ),拥有公网IP ssh client ...
- 【转】配置windows路由表,使电脑同时连接内网外网方法
1. 公司内部,内网和外网的网关不一样,怎么样让电脑可以同时上内网和外网呢? 来一张不相关的磁盘结构图: ----------------------------------------------- ...
- 通过ssh管道连接内网数据库(mysql)
公网连接内网数据库(如云数据库)时,通常需要白名单:如果不是白名单IP,通常需要一个跳板机(类似代理)来连接内网数据库, 下方以mysql为例(其他数据库基本一致): import pymysql a ...
- [笔记] 使用frp从外网访问内网
之前尝试过otunnel,也记录过使用方法,见[笔记] 使用otunnel从外网访问内网,但是用了几天发现还是不够稳定. 然后尝试frp,发现性能稳定,够用,将过程及配置分享在这里吧. 需求 内网机器 ...
- [笔记] 使用otunnel从外网访问内网
需求 内网机器没有公网IP,但是可以访问外网,现在需要从外网访问内网机器. 举例,在家里机器A访问公司内网机器B. 前提 需要一台有公网IP的服务器S做中转,这样就可以打通AB两端了. A <- ...
随机推荐
- 利用CSS 实现环形百分比进度展示
先看效果图: UI设计了这样的效果,已读人数占总人数的百分比,环形展示. 这里可以用echarts图表,也可以用css实现,因为我是在小程序环境下,考虑到包大小体积,采用了css实现. 核心就是一行代 ...
- WiFi基础(四):WiFi工作原理及WiFi接入过程
liwen01 2024.09.16 前言 802.11 无线 WiFi 网有三类帧:数据帧.管理帧.控制帧.与有线网相比,无线 WiFi 网会复杂很多.大部分应用软件开发对 WiFi 的控制帧和管理 ...
- iframe嵌套登录页-页面无法加载
背景 活动页面和登录页跨域,过去都是跳转到登录页登录之后再跳转回来,体验不好. 现在需要将登录模块嵌入到活动页,因为懒,不想开发重复的模块,首先我想到的是iframe 刚开始还能正常使用,一段时间后安 ...
- Kubernetes基础(基本概念、架构)(十)
一.介绍 Kubernetes(简称 K8S) 的出现是容器化技术发展的必然结果,容器化是应用程序级别的虚拟化,运行单个内核上有多个独立的用户空间实例,这些实例就是容器:容器提供了将应用程序的代码.运 ...
- for循环遍历的盗版笔记
遍历一个List有如下几种方法 5 6 是 java8 增强for循环底层由Iterator实现 增强for的出现时替代迭代器的,所以在遍历集合或者遍历数组就可以使用增强for去完成 增强for循 ...
- .net 调用 nsfwjs 进行视频鉴别
1. npm 安装 nsfwjs npm install express --save npm install multer --save npm install jpeg-js --save npm ...
- Android 基于 Choreographer 的渲染机制详解
本文介绍了 App 开发者不经常接触到但是在 Android Framework 渲染链路中非常重要的一个类 Choreographer.包括 Choreographer 的引入背景.Choreogr ...
- UEFI原理与编程(二)
系统表 对UEFI应用程序和驱动程序开发人员来讲,系统表是最重要的数据结构之一,它是用户空间通往内核空间的通道.有了它,UEFI应用程序和驱动才可以访问UEFI内核.硬件资源和I/O设备. 1 在应用 ...
- 10月《中国数据库行业分析报告》已发布,深度剖析甲骨文大会Oracle技术新趋势
为了帮助大家及时了解中国数据库行业发展现状.梳理当前数据库市场环境和产品生态等情况,从2022年4月起,墨天轮社区行业分析研究团队出品将持续每月为大家推出最新<中国数据库行业分析报告>,持 ...
- 驻扎初篇(markdown)
markdown的初级使用语法 本片作为开始使用博客的第一篇笔记 只为了方便为日后的编辑博客做基础的语言记录 以下为markdown的语法 ##标题 # 标题一 ## 标题二 ### 标题三 #### ...