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

如今咱们有一台内网主机 A,在局域网内是能够访问的,可是若是咱们如今不处在局域网内,能够选择 *** 链接,但这样其实并不太方便,因此本节咱们来讲明一下利用 SSH 反向隧道来实现访问内网主机的方法。
shell

准备

首先咱们须要有一台公网主机做为跳板,这台主机是能够公网访问的,咱们将其命名为 B,它的 IP 假设为 10.10.10.10。网络

因此两台机器网络配置以下:app

A 内网机器

  • IP:192.168.1.2ssh

  • SSH端口: 22ide

  • 用户名:usera测试

  • 密码:passwordaspa

  • 内网配置端口:22(即配置 SSH 端口的反向隧道)rest

B 公网机器

  • IP:10.10.10.10orm

  • SSH端口: 22ci

  • 用户名: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

输入密码,完成链接。

相关文章
相关标签/搜索