您的位置 首页 ssh

SSH内网穿透,公网访问内网 工具sssh -fCNR

基于SSH协议的内网穿透,访问内部笔记本电脑

需求: 阿里云的公网 要 SSH 到公司内网主机 上执行一些相关命令 : 比如 jenkins 构建 ios 项目(mac mini)

 

首先 白眉大叔已经默认你 ssh免密登录 已经配置好了。

不会的可以参考这篇    ssh免秘钥登录linux

这里有个环境

内网主机A (公司内网macmini)

外网服务器B  (阿里云服务器)

外放主机C (家里笔记)

1、公网SSH 到内网

首先我们  需要 做:

内网主机A的22端口和公网服务器B 的8022端口建立ssh连接

在 A 上执行。

ssh -R 将远程主机(服务器)的某个端口转发到本地主机指定的端口 
ssh -fCNR 8022:localhost:22 -o ServerAliveInterval=60 root@39.107.126.108 -p 22 

或者 直接

autossh -M 8999  -fCNR 8022:localhost:22  root@39.107.126.108 -p 22 

关于 autossh  参考:

解释:-o ServerAliveInterval=60表示每60秒发送一次消息,以保持连接存在。(60s保活)

该命令实现的功能是,让一个远端机器B的8022端口代理A自己的22端口,这里所说的远端机器就是我们的公网服务器。

 


 

目的就是 访问B 的8022端口 的数据 都会 转给 A

执行 ps -ef| grep ssh可查看是否成功启动了该进程。

在B上执行:

ssh -fCNL *:8081:localhost:8022 -o ServerAliveInterval=60 root@localhost -p 22

登录验证: 在 B 上ssh A:

ssh kattgatt@localhost -p 8022

lg123

然后我们看看公网服务器B(阿里云服务器) 是否成功建立了连接

netstat -tunlp | grep 8022

 

也可以用

lsof -i:8022

到此为止,我们已经做好如下图所示的连接了, B的8022 和 A的22 端口建立了连接

目前我们能 做的是 从公网服务器的终端上直接登录到内网服务器:

ssh kattgatt@localhost -p 8022

(这一块很好理解, 上边我们不是做好了 B的端口转发到A的22 吗, 我们 SSH  A 默认是22端口, 但是,现在 访问A的22端口  又有了一条新的路径(访问B的8022 就可以跟 A 的22 通信))

这样原理懂了吧

 

这一步的需求,就是 公网SSH 到内网已经做完了。

 

2 . 家里的主机C  直接SSH 到 公司的主机A

 

我们的链路 是这样的 :  主机 C -》 公网B -》 主机A

 

 

这一步,我们思考一下, 其实我们的需求就是, C 连接B后 发送的数据,抓发给B的 8022 端口就可以。

所以我们可以在B上起一个 8023的端口,来转发 C 过来数据。

我们需要到 SSH -L

-L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口

我们需要再B 上 监听8081 端口 转发到 8022  (因为上一步 我们已经做好了 一层转发,或者叫代理也可以, 只要 访问B的8022 就会转发到 A的22端口)。

在B 上执行 命令:

ssh -fCNL *:8081:localhost:8022 -o ServerAliveInterval=60 root@localhost -p 22

 

 

ssh -fCNL *:8081:localhost:8022 -o ServerAliveInterval=60  root@localhost -p 22
# ssh -fCNL [本机IP(可省略)]:[本机端口]:[远端IP]:[远端端口] [远端用户名@远端IP] -p [远端ssh端口(默认22)]
# 或者使用autossh:
# autossh -M 8999 -CNL *:8081:localhost:8022 user_gong@localhost -p 22

 

解释:-o ServerAliveInterval=60表示每60秒发送一次消息,以保持连接存在。(60s保活)

该命令实现的功能是,让本机8081端口指向一个远端机器的8022端口,而这里的远端机器恰好就是公网服务器本身。

公网服务器:让8023代理8022(*表示接受来自任意机器的访问)

这一步 要把 本机的 公钥  复制到 本机的 auothor key 里。

 

执行ps aux | grep ssh可查看是否成功开启了进程。

 

不知道为什么,总是提示 密码不对, 我输入的事 root  39. 107的密码, 为此我还改了root 密码。

这个问题,后期再研究。

 

https://blog.csdn.net/wangwenzhou0624/article/details/132050866

autossh 安装使用 : 链接 

 

其他内网穿透工具:

一分钟实现内网穿透(ngrok服务器搭建) https://www.cnblogs.com/best/p/7465444.html

frp配置内网穿透教程(超详细 https://cloud.tencent.com/developer/article/1837482

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章