基于腾讯云的云服务器和frp实现内网穿透
基于腾讯云的云服务器和frp实现内网穿透
放假在家,无法使用实验室的GPU服务器进行炼丹,因为GPU服务器处于校园网的内网环境下,而在校园网外网络环境下,无法直接ssh登录校园网内的机器,因此需要内网穿透。 本文大量参考了以下几篇博客和帖子(尤其是第一篇,写的特别好,本文的基本流程也与该篇帖子的行文顺序基本一致,侵删),记录主要的配置流程,并记录踩过的坑。
1.参考文献
-
[1] [2] (使用jobs命令可以查看后台运行的程序) [3] (防火墙过滤规则查看,iptables -vnL) [4]
以下为frp的基本配置参数说明:
-
[5] 官方文档关于内网穿透的说明
2.所需设备
(1)具有公网ip的云服务器,本人选的是腾讯云的轻量应用服务器,比较便宜(但最近涨价很猛)。 (2)frp软件,官网地址:
3.具体流程
下面将按照文献[1]的结构,记录主要流程。
3.1 准备一台公网ip云服务器
(1)打开云服务器安全组相关端口 登陆自己的腾讯云账号,进入安全组相关端口页面,路径:服务器->防火墙->添加规则
如图所示,添加2个端口,7000和6000,后续会用到。
(2)打开防火墙 打开云服务器的防火墙对应的端口。注意,需要打开22端口,否则无法ssh登录到云服务器。
# 启用 sudo ufw enable # 开放端口 sudo ufw allow 7000 sudo ufw allow 6000 sudo ufw allow 22 sudo ufw allow 80 sudo ufw allow 443 sudo ufw allow 3389 # 查看状态 sudo ufw status
3.2 配置公网云服务器
(1)将frp软件下载、解压到到公网服务器,可以放在任何目录下。 (2)配置fprs:frp服务端 配置frps.ini文件,其默认设置如下(这里不进行更改):
[common] bind_port = 7000 # frp服务端接受客户端连接的端口,可以自己设置,但安全组端口和防火墙要进行相应的设置
3.3 配置内网GPU服务器
(1)将frp软件下载、解压到到内网GPU服务器,可以放在任何目录下。 (2)配置frpc:frp客户端 需要配置frpc.ini文件,如下:
注意,可以用一台云服务器,穿透多台内网机器,第二台机器的frpc.ini文件设置如下:
[common] server_addr = x.x.x.x # 云服务器的公网ip server_port = 7000 # 云服务器开放的端口 [ssh2] # client的一个别名,命名为ssh2以和其他client区分 type = tcp local_ip = 127.0.0.1 local_port = 22 remote_port = 6001
即不同内网机器的frpc.ini中,只有remote_port和client别名(比如[ssh1]、[ssh2])不同,其它都一样。
3.4 分别启动内网机器和公网服务器的FRP
(1)启动公网服务器fprs服务端 打开terminal,输入如下命令,在后台运行frps服务端:
nohup ./frps -c ./frps.ini &
然后按control-c退出即可。可以使用jobs命令查看后台是否有运行。如果没有,则运行./frps -c ./frps.ini, 如果显示端口被占用,则参考, 使用netstat -tanlp命令找到对应的进程并kill掉,然后重新在后台启动
(2)启动内网服务器fprc客户端 打开terminal,输入如下命令:
nohup ./frpc -c ./frpc.ini &
3.5 ssh登录服务器
有以下两种方法:
(1) ssh –p 6000 [内网机用户名]@[云服务器公网ip] (2) ssh -oPort=6000 [内网机用户名]@[云服务器公网ip]
3.6 文件传输
scp -r -P 6000 ./文件 [内网机用户名]@[云服务器公网ip]:/home/
即,需要指定端口,注意: P为大写字母, ssh登陆时为小写字母
