十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

PyCharm 远程连接 Ubuntu:SSH 解释器与代码同步实战

PyCharm 远程连接 Ubuntu:SSH 解释器与代码同步实战 笔记本上跑一个稍微像样的训练脚本或者数据处理任务风扇就开始起飞而旁边那台装了 Ubuntu 的虚拟机、或者公司机房里那台常年空闲的远程服务器CPU 占用常年个位数——这大概是绝大多数人第一次冒出用 PyCharm 连接 Ubuntu 虚拟机/远程服务器这个念头的场景。我最早也是这么干的本地只有一台轻薄本数据在服务器上代码在本地中间靠 scp 和 ssh 来回倒腾改一行代码要传一次文件调试基本靠 print。后来把 PyCharm 的远程解释器和 Deployment 配通之后写代码的手感和本地几乎没区别只是运行的算力换了个地方。这篇东西讲的就是完整过程从 Ubuntu 那边要准备什么到 PyCharm 怎么加 SSH 配置、怎么挂远程解释器、怎么让代码自动同步过去、跑起来之后模块找不到怎么办、Permission denied 到底卡在哪一层。内容偏实操默认你有基本的 Linux 命令行常识但不需要你懂 SSH 底层协议。适合三类人刚装完 VMware 里的 Ubuntu 想接上 IDE 的、手里有台开发服务器但一直用 VS Code Remote-SSH 想换口的、以及配到一半报错卡住的。1. 动手之前先确认你的 PyCharm 版本和连接目标很多人第一步就踩空不是配置写错了而是手里那个 PyCharm 根本没这个功能。所以先把前提讲清楚能省掉后面半小时的无效排查。1.1 远程解释器是专业版功能社区版做不了PyCharm 的**远程解释器Remote Interpreter和部署同步Deployment**这两块按照 JetBrains 官方的功能划分属于 Professional 版本的能力。社区版Community Edition打开Settings搜索 Interpreter你翻遍整个界面也找不到 Add Interpreter → On SSH 这个入口因为它在社区版里被砍掉了。这不是藏起来了是不存在。所以如果你现在装的是社区版摆在面前的有三条路方案需要什么体验适合谁专业版远程解释器PyCharm Professional最完整断点调试/代码补全都走远程长期跑远程任务的人社区版 sshfs 挂载目录本地装 sshfs/WinFsp目录映射成本地盘但没有远程解释器只想直接在远程文件上改代码换用 VS Code Remote-SSHVS Code Remote 扩展免费体验接近本地不想为 IDE 付费、能接受换 IDE关于激活这件事我多说一句网上搜到的所谓永久激活码、补丁、脚本绝大多数夹带东西而且一旦 IDE 出问题排查成本极高。正规途径无非是官方 30 天试用、在校学生的教育授权、开源项目的免费授权或者公司统一采购。这部分我不展开只提醒一点——不要为了省事把来路不明的脚本往有生产数据的机器上跑。1.2 虚拟机、WSL、物理服务器三条路的差异先想明白虽然标题写的是 Ubuntu 虚拟机和远程服务器但实际上大家手上的目标环境大概分三类配置思路相通但细节有区别。VMware/VirtualBox 里的 Ubuntu 虚拟机本质是一台有独立 IP 的完整机器前提是网络模式配对。这是最容易配通、也最容易翻车的场景因为虚拟机的 IP 会因为 NAT 和 DHCP 变来变去今天能连明天就 Connection refused。WSL 里的 Ubuntu情况比较特殊WSL2 有自己的虚拟网卡Windows 本地访问它其实用localhost加转发端口就行很多时候根本不需要走 SSH。但如果你想练远程连接的流程或者团队要求统一环境那在 WSL 里装个 sshd 也能连。注意 WSL 的 IP 重启会变别写死。独立的远程服务器或云主机最接近生产环境也是配置最省心的——只要服务器能 ssh 上去PyCharm 这边配好同样的信息就行。唯一要注意的是有些云主机默认端口不是 22以及安全组要放开对应端口。1.3 开工前的四件事清单动手之前先花两分钟核对能避免大部分配到一半发现方向错了Ubuntu 那边能正常ssh 用户名IP登录且知道自己的用户名和登录密码/密钥。记下准确的 IP 和 SSH 端口默认 22但云主机常见 2222 之类。远程有一个明确的项目目录比如/home/你的用户名/projects/demo别用/root或者/tmp凑合。远程装好了要用的 Python 版本并知道它的绝对路径这一步后面会说怎么查。提示不要用 root 用户做日常远程开发。一来权限过大误删风险高二来后面经常会遇到权限相关的报错用普通用户能让问题边界更清晰。2. Ubuntu 这一侧真正需要准备好的东西PyCharm 的工作方式是它本身不做任何魔法连接就是调用 SSH 客户端登录过去然后在那边启动一个 Python 进程做交互。所以能不能连上百分之八十取决于 Ubuntu 这边是否把门打开了。2.1 sshd 装没装、跑没跑、端口对不对Ubuntu 桌面版默认不一定装了 SSH 服务端。很多人第一次配就遇到 Connection refused跑去看 PyCharm 的配置其实问题在对面。判断方法很直接在 Ubuntu 终端执行# 看 ssh 服务是否在运行 sudo systemctl status ssh # 如果提示 Unit ssh.service could not be found说明没装 sudo apt update sudo apt install -y openssh-server # 装完启动并设为开机自启 sudo systemctl enable --now ssh装完之后再做一次状态确认看到active (running)才算过。另外要确认监听端口和你想的是不是一致sudo ss -tlnp | grep sshd输出里如果是0.0.0.0:22表示所有网卡都在 22 端口监听虚拟机外部可连如果只有127.0.0.1:22那说明只监听本地回环外部怎么连都连不上需要改/etc/ssh/sshd_config里的ListenAddress。这个细节在只写了网络部分配置的镜像里挺常见。2.2 虚拟机的网络模式决定了 PyCharm 能不能看到它这是虚拟机场景里被问得最多的问题我单独拎出来说。NAT 模式下虚拟机通过宿主机访问外网外网包括你宿主机上的 PyCharm默认访问不到虚拟机。很多人在这卡半天明明ssh localhost在虚拟机里能通PyCharm 就是连不上。解决办法有两个一是改用桥接模式让虚拟机从路由器拿一个和宿主机同网段的独立 IP二是保留 NAT但在虚拟机的网络设置里加一条端口转发把宿主机的某个端口映射到虚拟机的 22。桥接模式的好处是 IP 相对稳定、理解成本低宿主机和虚拟机在同一个网段PyCharm 直接填虚拟机的 IP 就行。缺点是如果换了网络环境比如从公司网换到家
返回列表