基于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