本地PyCharm远程连接阿里云/批量计算GPU服务器(避坑完整版)
文章信息
- 标题:本地PyCharm远程连接GPU云服务器完整踩坑教程|文件同步、远程运行代码、ModuleNotFoundError、文件不存在报错全解决
- 标签:#PyCharm远程开发 #GPU服务器 #SSH远程解释器 #BatchCompute #SFTP文件同步
- 简介:本文记录从0到1使用PyCharm连接4090云GPU服务器全过程,包含SSH配置、Deployment文件映射、代码自动同步、远程环境依赖安装、各类高频报错完整解决方案,全部为实操踩坑总结。
一、环境说明
二、前置准备
三、步骤1:PyCharm添加SSH远程Python解释器
3.1 进入解释器添加页面
File → Settings → Python Interpreter → 右上角齿轮 → Add → 选择SSH Interpreter
3.2 填写SSH连接信息
- Host:服务器公网IP
- Port:SSH端口
- User:batchcom
- 密码/密钥登录(根据服务器配置)
点击Test Connection,提示连接成功再下一步。
3.3 选择远程Python解释器
远程路径填写服务器conda环境Python:
/opt/conda/bin/python3
3.4 关键:配置项目同步目录(90%人踩坑点)
踩坑1:Conda Environment页面LOAD ENVIRONMENTS报错
报错内容:加载环境弹出JSON解析报错
解决方案:放弃Conda Environment标签页,切换使用System Interpreter,直接指定/opt/conda/bin/python3,规避conda环境读取报错。
四、步骤2:配置Deployment SFTP文件同步(解决上传按钮灰色、代码不同步)
4.1 打开Deployment配置
顶部菜单 Tools → Deployment → Configuration…
4.2 Connection连接配置
4.3 Mappings路径映射(核心,不配置上传按钮永久灰色)
| Local path | 本地项目根目录 E:/0_EIT/SSM_Mamaba/MambEIT/MambEIT |
| Deployment path on server | /home/batchcom/code/MambEIT |
| Web path | / |
4.4 设置默认服务器,解锁Upload上传按钮
4.5 上传全部本地代码到服务器
Tools → Deployment → Upload to xxx agent
点击后右下角出现蓝色上传进度条,等待全部文件同步完成。
4.6 开启自动同步(推荐)
Tools → Deployment → 勾选Automatic Upload
本地修改保存文件,自动同步至远程服务器,无需手动上传。
4.7 远程文件可视化查看
Tools → Deployment → Browse Remote Host
右侧面板可直接浏览服务器所有文件,支持右键上传/下载/删除。
五、两种运行代码方式(区分本地终端/远程服务器终端)
方式1:推荐(一键运行,无需手动输命令)
底层逻辑:自动调用远程服务器Python,自动匹配映射路径,不会出现路径找不到问题。
方式2:远程Terminal手动命令运行
cd /home/batchcom/code/MambEIT
python train.py –data_dir ./data
重要区分(高频踩坑)
六、高频报错完整解决方案
报错1:ModuleNotFoundError: No module named ‘tensorboard’
报错原因
服务器conda基础环境预装torch,但未预装tensorboard;本地Windows安装包无法同步到服务器。
解决
仅在远程服务器Terminal执行安装:
pip install tensorboard
安装完成后重新运行代码。
报错2:can’t open file ‘/home/batchcom/train.py’: [Errno 2] No such file or directory
报错原因
解决
cd /home/batchcom/code/MambEIT
ls # 查看是否存在train.py
python train.py –data_dir ./data
报错3:Tools → Deployment内Upload选项灰色不可点击
报错原因
解决流程
报错4:SSH Conda Environment页面LOAD ENVIRONMENTS弹出JSON解析报错
解决
放弃Conda标签,切换左侧System Interpreter,手动填写远程Python路径/opt/conda/bin/python3,彻底规避读取conda环境报错。
报错5:远程文件夹ls无任何文件,代码为空
原因
仅填写同步路径,未执行Upload上传;未保存SSH远程解释器配置。
解决
七、服务器数据持久化重要提醒(批量计算专属)
服务器系统盘 / 目录:实例停止、关机后数据全部丢失,仅临时存放代码;
持久化目录(关机不丢失):
不要将checkpoints、results训练输出保存在/home/batchcom/code下,实例释放会全部清空。
八、完整操作流程总结
PyCharm远程GPU开发底层SSH/SFTP技术详解
文章扩展章节:第三章 底层核心技术——SSH & SFTP 原理(对应前文PyCharm远程连接流程)
标签:#SSH原理 #SFTP #远程开发底层 #SSH端口转发 #PyCharm远程解释器
3.1 什么是SSH?
SSH 全称 Secure Shell(安全外壳协议),是一种加密的网络传输协议,作用:
你整个PyCharm连接GPU服务器的操作,全部基于SSH协议承载,分为两层:
3.1.1 明文协议的缺陷(为什么必须用SSH)
传统FTP/Telnet传输账号、密码、代码、控制台输出都是明文裸传,局域网或公网抓包可直接窃取账号;
SSH通过非对称+对称混合加密,所有流量加密,即使抓包也无法解析内容,云服务器远程开发标准安全方案。
3.2 SSH 完整通信握手流程(你打开PyCharm远程连接时后台执行)
阶段1:密钥协商(非对称加密 RSA/ECDSA)
阶段2:流量加密(对称加密 AES)
握手完成后,后续所有通信(输密码、传代码、运行命令)全部用协商好的AES会话密钥加密,非对称仅用于初期密钥交换(性能更高)。
阶段3:身份认证(两种登录方式,你用的密码登录)
阶段4:会话通道创建
认证通过后,SSH协议会分出独立子通道,互不干扰:
- Shell通道:远程Terminal命令行交互;
- SFTP通道:文件上传/下载(PyCharm Deployment同步代码);
- Forward转发通道:远程TensorBoard、调试端口映射到本地浏览器。
3.3 SFTP:SSH内置文件传输子协议(解决你代码同步、Upload灰色问题)
3.3.1 SFTP 和传统FTP的区别
PyCharm的Deployment同步功能底层就是SFTP,也就是你配置的SFTP连接类型。
3.3.2 为什么Deployment不配置Mappings,Upload按钮会灰色?
SFTP仅负责文件传输,Mappings是PyCharm的路径映射层:
- Local Path:本地Windows磁盘路径 E:/0_EIT/xxx
- Deployment Path:服务器Linux绝对路径 /home/batchcom/code/MambEIT
没有映射规则时,PyCharm不知道本地文件夹对应服务器哪个目录,无法发起SFTP批量上传请求,上传按钮直接禁用。
3.3.3 上传代码底层流程(点击Upload to Default Server)
3.4 PyCharm远程解释器如何依靠SSH运行Python代码
你右键train.py Run的完整底层流程:
关键区分两种终端(底层通道完全不同)
- 无SSH通道,直接调用本地Windows的conda环境,不连通GPU服务器;
- 执行python调用本地CPU,无4090显卡,依赖包和服务器隔离;
- 基于SSH Shell子通道,所有命令在远程Ubuntu服务器执行;
- pip install tensorboard、训练代码全部运行在4090 GPU环境。
3.5 SSH端口转发(开发隐藏刚需:TensorBoard本地查看)
SSH自带端口转发功能,分为本地转发、远程转发:
场景:远程服务器TensorBoard网页本地打开
PyCharm远程调试、可视化工具全部依赖SSH端口转发实现本地访问远程服务。
3.6 SSH连接保活机制(解决长时间闲置断开)
云服务器SSH闲置一段时间会自动断连,底层保活逻辑:
PyCharm自动内置保活策略,长时间不操作也不会断开服务器。
3.7 对应你踩坑问题的SSH底层根源
坑1:报错 No such file or directory 找不到train.py
底层原因:SSH Shell执行python命令时,使用了错误的服务器Linux路径;SFTP上传失败/映射错误,文件未同步到服务器对应目录。
坑2:ModuleNotFoundError: tensorboard
底层原因:SSH分两套独立运行环境:本地Windows Python、远程服务器/opt/conda/bin/python3;SSH通道隔离两边依赖,本地安装的包不会同步到远程Linux。
坑3:Deployment Upload按钮灰色
底层原因:SFTP通道已连通,但PyCharm缺少本地↔服务器路径映射规则(Mappings),无法生成SFTP上传指令;未将连接标记为Default默认SFTP会话。
坑4:远程终端ls看不到代码
底层原因:SFTP未执行批量上传put指令,本地文件仅存在Windows磁盘,没有通过SSH-SFTP通道传输至服务器磁盘。
3.8 SSH安全优化拓展(批量计算GPU服务器推荐)
3.9 本章总结
整个PyCharm远程GPU开发流程,所有交互都建立在SSH加密协议之上:
没有SSH协议,本地电脑无法安全、高效调用远端4090 GPU算力。



