作为一名AI从业者,你选购电脑是否有过这样的苦恼:轻薄本便携 续航久,但GPU和散热弱;游戏本GPU比较强,但比较重、续航短;台式机高配置、硬盘空间大,但不能带出门;商业的GPU服务器租赁要不就是使用有要求,要不就是贵的离谱,还要担心商家提桶跑路 or 涨价 or 欠费停机数据被删。作为一个成熟但财力有限的开发者,想全都要,比较好的一种方式是买轻薄本 台式机。但拥有多台设备后,依然存在一些痛点问题,比如资料分散在两台电脑、出门在外依然难以查看实验结果。本文博主以自身经验为例,给出轻薄本 ubuntu台式机 frp ssh的配置指南,供大家选择性参考。
1. 轻薄本
博主现在使用的是2019年买的联想小新pro,win11系统。(但对 Macbook心动中) 连接服务器我使用的是 Xftp 和 Xshell 两个软件,我觉得它俩比 MobaXterm 好用多了,响应快不会断连。Xftp 和 Xshell 现在都能在官网下到,可免费使用,免费版与付费版功能完全一样(但免费版每次用完会有一个弹窗)。
调试和写代码我用 VScode 和 Pycharm,它俩都能连远程服务器。区别是VScode相当于直接打开服务器的文件夹,它不需要本地有任何项目文件所以不占用本地的存储空间,但是会在服务器端安装一个vscode-server,如果是新的服务器首次连接需要一些时间。而Pycharm需要在本地有项目文件,然后设置本地项目文件与远程文件同步。VScode对于一个服务器只需要设置一次,而Pycharm对于每个项目都要设置一次。
如果一个项目我可能会在多个服务器用,并且项目会调试好几个月,我会用pycharm。反之如果一个项目是临时跑一下试试,只用几周,我会用VScode。
设置本机的ssh:打开win11终端执行 cd ~/.ssh
,ls
,如果路径下有id_rsa文件,说明已经有了ssh key不需要再生成。否则使用命令ssh-keygen -t rsa -C "yourname@163.com"
生成。生成的密钥和公钥后续要用。
2. 台式机
台式机以博主的Ubuntu18为例,首先允许台式机通过ssh登录,在ubuntu终端执行:
代码语言:javascript复制sudo apt install openssh-server # 安装
sudo service ssh start # 启动ssh
echo "PermitRootLogin yes" >> /etc/ssh/sshd_config # 允许root登录
sudo service ssh restart
此时,让你的轻薄本和台式机在一个局域网中,轻薄本应该可以通过用户名密码ssh登录到台式机内网ip了。为了让登录更快捷且安全,我们配置一下通过密钥登录。将轻薄本中的公钥~/.ssh/id_rsa.pub
拷贝到台式机的~/.ssh
路径下,并在ubuntu中注册公钥:
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
chmod 600 authorized_keys
chmod 700 ~/.ssh
然后编辑vim /etc/ssh/sshd_config
文件,进行如下配置:
RSAAuthentication yes
PubkeyAuthentication yes
配置完后,重启ssh服务:service sshd restart
。此时,让你的轻薄本和台式机在一个局域网中,你的轻薄本应该可以通过密钥ssh登录到台式机内网ip。如果无法登录,请检查ubuntu中~/.ssh
中的文件所有者和权限是否设置正确。成功后,禁用密码登录,只保留密钥登录: 编辑vim /etc/ssh/sshd_config
文件,增加如下配置PasswordAuthentication no
,然后重启ssh:service ssh restart
。
如果你的台式机放在自己家,你可以给你的运营商客服打电话,看能不能要到公网ip。如果有公网ip,恭喜你,你的配置结束了。如果你无法申请公网ip,就还需要配置frp内网穿透。在台式机配置frpc,即frp客户端。在有公网ip的云服务器配置frps,即frp服务端。
首先,下载适合自己系统的压缩包:https://github.com/fatedier/frp/releases
解压frp压缩包中的frpc
和frpc.ini
到任意路径,按照下面的步骤在ubuntu台式机上配置frpc:
安装systemd
代码语言:javascript复制apt install systemd
vim /etc/systemd/system/frpc.service
写入内容
代码语言:javascript复制[Unit]
Description=frpc
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/home/kpp/Software/frpc -c /home/kpp/Software/frpc.ini
ExecStop=/usr/bin/killall frpc
RestartSec=1min
KillMode=control-group
Restart=always
[Install]
WantedBy=multi-user.target
vim /path/frpc.ini
写入内容
[common]
server_addr = x.x.x.x # 写你的公网ip
server_port = 7000
[ssh-main]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
[ssh1]
type = tcp
local_ip = 127.0.0.1
local_port = 22001
remote_port = 60001
启动frpc,并设置开机自动启动
代码语言:javascript复制systemctl start frpc
systemctl enable frpc
3. 公网云服务器
解压frp压缩包中的frps
和frps.ini
到任意路径,按照下面的步骤在公网云服务器上配置frps:
用 yum (CentOS)或 apt (Ubuntu)安装systemd
代码语言:javascript复制# yum
yum install systemd
# apt
apt install systemd
使用文本编辑器,如 vim 创建并编辑 frps.service
文件。
vim /etc/systemd/system/frps.service
写入内容
[Unit]
# 服务名称,可自定义
Description = frp server
After = network.target syslog.target
Wants = network.target
[Service]
Type = simple
# 启动frps的命令,需修改为您的frps的安装路径
ExecStart = /path/to/frps -c /path/to/frps.ini
[Install]
WantedBy = multi-user.target
配置frps.ini
:
[common]
bind_port = 7000
dashboard_port = 7500
dashboard_user = your_user
dashboard_pwd = your_password
eable_prometheus = true
使用 systemd 命令,管理 frps。
代码语言:javascript复制# 启动frp
systemctl start frps
# 停止frp
systemctl stop frps
# 重启frp
systemctl restart frps
# 查看frp状态
systemctl status frps
配置 frps 开机自启。
systemctl enable frps
配置完上述的frpc和frps,你就可以在任意地方通过公网ip和remote_port访问自己的台式机啦~你还可以访问http://x.x.x.x:7500
查看你的frp仪表盘。