本文将分为三个阶段:按顺序完成后可实现:在本地训练➡️在局域网远程训练➡️在公网远程训练
目录
-
- 🌟 前言
- 一、安装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 | 存放用户文件、代码和环境配置 |

二、配置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/

依次运行以下命令,首先安装:
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上安装稍费功夫,步骤如下:
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
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 可以避免因连接断开而丢失进程,也可用于管理多个任务。对动辄半天+的模型训练很有用。
若未安装,安装: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将已经在前台运行的进程“剥离”出来,使其免于随终端关闭而终止。 操作步骤:
附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
🎉先记到这,祝训练顺利!🎉
网硕互联帮助中心






评论前必须登录!
注册