连接and退出
查看内网GPU服务器显卡信息
follow me!!!
frp可以通过公网IP将两个局域网中的主机联系起来。
原理:frp 主要由 客户端(frpc) 和 服务端(frps) 组成,服务端通常部署在具有公网 IP 的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。内网服务由于没有公网 IP,不能被非局域网内的其他用户访问。用户通过访问服务端的 frps,由 frp 负责根据请求的端口或其他信息将请求路由到对应的内网机器,从而实现通信。
前提:你要先有一台带公网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看一下进程是否正常运行。到这里,云端服务的操作基本上就完成了
我们这个客户端是深度学习服务器(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
通过ssh连接是要特别注意
ssh -p [端口号] [用户名]@[ip]
password
端口号为frpc中ssh设置的远程端口
用户名为内网GPU服务器的用户名,不是云服务器的用户名,切记
ip为云服务的公网ip
password 为内网用户名对应的密码
现在我们已经在家里准备用学校的万方了,应该怎样设置呢? 由于我们frp客户端使用的是http_proxy模式,所以需要在我们的浏览器中添加一个代理服务器:
1.chrome浏览器下载proxy switchOmega插件,该插件可以快捷管理和切换多个代理。
2.设置代理协议、代理服务器、代理端口、
以及用户名、密码
3.在知网下载文献时切换到代理模式
4.成功
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中不一定打开你指定的端口,注意看输出的是啥