背景一
- 实验室的服务器只能在内网访问,假期回家无法访问到实验室服务器。
背景二
-
昨天和 Boss 开会,讨论关于论文的补充实验问题。
原本我已经打算放弃做那个麻烦的补充实验,年关在即,毕竟归心似箭,无心嗑盐。
但是 Boss 完全没有放弃的念头,直接来了句:等实验做完再回家吧。 -
我的心哇凉哇凉的,以为春假就此栽了。
好在 Boss 有个 Plan B,让我回家接着做实验(总比留守实验室好)。 -
Plan B 是 Tunnelling SSH over SSL/TLS,参考链接附上。Boss 还给了他写的笔记我参考,说他探过路此方法可行,结果我却走不通。
-
为了不留守实验室,Google 并询问了下 Linux 大佬,最终尝试了 FRP 大法。
下载 FRP
- 服务端,客户端都需要下载、解压
wget https://github.com/fatedier/frp/releases/download/v0.15.1/frp_0.15.1_linux_amd64.tar.gz
tar xzvf frp_0.15.1_linux_amd64.tar.gz
mv frp_0.15.1_linux_amd64 frp
服务端
- 一台具有公网 ip 的服务器,此例选腾讯云
- rm frpc* 文件,不需要
- cat frps.ini 可查看到 默认配置中监听的是 7000 端口,可根据自己实际情况修改。
[common]
bind_port = 7000 # 与客户端绑定的进行通信的端口
- ./frps -c ./frps.ini 启动 FRP 服务端
- 执行上一步前可先开启一个 screen
客户端
- 选择内网一台服务器(本例选 172.xx.224.51)
- rm frps* 文件,不需要
- vim frpc.ini
[common]
server_addr = 118.126.104.xxx # 公网服务器 ip
server_port = 7000 # 与服务端 bind_port 一致
# 公网通过 ssh 访问内部服务器
[ssh]
type = tcp # 连接协议
local_ip = 172.xx.224.51 # 内网服务器 ip
local_port = 22 # ssh 默认端口号
remote_port = 6000 # 自定义的访问内部 ssh 端口号
- ./frpc -c ./frpc.ini 启动 FRP 客户端
- 执行上一步前可先开启一个 screen
ssh 登陆内网服务器
注意:执行下面 ssh 命令之前,处于非登陆外网服务器的状态,即处于任意一个本地普通 terminal 终端下。
-
形式:ssh -oPort=6000 内网服务器登陆名@外网 ip
-
登陆密码为内网服务器的密码
本实例:
ssh -oPort=6000 wuwl@118.126.104.185
即可登陆内网服务器。
遇到的问题
frpc 启动提示 “authorization timeout”
原因:工控机上的时钟跟服务器时钟差别太大造成
解决方法
在服务端 frps.ini 内添加:
authentication_timeout = 0
可能出现的问题和解决思路
内网服务器网络断开等各种意外。
写个脚本,思路如下:
步骤 1: 定时(或发现断开时)重新联网
curl -d "DDDDD=卡号&upass=密码&0MKKey=" https://drcom.szu.edu.cn
步骤 2: 定时(或发现断开时)发起frpc客户端重联
./frpc -c ./frpc.ini