最近遇到这么一个问题,一些深度学习的任务对电脑要求比较高,以前一直都是白嫖的学校的服务器。但是最近要离开学校很长一段时间了,工作还没完成,便需要能够远程连接学校的服务器继续跑实验。问题出现了,学校的服务器是只能内网的机器访问,这就需要配置内网穿透来实现外部网络访问控制内网的服务器。
外网的 A 机能够通过一台有公网IP的服务器 B 连接内网服务器 C 的22端口
三台机器的IP如下:
A(控制机):内网IP(这个不重要好吧,无外网ip,能访问外网)
B(桥接机):公网IP 148.70.30.249 内网IP(这个不重要好吧)
C(目标机):内网IP(这个不重要好吧,无外网ip,能访问外网,开放22端口)
goproxy是一个开源软件,官方仓库:https://github.com/snail007/goproxy
工具下载地址:https://github.com/snail007/goproxy/releases
下载完成后,分别在B和C上安装goproxy工具,采用同样的方法安装
mkdir /proxy
cd /proxy
# 下载守护进程monexec
wget https://github.com/reddec/monexec/releases/download/v0.1.14/monexec_0.1.14_linux_amd64.tar.gz
# 下载proxy
wget https://github.com/snail007/goproxy/releases/download/v8.8/proxy-linux-amd64.tar.gz
# 下载自动安装脚本:
wget https://raw.githubusercontent.com/snail007/goproxy/master/install.sh
##安装
/bin/bash install.sh
B机器(IP:148.70.30.249)
# 找个地方存放秘钥
cd /proxy
# 创建proxy的公钥和私钥文件
proxy keygen
# 建立端口映射
proxy tbridge -p ":33080" -C proxy.crt -K proxy.key --daemon
proxy tserver -r ":2202@:22" -P "127.0.0.1:33080" -C proxy.crt -K proxy.key --daemon
C机器
cd /proxy
##拷贝B机器的公钥和秘钥文件:
scp -r 148.70.30.249:/proxy/* .
##建立映射
proxy tclient -P "148.70.30.249:33080" -C proxy.crt -K proxy.key
A机器连接
ssh -p 2202 root@148.70.30.249 # -p:指定端口(默认是22端口)
password:# 输入C机器的密码即可!
本文大部分是参考 使用goproxy实现内网穿透 进行的操作,另外proxy有更多的用法,大家可以参考 https://gitee.com/383366063/proxy。