作为一名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 ~/.sshls,如果路径下有id_rsa文件,说明已经有了ssh key不需要再生成。否则使用命令ssh-keygen -t rsa -C "yourname@163.com" 生成。生成的密钥和公钥后续要用。

2. 台式机

台式机以博主的Ubuntu18为例,首先允许台式机通过ssh登录,在ubuntu终端执行:

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压缩包中的frpcfrpc.ini到任意路径,按照下面的步骤在ubuntu台式机上配置frpc:

  1. 安装systemd

    apt install systemd
    vim /etc/systemd/system/frpc.service
  2. 写入内容

    [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
  3. 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
  4. 启动frpc,并设置开机自动启动

    systemctl start frpc
    systemctl enable frpc

3. 公网云服务器

解压frp压缩包中的frpsfrps.ini到任意路径,按照下面的步骤在公网云服务器上配置frps:

  1. 用 yum (CentOS)或 apt (Ubuntu)安装systemd

    # yum
    yum install systemd
    # apt
    apt install systemd
  2. 使用文本编辑器,如 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
  3. 配置frps.ini:

    [common]
    bind_port = 7000
    dashboard_port = 7500
    dashboard_user = your_user
    dashboard_pwd = your_password
    eable_prometheus = true
  4. 使用 systemd 命令,管理 frps。

    # 启动frp
    systemctl start frps
    # 停止frp
    systemctl stop frps
    # 重启frp
    systemctl restart frps
    # 查看frp状态
    systemctl status frps
  5. 配置 frps 开机自启。
    systemctl enable frps

配置完上述的frpc和frps,你就可以在任意地方通过公网ip和remote_port访问自己的台式机啦~你还可以访问http://x.x.x.x:7500查看你的frp仪表盘。

标签: 小技巧

添加新评论