欢迎光临
我们一直在努力

本地PyCharm远程连接阿里云/批量计算GPU服务器及SSH技术

本地PyCharm远程连接阿里云/批量计算GPU服务器(避坑完整版)

文章信息

  • 标题:本地PyCharm远程连接GPU云服务器完整踩坑教程|文件同步、远程运行代码、ModuleNotFoundError、文件不存在报错全解决
  • 标签:#PyCharm远程开发 #GPU服务器 #SSH远程解释器 #BatchCompute #SFTP文件同步
  • 简介:本文记录从0到1使用PyCharm连接4090云GPU服务器全过程,包含SSH配置、Deployment文件映射、代码自动同步、远程环境依赖安装、各类高频报错完整解决方案,全部为实操踩坑总结。

一、环境说明

  • 本地环境:Windows11 + PyCharm专业版
  • 远程服务器:Ubuntu 22.04,RTX4090,Cuda13.0,torch2.9.0
  • 需求:本地写代码,GPU服务器跑训练,文件双向同步,不用反复上传下载
  • 二、前置准备

  • 服务器SSH连接信息:IP、端口、用户名batchcom;测试SSH可正常登录
  • PyCharm必须为专业版(社区版无远程解释器、Deployment同步功能)
  • 服务器提前创建项目持久目录:/home/batchcom/code/MambEIT
  • 三、步骤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%人踩坑点)

  • 同步映射:本地项目文件夹 ↔ 服务器/home/batchcom/code/MambEIT
  • 不要使用服务器/tmp临时目录:实例关机数据全部丢失
  • 配置完成点击CREATE保存远程解释器
  • 踩坑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连接配置

  • Type:SFTP
  • SSH configuration:选中刚才创建的SSH连接
  • Root path:/ 服务器根目录
  • 点击TEST 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上传按钮

  • 左侧选中配置好的SFTP连接
  • 点击窗口左上角**绿色对勾(Default)**标记为默认服务器
  • 点击OK保存配置
  • 4.5 上传全部本地代码到服务器

    Tools → Deployment → Upload to xxx agent
    点击后右下角出现蓝色上传进度条,等待全部文件同步完成。

    4.6 开启自动同步(推荐)

    Tools → Deployment → 勾选Automatic Upload
    本地修改保存文件,自动同步至远程服务器,无需手动上传。

    4.7 远程文件可视化查看

    Tools → Deployment → Browse Remote Host
    右侧面板可直接浏览服务器所有文件,支持右键上传/下载/删除。

    五、两种运行代码方式(区分本地终端/远程服务器终端)

    方式1:推荐(一键运行,无需手动输命令)

  • 本地PyCharm打开train.py
  • 代码空白处右键 → Run ‘train’
    底层逻辑:自动调用远程服务器Python,自动匹配映射路径,不会出现路径找不到问题。
  • 方式2:远程Terminal手动命令运行

  • 打开PyCharm内置远程终端:Terminal标签 → 下拉选择SSH服务器连接
  • 终端前缀必须为 (base) batchcom@ide-xxx(这才是服务器终端)
  • 切换至代码目录再执行训练:
  • cd /home/batchcom/code/MambEIT
    python train.py –data_dir ./data

    重要区分(高频踩坑)

  • ❌ Windows本地PowerShell(前缀PS E:\\):本地环境,无GPU,依赖和服务器完全隔离,禁止在此运行训练
  • ✅ PyCharm内置远程Terminal(前缀batchcom@):服务器环境,拥有4090显卡,所有pip安装、训练命令在此执行
  • 六、高频报错完整解决方案

    报错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

    报错原因
  • 当前终端目录不在项目文件夹,直接在/home执行python;
  • Deployment映射未配置,本地代码未上传至服务器;
  • 解决
  • 切换到代码目录再运行:
  • cd /home/batchcom/code/MambEIT
    ls # 查看是否存在train.py
    python train.py –data_dir ./data

  • 检查Deployment Mappings映射,重新执行Upload上传全部代码。
  • 报错3:Tools → Deployment内Upload选项灰色不可点击

    报错原因
  • 未将当前SFTP连接设为Default默认服务器;
  • Mappings路径映射未填写;
  • SSH解释器未点击CREATE保存。
  • 解决流程
  • Deployment配置窗口选中连接,点左上角绿色对勾设为默认;
  • 补全Mappings本地/远程映射;
  • 保存配置后关闭Tools菜单重新点开,上传按钮恢复可点击。
  • 报错4:SSH Conda Environment页面LOAD ENVIRONMENTS弹出JSON解析报错

    解决

    放弃Conda标签,切换左侧System Interpreter,手动填写远程Python路径/opt/conda/bin/python3,彻底规避读取conda环境报错。

    报错5:远程文件夹ls无任何文件,代码为空

    原因

    仅填写同步路径,未执行Upload上传;未保存SSH远程解释器配置。

    解决
  • 确认Mappings映射正确;
  • 设为Default默认服务器;
  • 执行Upload to Default Server等待上传进度完成。
  • 七、服务器数据持久化重要提醒(批量计算专属)

    服务器系统盘 / 目录:实例停止、关机后数据全部丢失,仅临时存放代码;
    持久化目录(关机不丢失):

  • 读写持久:/home/dataset-assist-0,训练日志、模型权重存放此处;
  • 只读数据集:/home/dataset-bc-pub,存放训练数据集,不可写入;
  • 不要将checkpoints、results训练输出保存在/home/batchcom/code下,实例释放会全部清空。

    八、完整操作流程总结

  • SSH创建远程解释器,选用System Interpreter规避conda报错;
  • Deployment配置SFTP连接+Mappings路径映射,设为默认服务器;
  • Upload上传全部本地代码至GPU服务器;
  • 远程Terminal安装缺失依赖(tensorboard等);
  • 右键train.py一键远程GPU运行训练;
  • 训练输出权重存放至/home/dataset-assist-0持久目录。
  • PyCharm远程GPU开发底层SSH/SFTP技术详解

    文章扩展章节:第三章 底层核心技术——SSH & SFTP 原理(对应前文PyCharm远程连接流程)

    标签:#SSH原理 #SFTP #远程开发底层 #SSH端口转发 #PyCharm远程解释器

    3.1 什么是SSH?

    SSH 全称 Secure Shell(安全外壳协议),是一种加密的网络传输协议,作用:

  • 替代老旧、明文传输的Telnet、FTP;
  • 客户端(本地Windows PyCharm)与远程Linux GPU服务器之间全程加密通信;
  • 提供三大核心能力:远程命令执行、文件传输、端口转发。
  • 你整个PyCharm连接GPU服务器的操作,全部基于SSH协议承载,分为两层:

  • SSH Shell:远程终端执行cd/pip install/python命令;
  • SSH-SFTP子通道:PyCharm Deployment同步代码、上传下载文件;
  • SSH端口转发:PyCharm本地获取远程代码补全、调试输出、TensorBoard网页。
  • 3.1.1 明文协议的缺陷(为什么必须用SSH)

    传统FTP/Telnet传输账号、密码、代码、控制台输出都是明文裸传,局域网或公网抓包可直接窃取账号;
    SSH通过非对称+对称混合加密,所有流量加密,即使抓包也无法解析内容,云服务器远程开发标准安全方案。

    3.2 SSH 完整通信握手流程(你打开PyCharm远程连接时后台执行)

    阶段1:密钥协商(非对称加密 RSA/ECDSA)

  • 本地PyCharm(SSH客户端)发起TCP连接到服务器IP:SSH端口(你的30192);
  • GPU服务器返回自身主机公钥;
  • 客户端首次连接弹窗“是否信任主机”,本质是保存服务器公钥指纹,防止中间人劫持;
  • 双方交换各自生成的临时公钥,通过非对称加密协商出会话密钥。
  • 阶段2:流量加密(对称加密 AES)

    握手完成后,后续所有通信(输密码、传代码、运行命令)全部用协商好的AES会话密钥加密,非对称仅用于初期密钥交换(性能更高)。

    阶段3:身份认证(两种登录方式,你用的密码登录)

  • 密码认证(你当前方案):本地输入batchcom账号密码,加密后发给服务器校验;
  • 密钥认证(推荐生产环境):本地生成私钥,服务器存放公钥,无需输密码,安全性更高。
  • 阶段4:会话通道创建

    认证通过后,SSH协议会分出独立子通道,互不干扰:

    • Shell通道:远程Terminal命令行交互;
    • SFTP通道:文件上传/下载(PyCharm Deployment同步代码);
    • Forward转发通道:远程TensorBoard、调试端口映射到本地浏览器。

    3.3 SFTP:SSH内置文件传输子协议(解决你代码同步、Upload灰色问题)

    3.3.1 SFTP 和传统FTP的区别

  • FTP:独立端口、明文传输,需要额外放行21端口;
  • SFTP:完全依附SSH通道,复用SSH同一个端口(你的30192),无需额外开防火墙,全程加密;
    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)

  • PyCharm读取Mappings本地文件夹所有文件列表;
  • 通过已建立的SSH连接打开SFTP子通道;
  • 逐条发送SFTP指令:mkdir创建文件夹、put上传文件、比对文件时间戳增量同步(只传修改过的文件);
  • 传输完成关闭SFTP子通道,SSH主连接保持存活。
  • 3.4 PyCharm远程解释器如何依靠SSH运行Python代码

    你右键train.py Run的完整底层流程:

  • PyCharm复用已建立的SSH长连接;
  • 新开一个SSH Shell子通道;
  • 自动拼接远程Python绝对路径 + 服务器映射后的文件路径:/opt/conda/bin/python3 /home/batchcom/code/MambEIT/train.py
  • 将运行参数–data_dir ./data加密发送至服务器执行;
  • 服务器的print日志、报错栈信息,通过SSH加密通道实时回传到本地PyCharm控制台;
  • 运行结束关闭Shell子通道,SSH主连接保持,下次运行无需重连服务器。
  • 关键区分两种终端(底层通道完全不同)

  • 本地Windows PowerShell(前缀PS E:\\)
    • 无SSH通道,直接调用本地Windows的conda环境,不连通GPU服务器;
    • 执行python调用本地CPU,无4090显卡,依赖包和服务器隔离;
  • PyCharm内置远程Terminal(前缀batchcom@ide-xxx)
    • 基于SSH Shell子通道,所有命令在远程Ubuntu服务器执行;
    • pip install tensorboard、训练代码全部运行在4090 GPU环境。
  • 3.5 SSH端口转发(开发隐藏刚需:TensorBoard本地查看)

    SSH自带端口转发功能,分为本地转发、远程转发:

    场景:远程服务器TensorBoard网页本地打开

  • 服务器运行tensorboard –logdir=./results,监听服务器6006端口;
  • SSH建立本地端口转发:本地127.0.0.1:6006 ↔ 服务器127.0.0.1:6006;
  • 本地浏览器打开http://127.0.0.1:6006,流量通过加密SSH通道转发到服务器,不用公网开放6006端口。
  • PyCharm远程调试、可视化工具全部依赖SSH端口转发实现本地访问远程服务。

    3.6 SSH连接保活机制(解决长时间闲置断开)

    云服务器SSH闲置一段时间会自动断连,底层保活逻辑:

  • 客户端(PyCharm)定时发送ServerAliveInterval心跳包;
  • 服务器收到心跳维持SSH长连接,避免Deployment同步、远程运行掉线;
    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服务器推荐)

  • 关闭密码认证,改用SSH密钥登录,杜绝暴力破解;
  • 修改默认22端口(你的服务器使用30192自定义端口,规避扫描器批量爆破);
  • 配置防火墙仅放行SSH端口,其余端口依靠SSH端口转发访问;
  • 限制SSH登录IP白名单,仅本地公网IP可连接服务器。
  • 3.9 本章总结

    整个PyCharm远程GPU开发流程,所有交互都建立在SSH加密协议之上:

  • SSH主连接:负责身份认证、加密底座;
  • SSH-SFTP子通道:Deployment代码同步、上传下载;
  • SSH-Shell子通道:远程Terminal、Python训练代码执行;
  • SSH端口转发:本地访问远程TensorBoard、调试可视化;
    没有SSH协议,本地电脑无法安全、高效调用远端4090 GPU算力。
  • 赞(0)
    未经允许不得转载:171主机测评 » 本地PyCharm远程连接阿里云/批量计算GPU服务器及SSH技术
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址