frp反向代理实现内网穿透访问实验室服务器&&上知网查资料&&jupyter lab远程访问

1.实验成功截图

连接and退出
在这里插入图片描述
查看内网GPU服务器显卡信息
在这里插入图片描述
follow me!!!

2frp

frp可以通过公网IP将两个局域网中的主机联系起来。

原理:frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。

2.1云服务器端配置

前提:你要先有一台带公网IP的云服务器:

去https://github.com/fatedier/frp/releases下载适合你服务器系统的frp软件,下好之后解压:

tar -zxvf *****

需要编辑文件frps.ini:
内容改为:

[common]
bind_port = 7000 # frp服务的端口号,可以自己定
 dashboard_port = 7500 # frp的web界面的端口号
 dashboard_user = user # web界面的登陆账户,自己修改
 dashboard_pwd = pass # web界面的登陆密码,自己修改
 authentication_method = token
 token = xxxxx # frp客户端连接时的密码,自己修改

注意:注释都要删除,不然会失败

保存配置后,使用该命令启动:

./frps -c ./frps.ini

在浏览器输入[云服务公网IP]:7500 即可访问frp的web管理界面。

注意:云服务的安全组策略要开放上述所有端口

我们需要开启 frp 的服务端,对于 Linux 主机,可以执行这一条命令来将其作为进程放到系统后台运行:

nohup /etc/frp/frps -c /etc/frp/frps.ini & 

注意:frps的位置,我的是将其放在了/etc/frp下,根据自己的情况来

执行后,我们可以通过 netstat -lnp|grep 7000看一下进程是否正常运行。到这里,云端服务的操作基本上就完成了

2.2客户端配置

我们这个客户端是深度学习服务器(Ubuntu18)

下载相应版本的frpc软件包,选择amd64,下载到一个临时文件。
修改frpc.ini配置文件,内容如下:

 [common]
 server_addr = xx.xx.xx.xx # 你的云服务器的公网ip
 authentication_method = token
 token = xxxxx # 刚刚配置的frp连接密码 
 server_port = 7000 # 刚刚配置的frp服务端口
 
 [ssh]
 type = tcp
 local_ip = 127.0.0.1 #本机处于内网的IP地址
 local_port = 22
 remote_port = 20022
 
 [rdp]
 type = tcp
 local_ip = 127.0.0.1#本机处于内网的IP地址
 local_port = 3389
 remote_port = 23389

[http_proxy]
type = tcp
remote_port = 6000
plugin = http_proxy

通过上面的脚本就可以把对于云服务器特定端口的访问给重定向到本地服务器的某个端口了,简单地讲就是:假如我用SSH客户端访问 [云服务器ip]:20022,就可以经过反向代理直接访问到[本地的训练服务器ip]:22;同理需要连接远程桌面的话,只需要访问[云服务器ip]:23389就可以了。

为了扩展 frpc 的能力,能够提供一些简单的本地服务,如果配置了 plugin,则 local_ip 和 local_port 无效,两者只能配置一个

对于 Linux 主机,可以执行这一条命令来将其作为进程放到系统后台运行:

nohup /etc/frp/frpc -c /etc/frp/frpc.ini & 

注意:frpc的位置,我的是将其放在了/etc/frp下,根据自己的情况来

添加开机自动启动的脚本,新建一个文件内容如下:
文件名/etc/systemd/system/frpc.service,注意修改其中的路径:

 [Fusion]
 Description=Frp Server Daemon
 After=syslog.target network.target
 Wants=network.target
 
 [Service]
 Type=simple
 ExecStart=/usr/local/bin/frp/frpc -c /usr/local/bin/frp/frpc.ini # 修改为你的frp实际安装目录
 ExecStop=/usr/bin/killall frpc
 #启动失败1分钟后再次启动
 RestartSec=1min
 KillMode=control-group
 #重启控制:总是重启
 Restart=always
 
 [Install]
 WantedBy=multi-user.target

注意:删除全部注释,不然无法运行

然后执行以下命令启用脚本:

sudo systemctl enable frpc.service
sudo systemctl start frpc.service

通过下面的命令查看服务状态,如果是running的话就说明可以了:

sudo systemctl status frpc.service
2.3坑

通过ssh连接是要特别注意

ssh -p [端口号] [用户名]@[ip]
password

端口号为frpc中ssh设置的远程端口
用户名为内网GPU服务器的用户名,不是云服务器的用户名,切记
ip为云服务的公网ip
password 为内网用户名对应的密码

2.4浏览器设置外网访问知网

现在我们已经在家里准备用学校的万方了,应该怎样设置呢? 由于我们frp客户端使用的是http_proxy模式,所以需要在我们的浏览器中添加一个代理服务器:

1.chrome浏览器下载proxy switchOmega插件,该插件可以快捷管理和切换多个代理。

2.设置代理协议、代理服务器、代理端口、
以及用户名、密码
在这里插入图片描述
3.在知网下载文献时切换到代理模式
4.成功
在这里插入图片描述

3 jupyter lab远程登陆

1.内网主机安装jupyter lab
1.1推荐anaconda
1.2切到包含GPU的虚拟环境中

conda activate tf_gpu2.2   #根据自己的环境名

2.生成密码

$ python
>>> from notebook.auth import passwd
>>> passwd()
Enter password:   #随意,后面会用到
Verify password:
'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

生成的哈希值注意保存,后面会用到的

3.生成并配置文件

3.1 生成配置文件

jupyter notebook --generate-config

会有一个路径生成,注意
3.2 修改配置文件

$ vim ~/.jupyter/jupyter_notebook_config.py  # 刚才生成的路径,根据自己的来

做如下修改:

c.NotebookApp.allow_remote_access = True
#c.NotebookApp.open_browser = False
c.NotebookApp.ip='*'
c.NotebookApp.password = 'sha1:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'

我把第二个屏蔽了,因为后面我会手动加上
保存

4.开始远程访问
4.1
在笔记本电脑中打开一个终端,然后按下面的代码打开jupyter lab

jupyter lab --port=9000 --no-browser &

4.2
打开笔记本电脑中的另一个终端,然后按以下代码映射ip:

ssh -N -f -L localhost:8888:localhost:9000 -p [remote port] remoteAccount@eremoteIp

用户名为内网GPU服务器的用户名,不是云服务器的用户名,切记
ip为云服务的公网ip
password 为内网用户名对应的密码

4.3
打开浏览器,输入:http://localhost:8888/
搞定

4.4 坑
4.1中不一定打开你指定的端口,注意看输出的是啥

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值