云计算百科
云计算领域专业知识百科平台

搭建个人深度学习服务器(Ubuntu24.04+VSCode+SSH)

本文将分为三个阶段:按顺序完成后可实现:在本地训练➡️在局域网远程训练➡️在公网远程训练

目录

    • 🌟 前言
    • 一、安装Ubuntu及基本深度学习环境【完成后可在本地训练】
    • 二、配置ssh并设置静态ip【完成后可在局域网远程训练】
      • (1)配置ssh 🔑
      • (2) 配置静态ip 🌐
      • (3)可选:使用RDP共享桌面 🖱️
    • 三、内网穿透(Zerotier、皎月连)【完成后可在公网远程训练】
      • (1) Zerotier配置 🌍
      • (2)皎月连配置 🌙
    • 附1-训练时,用nvtop监视GPU状态
    • 附2-VScode配置ssh、免密登录
      • (1)VScode配置ssh 🖥️
      • (2)VScode免密登录🚀:
    • 附3-用screen/nohup/disown避免断联停止训练
      • (1) 用screen管理会话 🔧(推荐):
      • (2) 用nohup使程序直接在后台运行 💡(一次性):
      • (3) 通过disown抢救已运行的任务 🆘(应急):
    • 附4-用git同步代码
      • (1)在Ubuntu系统上安装Git
      • (2)基础配置
      • (3)仓库初始化与基础操作
      • (4)连接远程仓库并推送
      • (5)查看记录与同步
      • (6)其他
    • 📚 本文参考:

🌟 前言

最近需要搭个人服务器用于深度学习,网上相关资料比较零散,在此整理下这次搭建的主要步骤,以便复现。


一、安装Ubuntu及基本深度学习环境【完成后可在本地训练】

Ubuntu及基本深度学习环境的安装可以参考我之前的文章:在移动硬盘上搭建Ubuntu24.04深度学习环境(Anaconda + CUDA + Pytorch)。环境配置完可跳至第二节。在此整理下配置时常用的几个链接:

🔗 其中资源下载链接: 下载Ubuntu镜像:Download Ubuntu Desktop 下载Anaconda:清华大学开源软件镜像站 下载显卡驱动:官方驱动 | NVIDIA 下载CUDA:CUDA Toolkit Archive | NVIDIA Developer 下载cudnn:cudnn-archive

⚙️ 其中环境配置: pip换源:

pip config set global.index-url https://mirrors.aliyun.com/pypi/simple

下载并安装 pytorch:

pip3 install torch torchvision torchaudio –index-url https://download.pytorch.org/whl/cu129


💡 另,这次安装发现了几个需要注意的点,小结一下:

  • 安装Ubuntu系统: 在安装页面联网的话,可以直接安装上显卡驱动,后续在图形化界面中可通过“附加驱动”选择驱动,可以省了手动安装驱动的麻烦,之前没联网没发现。

    这次我内存、硬盘的配置分别是64G、2T,分配的空间如下:

  • 挂载点大小文件系统说明
    /boot/efi 1.13GB FAT32 选择挂载点后自动生成
    swap 64 GB swap 交换空间(虚拟内存),其实32G也够
    / 300 GB Ext4 系统根目录,安装系统和核心软件
    /var 100 GB Ext4 隔离系统日志、缓存和未来可能的Docker数据,保障系统稳定
    /tmp 50 GB Ext4 隔离临时文件
    /home 剩余 Ext4 存放用户文件、代码和环境配置
  • 安装显卡驱动: 如果在安装Ubuntu时已经顺带安装了驱动,直接在终端输入:nvidia-smi,看到类似下图即为成功:
  • nvidia-smi截图

  • 安装CUDA 记录:这次我装cuda的时候遇到了报错:“Existing package manager installation of the driver found. It is strongly recommended that you remove this before continuing”,这是因为我输入:nvidia-smi后,看到驱动支持的最大CUDA版本为13.0,就直接装了13.0版本的CUDA。后来装12.9的CUDA就能正常安装了。
  • 二、配置ssh并设置静态ip【完成后可在局域网远程训练】

    (1)配置ssh 🔑

    sudo apt install openssh-server # 安装shh客户端
    sudo systemctl start ssh # 启动OpenSSH服务端
    sudo ufw allow ssh # 允许OpenSSH服务器通过防火墙
    sudo ufw reload # 重新加载防火墙规则

    (2) 配置静态ip 🌐

    桌面版Ubuntu24.04有GUI,直接在设置里配置比较简单,配置之前还有几个前置操作,具体步骤如下:

  • 确认网络信息:

    还是用ip a查看,在输出的信息里,先找要配置的网卡(有线网卡长得像enp5s0这样、无线像wlp4s0),再找类似这样的一行:

    inet 192.168.31.100/24 brd 192.168.31.255 scope global noprefixroute enp5s0

    这里格式为inet ipv4地址/子网掩码 brd 网关 …… 对应的网卡。记录下来网关对应的网段和子网掩码,因为更改ip地址只能在网关所对应的网段做操作;例如网关为192.168.31.1,则网段为192.168.31.x,故静态ip地址只能设置为192.168.31.x(如192.168.31.100)

  • 进入 Settings → Network。

  • 选择对应连接 → IPv4 → 选择 Manual。

  • 填写 IP、子网掩码、网关和 DNS:8.8.8.8, 8.8.4.4→ 保存。

  • 在这里插入图片描述

    完成后再用命令ip a确认,应当都为刚刚设置的静态ip:

    在这里插入图片描述

    🎉 至此,局域网设备可通过固定IP连接服务器,而不用担心关机后ip会变了

    (3)可选:使用RDP共享桌面 🖱️

    为方便调试,可通过windows和ubuntu系统均自带的功能实现桌面共享,注意ubuntu端仍需要连屏幕或显卡欺骗器

  • 启用桌面共享:

    设置→系统→远程桌面→桌面共享→打开“桌面共享”开关→设置“用户名+密码”

  • 固定桌面共享密码: 用命令seahorse打开“密码和密钥”→默认密钥环→删除GNOME Remote Desktop RDP credentials→点击左上方的"加号"添加密码密钥环,随便命名然后不要写密码直接创建→右键该创建的对象,“设置为默认”→重新设置“桌面共享”的密码

  • 恢复默认密钥环:

    打开终端,输入 seahorse 命令启动“密码和密钥”应用程序,把之前的默认的密钥环重新设置为默认

  • Windows连接:

    使用Windows的“远程桌面连接”,输入:ip**:端口号**、用户名、密码即可远程登录该电脑。

    端口号在ubuntu“桌面共享”的设置页面查看,默认为3390

  • 三、内网穿透(Zerotier、皎月连)【完成后可在公网远程训练】

    Zerotier免费,皎月连付费,类似的服务商还有花生壳之类,按需选择,这次我选了这俩,简要一下演示使用步骤:

    (1) Zerotier配置 🌍

    所有设备都需要安装:https://www.zerotier.com/download/

  • 创建网络:主控设备注册并进入工作台:https://my.zerotier.com/network 在工作台新建网络后,管理页面如图,记下Network ID,主控设备和服务器都要加入:
  • 在这里插入图片描述 在这里插入图片描述

  • 服务器安装并加入网络:
  • 依次运行以下命令,首先安装:

    curl -s https://install.zerotier.com | sudo bash

    添加自启:

    sudo systemctl enable zerotier-one.service

    启动服务:

    sudo systemctl start zerotier-one.service

    加入网络:

    sudo zerotier-cli join <Zerotier控制台显示的Network ID>

    另,退出网络命令是:sudo zerotier-cli leave

    (2)皎月连配置 🌙

    官网:https://www.natpierce.cn/

    Windows上的安装很简单,直接运行.exe即可,Linux上安装稍费功夫,步骤如下:

  • 创建文件夹/opt/natpierce
  • sudo mkdir -p /opt/natpierce

  • 将解压后的名为 natpierce的二进制文件(而非文件夹)移动到/opt/natpierce

    如果对于xxx目录的权限不够,用chmod指令提升权限,如:

    sudo chmod 777 /var/home/xxx

    如果是修改文件夹及子文件夹权限,在chmod后加:-R

  • 创建service配置

  • sudo gedit /etc/systemd/system/natpierce.service

    写入以下配置内容:

    [Unit]
    Description=Natpierce Tunnel Service
    After=network-online.target
    Wants=network-online.target

    [Service]
    WorkingDirectory=/opt/natpierce
    ExecStart=/opt/natpierce/natpierce
    Restart=always
    RestartSec=5
    User=root
    # 日志直接走 systemd journal
    StandardOutput=journal
    StandardError=journal

    [Install]
    WantedBy=multi-user.target

  • 重新加载 systemd
  • sudo systemctl daemon-reload

  • 启动并设为开机自启
  • sudo systemctl enable –now natpierce.service

  • 查看运行状态 / 日志
  • systemctl status natpierce.service
    journalctl -u natpierce.service -f

    输出中能看到皎月连就成了

    附1-训练时,用nvtop监视GPU状态

    Ubuntu自带系统监视器没有GPU监控,故采用应用nvtop来实现,直接安装:

    sudo apt install nvtop

    点击运行即可,运行效果如下:

    在这里插入图片描述

    附2-VScode配置ssh、免密登录

    (1)VScode配置ssh 🖥️

  • 安装插件: 在vscode中搜索并安装插件:remote-ssh、python、SFTP,分别用于ssh、选解释器、传文件: 在这里插入图片描述

  • 配置SSH: 连接服务器:按Ctrl+P,输入ssh -p 22 <服务器用户名>@<ip>,回车选择配置文件 (或点击远程图标中的配置按钮,选择并配置config文件),其中: Host:服务器名,默认同ip地址 HostName:服务器的地址 User:登录的用户名称 在这里插入图片描述

  • (2)VScode免密登录🚀:

    在windows端,进到目录:C:\\Users\\<你的用户名>\\.ssh下查看你的密钥(公钥):id_rsa.pub,没有则用命令生成,回车到底即可:

    ssh-keygen

    服务器中,需要将公钥内容添加到~/.ssh/authorized_keys,按顺序输入:

    cd ~ && mkdir -p .ssh && cd .ssh

    gedit authorized_keys

    在打开的窗口输入windows密钥中全部内容(…/.ssh/id_rsa.pub中的内容),保存后提升权限:

    chmod 600 authorized_keys # 设置密钥文件仅对所有者可读写
    chmod 700 ~/.ssh # 设置.ssh目录仅对所有者可读、写、执行


    另,在项目目录下的.vscode➡️settings.json中,可配置默认解释器,如:

    "python.defaultInterpreterPath": "~/anaconda3/env/deim/bin/python"

    附3-用screen/nohup/disown避免断联停止训练

    (1) 用screen管理会话 🔧(推荐):

    灵活使用 screen 可以避免因连接断开而丢失进程,也可用于管理多个任务。对动辄半天+的模型训练很有用。

  • 安装: 部分Linux系统会预装Screen,可以先检查一下:screen –version
    若未安装,安装:sudo apt update && sudo apt install screen

  • 基本命令: 创建screen并命名(例如mytrain):

    screen -S mytrain

    终端界面会刷新,表示你已进入新的screen会话。 查看所有 screen 会话,注意是-ls不是ls:

    screen -ls

    示例输出(Attached表示会话仍在使用中):

    There is a screen on:
    60366.mytrain (2026年01月23日 17时12分14秒) (Attached)
    1 Socket in /run/screen/S-6.

    不同于普通会话,screen会话的快捷键是: 1️⃣ 按Ctrl + D来退出当前会话(或在会话中输入exit) 另,在会话外关闭会话的指令是:screen -X -S mytrain quit 2️⃣ 先按 Ctrl + A,再按 D 来脱离当前会话(状态会变为Detach)

    其他窗口命令(不常用): 3️⃣ 先按 Ctrl + A,再按 C 来创建新窗口 4️⃣ 先按 Ctrl + A,再按 P 来切换上一个窗口 5️⃣ 先按 Ctrl + A,再按 N 来切换下一个窗口 3️⃣ 先按 Ctrl + A,再按 " 来查看所有窗口

    例如按Ctrl + D退出会话后,再用screen -ls会看到输出:No Sockets found in /run/… 而先按 Ctrl + A,再按 D 脱离会话后,用screen -ls会看到输出:

    There is a screen on:
    60366.mytrain (2026年01月23日 17时12分14秒) (Detach)
    1 Socket in /run/screen/S-6.

    重新连接会话,看情况灵活使用,ID忘了用screen -ls查看:

  • 命令格式说明
    screen -r mytrain 直接连会话名称​
    screen -r 12345 当会话名称可能重复时,用PID连接最可靠
    screen -r 12345.mytrain 完整会话ID,最严谨​
    screen -d -r mytrain 强制接管会话,用于处于Attached状态的会话,但你还是想挤进去(

    (2) 用nohup使程序直接在后台运行 💡(一次性):

    原理:在进程启动时即让其忽略SIGHUP信号,并立即放入后台。

    当计划启动一个无需交互、长时间运行的任务时,这是最标准、最简洁的方法,安全用法:

    nohup python train.py > training.log 2>&1 &

    特点:稳定性高。所有输出被妥善保存,即使终端关闭也无影响。 (在启动时重定向标准输出和标准错误到当前目录下的training.log,避免因终端关闭导致的写入错误)

    另,如果你相信你的程序不会报错/警告,简易用法​是:

    nohup python train.py &

    特点:⚠️稳定性较低!如果进程向标准错误输出信息(如报错、警告),而终端已关闭,进程可能会因写入失败而挂起或崩溃。


    查找所有nohup进程:

    ps -ef | grep nohup

    终止进程(通过PID),进程无响应时用kill -9 12345:

    kill 12345

    实时查看训练日志:

    tail -f training.log

    (3) 通过disown抢救已运行的任务 🆘(应急):

    当忘记使用后台方式启动,而一个重要的任务已经在前台运行时,可通过disown将已经在前台运行的进程“剥离”出来,使其免于随终端关闭而终止。 操作步骤:

  • 按下 Ctrl + Z挂起前台任务。
  • 输入 bg,将任务在后台继续运行。
  • 输入 disown -h,将任务从Shell作业表中移除,并使其忽略终端关闭时发出的SIGHUP信号。 原理:暂停进程 → 后台恢复 → 解除终端关联。 ⚠️注意!该方法仍可能会尝试向已关闭的终端输出,导致问题(如进程被挂起)。是一种有效的"救急"方法,但如果是计划中的一次性训练脚本,更推荐使用nohup,若是需要交互、观察日志的长时间任务,更推荐用screen/tmux。
  • 附4-用git同步代码

    单独传文件夹的话,可用rsync:

    rsync -r /home/sourcedir service@192.168.1.100:/home/targetdidr/

    (1)在Ubuntu系统上安装Git

    sudo apt-get install git


    (2)基础配置

    配置全局用户信息(提交记录会显示这些信息):

    $ git config –global user.name 你的用户名
    $ git config –global user.email 你的邮箱

    查看当前所有配置信息:

    git config –list

    (3)仓库初始化与基础操作

    在项目根目录初始化Git仓库:

    git init

    Git文件提交分为三个阶段:

  • 工作区​ → 暂存区:
  • git add filename

    更常用的是,一次性添加所有变更文件到暂存区:

    git add .

  • 暂存区​ → 本地仓库:
  • git commit -m '注释'

  • 本地仓库​ → 远程仓库:
  • git push

    (4)连接远程仓库并推送

    首次关联远程仓库(如Gitee、GitHub):

    git remote add origin <你的仓库URL>

    首次推送代码并设置上游分支:(主分支名根据你的远程仓库实际情况调整,也可以使用 git branch -M main可以将当前分支重命名为 main)

    git push -u origin main

    (5)查看记录与同步

    查看历史版本(提交记录):

    git log

    通过url把github等仓库下载到本地:

    git clone <仓库URL>

    (6)其他

    ⚠️慎用!丢弃本地所有未提交的修改: (我是在本地不知道改啥了,但是想完全同步下来仓库的内容,直接pull报错:error: Your local changes to the following files would be overwritten by merge时用)

    git checkout .

    执行一次 git pull或 git push后保存用户名和密码到本地,避免每次推送都输入密码:

    git config –global credential.helper store


    🎉先记到这,祝训练顺利!🎉

    📚 本文参考:

  • 【Ubuntu】安装SSH启用远程连接
  • ubuntu如何设置静态ip
  • [运维笔记]Ubuntu24.04静态ip配置
  • Ubuntu24.04设置静态IP地址
  • Windows主机远程桌面连接Ubuntu24.04主机
  • zerotier实现内网穿透
  • 皎月连Linux二进制版配置 – 执着的牛战士的文章 – 知乎
  • linux如何修改文件权限
  • Windows下如何使用VScode连接远程linux服务器进行远程开发
  • vscode远程连接服务器,无需密码的方式。
  • Windows下如何使用VScode连接远程linux服务器进行远程开发
  • 【Linux】Screen 详解与实用指南
  • Linux入门教程:nohup命令
  • 解放终端的神器:nohup 全解析(附高频实战用法)
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 搭建个人深度学习服务器(Ubuntu24.04+VSCode+SSH)
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!