内网主机从外面连接不了?SSH反向隧道来帮你!

现在我们有一台内网主机 A,在局域网内是可以访问的,但是如果我们现在不处在局域网内,可以选择 VPN 连接,但这样其实并不太方便,所以本节我们来说明一下利用 SSH 反向隧道来实现访问内网主机的方法。

准备

首先我们需要有一台公网主机作为跳板,这台主机是可以公网访问的,我们将其命名为 B,它的 IP 假设为 10.10.10.10。

所以两台机器网络配置如下:

A 内网机器

  • IP:192.168.1.2
  • SSH端口: 22
  • 用户名:usera
  • 密码:passworda
  • 内网配置端口:22(即配置 SSH 端口的反向隧道)

B 公网机器

  • IP:10.10.10.10
  • SSH端口: 22
  • 用户名:userb
  • 密码:passwordb
  • 公网端口:22001(即用 B 的 22001 端口连到 A 的 SSH 22 端口)

配置SSH秘钥

首先我们需要在 A 主机上生成 SSH 秘钥,和 B 用 SSH 建立认证。

首先在主机 A 上执行如下命令生成 SSH 秘钥:

ssh-keygen -t rsa -C "your@email.com"

命令里面的邮箱需要自行更换。

然后利用如下命令将 A 的 SSH 秘钥添加到 B 的 authorized_keys 里面:

ssh-copy-id userb@10.10.10.10

执行后会提示输入主机 B 的密码,执行完毕之后,我们登录到 B,就发现 authorized_keys 里面就多了 A 的 SSH 公钥了,成功建立 SSH 认证。

B 主机配置

B 主机需要更改 /etc/ssh/sshd_config 文件,修改如下一行:

GatewayPorts yes

这样可以把监听的端口绑定到任意IP 0.0.0.0上,否则只有本机 127.0.0.1 可以访问。

然后重启 sshd 服务:

sudo service sshd restart

A 主机配置

主机 A 再安装一个 AutoSSH,以 Ubuntu 为例,命令如下:

sudo apt-get install autossh

然后执行如下命令即可完成反向 SSH 配置:

autossh -M 55555 -NfR 0.0.0.0:22001:localhost:22 userb@10.10.10.10

这里 -M 后面任意填写一个可用端口即可,-N 代表只建立连接,不打开shell ,-f 代表建立成功后在后台运行,-R 代表指定端口映射。

这里是将 A 主机的 22 端口映射到 B 主机的 22001 端口,这样就完成了配置。

主要我们再访问 B 主机的 22001 端口,就会自动转发到 A 主机的 22 端口了,即可以公网访问了。

连接测试

接下来 SSH 测试连接 A 主机即可:

ssh usera@10.10.10.10 -p 22001

输入密码,完成连接。

原文发布于微信公众号 - 进击的Coder(FightingCoder)

原文发表时间:2018-04-19

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏魏豪的专栏

LNMP平台的搭建

LNMP指的是多款软件的集合。L指的是Linux系统,N指的是Nginx网站服务器,M指的是Mariadb数据库软件,P指的是php软件。Linux目前是一款最...

6810
来自专栏xingoo, 一个梦想做发明家的程序员

整理LVS架构压力测试工作

    首先,测试环境在模拟环境下进行。     测试环境:1director(apache2.2) + 1realserver(jboss4.2.3GA)+1...

3118
来自专栏CDA数据分析师

如何发布一个Python命令行工具

上次写的一个终端里面斗鱼TV弹幕Python版本和Ruby版本,并且发布到PIP和RubyGems上面.在发布PIP包的时候,居然Google不到一篇可以非常好...

2948
来自专栏L宝宝聊IT

LVS负载均衡群集--NAT+DR模式

1548
来自专栏腾讯云serverless的专栏

使用 SCF 无服务器云函数定时备份数据库

最近有客户询问到使用云函数进行数据库导出备份时的一些问题,在此也进行一下总结,描述如何使用云函数来进行数据库备份。

7.5K4
来自专栏喵了个咪的博客空间

[喵咪Redis]Redis配置文件和主从设置

[喵咪Redis]Redis配置文件和主从设置 ? 前言 上一节已经介绍了redis的基本使用也运行起来了redis,本节来进一步了解一下redis的配置,以及...

2995
来自专栏linux系统运维

VM虚拟机的下载以及安装centos7

1623
来自专栏JavaEdge

ZooKeeper分布式入门实战(三)-基本特性1 zookeeper常用命令行操作2 session的基本原理与create命令的使用3 set与delete命令的使用4 zk特性 – 理解watc

972
来自专栏漏斗社区

仰望PHPSHE1.5漏洞

背景 最近拿到PHPSHE 1.5的源码进行了审计,于是撰写了本篇,把一些问题发出来,多处SQL注入,任意文件删除,host头部攻击进行讨论,如 host位置的...

3329
来自专栏云计算教程系列

【基础干货】Linux Shell基础教程

shell,也称为“命令行界面”或“CLI”,是与远程Linux服务器交互的主要方法。shell是一个丰富的界面,用于处理文件,管理系统和编写常见任务脚本。如果...

1234

扫码关注云+社区