资讯动态

VS Code远程连接云服务器:从SSH配置到云端开发实操指南

发布时间:2026/9/18 22:14:49 来源:尧图企业网站定制
VS Code远程连接云服务器从零开始的完整实操指南很多人买完云服务器之后会卡在同一个路口——服务器已经跑起来了远程软件也装了但是并不知道怎么把一个顺手好用的开发环境搬上去。命令行能ping通、SSH也能连可一旦要在服务器上改代码、调参数、看日志就只能回到笨拙的编辑流程里。我自己的情况也类似本地电脑是主力开发机但项目跑在云端一开始我用Xshell终端配合vim硬啃后来发现真正的解法是让VS Code直接连接云服务器把远端目录、终端、调试器全部拉到本地编辑器里。这期内容就围绕“VS Code远程连接云服务器”这条主线把操作步骤、底层原理和踩坑记录一起讲清楚。这篇文章适合谁如果你是刚买云服务器、正在研究怎么高效开发的新手或者已经在用终端SSH但觉得效率不够的开发者这篇内容会帮你绕开很多弯路。我尽量不废话把该装的、该配的、该注意的一次说完整。1. 为什么要用VS Code连服务器方案选型背后的逻辑1.1 远程开发的几种主流方式先说个场景你买好了一台云服务器系统是Linux有公网IP能ping通。接下来你要在服务器上跑程序、改代码。你能怎么做第一种是最原始的用终端工具Xshell、PuTTY、Windows Terminal等SSH登录服务器然后在服务器上用vim或者nano改代码。这个方案够稳但开发体验非常原始——没有语法高亮补全没有文件树浏览想在两个文件之间跳来跳去就特别费劲。第二种是搭图形化桌面装VNC或者X2Go远程连上去看到一个完整桌面。这适合特殊情况但云服务器本身就没有显示器硬跑一个桌面环境非常占用内存操作延迟也明显。说实话不太划算。第三种也就是这篇文章要重点讲的是在本地VS Code里通过Remote-SSH插件直接操作远端服务器。简单说就是在本地打开的VS Code窗口里左边资源管理器显示的是服务器上的文件夹底部终端直接就是服务器上的shell代码补全、跳转、debugger全部照常工作。你感觉是在本地写代码实际文件在服务器上进程也跑在服务器上。对比一下这三种方式的适用场景我通常这样给朋友建议方案优点缺点适合场景终端SSHvim最稳定、资源占用最低编辑效率低无法可视化浏览文件临时登录排查问题VNC图形桌面完整桌面积累占用资源高、延迟明显少见需求基本不建议VS Code远程开发开发体验接近本地、资源占用适中前期需要一点配置服务器要能联网长期在远端写代码、调试、跑服务1.2 Remote-SSH的核心原理很多人第一次用VS Code连服务器时会好奇为什么本地装个插件就能操作远端文件这不就是普通的“SSH文件传输”吗其实Remote-SSH的原理比这要复杂一些。当我点击连接时VS Code会在本地通过SSH连接远程服务器然后自动检测服务器架构x86_64还是ARM等再在服务器上的特定目录下载并启动一个vscode-server服务端组件。这个服务端组件承担了文件索引、语言服务、插件运行等繁重工作而本地VS Code窗口实际上变成了一个“遥控器”的界面壳子负责渲染代码、接收键盘输入、展示插件界面。你可以把vscode-server想象成服务器上的一个后台管家专门帮你把代码、调试器、终端这些高负载模块运转起来你本地只需要一个轻量的界面就能指挥它。这就是为什么Remote-SSH远程开发时处理大文件、跑大型工程比纯本地用Samba挂载共享文件夹要舒服得多——因为所有重活都在服务器上干本地网络只传输屏幕上的变化。需要特别注意一点vscode-server能否顺利安装取决于服务器的网络状况和操作系统的兼容性。如果你发现第一次连接速度很慢不是卡住了而是在下载安装这个服务端组件。针对这一点文章后面会单独讲怎么排查和处理。2. 动手前的准备云服务器端的环境必须长这样2.1 从购买到初始化几个容易被忽略的选项既然是讲“VS Code远程连接云服务器”服务器是绕不开的前置条件。关于购买我直接给一份不会出错的配置建议。配置选择如果只是跑轻量项目或者学习2核4G就够用如果打算跑数据集处理或容器服务可以考虑4核8G往上。内存最好别低于2G否则vscode-server加上编译器会比较吃力。系统镜像推荐选择Ubuntu 22.04 LTS或者Debian 12。这类系统SSH服务默认装好包管理器使用方便后续装依赖也简单。不太建议选CentOS 7那种停止维护的老版本软件源更新会让人崩溃。地域选择优先选离自己近的节点减少网络延迟连接体验会明显好一些。登录方式一般云厂商会给你两个选择密码登录或者密钥对登录。这里强烈建议选密钥对一个是安全性更高另一个是配合VS Code可以实现免密直连。如果已经购买时选了密码后面也可以通过命令自己生成密钥这个部分下面会展开。服务器拿到手之后别急着去连VS Code先把基础环境理一遍。执行以下命令更新软件源并确认SSH服务状态sudo apt update sudo apt upgrade -y sudo systemctl status ssh如果看到Active: active (running)就说明SSH服务正常。有些官方镜像默认没开SSH这时候可以手动安装并启动sudo apt install -y openssh-server sudo systemctl enable --now ssh还有一个很多新手会漏掉的点云服务器的安全组策略。你在本地SSH连不上服务器大多数情况不是系统坏了而是云控制台的防火墙没有放行22端口。请在云厂商的控制台里找到“安全组”或“防火墙”选项添加入方向规则协议TCP端口22来源如果图省事可以写0.0.0.0/0但如果有固定IP只放行自己的IP更安全。2.2 用户与权限别图省事用root连接之前建议你先想清楚用哪个用户登录。很多云服务器的镜像直接给了root权限新手图省事就总是用root。我真心建议你在服务器上新建一个日常使用的普通用户把它加入sudo组用普通用户进行远程开发。理由很简单VS Code里可能会运行构建脚本、执行测试命令一旦这些操作因为手误干了坏事普通用户的破坏边界比root小得多。创建用户并设置sudo权限sudo adduser dev sudo usermod -aG sudo dev上面创建了一个名为dev的用户密码自行设置。接下来要做的是把本地的公钥放到服务器的dev用户目录里这样才能实现VS Code的密钥登录。这个操作推荐用ssh-copy-id它会自动把公钥追加到服务器对应authorized_keys文件并处理好目录权限ssh-copy-id devyour_server_ip如果你的操作系统没有ssh-copy-id命令也可以手动把本地~/.ssh/id_rsa.pub里的内容追加到服务器~/.ssh/authorized_keys文件中记得把文件权限设置成600、目录权限设置成700否则SSH服务会拒绝加载这个公钥。3. 本地VS Code配置与连接全过程3.1 必备插件与本地环境检查服务器那边准备好之后回到本地电脑。首先确保VS Code已经安装最新版本官方完全足够用。然后打开扩展市场搜索“Remote - SSH”并安装这是微软官方出的插件。安装完成后侧边栏会出现一个远程资源管理器图标后面的一切操作都围绕它展开。除了Remote-SSH本身我还建议顺手装一个“Remote - SSH: Editing Configuration Files”插件这样后续编辑SSH配置文件时会有语法高亮提示不容易写错。其他语言类插件不用急着装等连上服务器之后再装到远端。在连接之前先做一步自检打开本地终端手动执行SSH命令试试能否直接登录。比如ssh devyour_server_ip如果能顺利进去说明网络通畅、密钥验证也没问题。如果这里就报错那问题大概率出在密钥或安全组上先解决这个再继续VS Code的环节。3.2 密钥对生成与config配置文件写法如果你在云服务器购买页面已经下载过私钥文件那么直接指定私钥路径就行。一般来说为了统一和方便我推荐用ssh-keygen生成专门的密钥对再把公钥传到服务器。生成密钥的命令很简单ssh-keygen -t ed25519 -C your_emailexample.com之前我整理过密钥算法的选择实际测试下来ed25519比传统的RSA 2048/4096更快、密钥更短安全性也够现在各家主流SSH客户端和云端系统都支持得很好。生成过程中会问你保存路径和口令路径用默认的~/.ssh/id_ed25519即可口令可以留空如果留空后续VS Code连接时就不会反复要求输入密码。公钥传到服务器之后本地需要配置好SSH config文件这样才能让VS Code通过一个简短的别名直接连上。编辑本地~/.ssh/config文件没有就创建一个加入以下内容Host my-cloud-server HostName your_server_ip User dev Port 22 IdentityFile ~/.ssh/id_ed25519简单解释一下这几个字段Host是自定义的别名后续在VS Code连接列表里看到的就是它HostName填服务器公网IPUser填服务器上的登录用户名Port一般默认22如果改过端口就填对应的IdentityFile指明私钥文件路径上面写的路径要对应你自己的实际路径。保存文件后命令行测试一下ssh my-cloud-server如果能够免密登录那么VS Code的配置就已经成功一半了。3.3 正式连接第一次接入的完整过程现在打开VS Code按CtrlShiftP打开命令面板输入Remote-SSH: Connect to Host。你应该能在下拉列表中看到刚配置好的my-cloud-server点击它VS Code会新开一个窗口并开始建立连接。第一次连接时左下角会显示“Setting up SSH Host”同时底部可能出现下载vscode-server的进度条。这个过程视网速可能持续几十秒到几分钟属于正常现象。等左下角的连接状态变成“SSH: my-cloud-server”就说明已经连接成功。连接后做三件事第一点左边资源管理器里的“打开文件夹”输入服务器上要开发的目录路径比如/home/dev/project如果目录不存在会提示是否创建确认即可。第二打开终端Ctrl检查一下当前工作目录敲pwd和python3 --version。如果这些命令都能正常返回说明终端已经直接进入服务器环境。第三在扩展面板里搜索一个Python或前端插件并安装。注意安装时确保插件详情页显示的是“SSH: my-cloud-server”这样插件只会安装到服务器端的vscode-server里不会污染本地环境。以后每次连接插件自动同步加载。整个连接流程走顺之后你的开发姿势会变成这样在VS Code里直接编写和修改服务器上的文件按保存后立即生效终端里跑服务、看日志都是服务器里的真实进程断网了文件也不会丢因为文件本来就在云端。4. 连接后的开发工作流文件、调试与端口转发4.1 远端文件管理与代码调试成功连上之后日常开发就开始变得顺手了。左边资源管理器可以像本地目录一样浏览、新建、改名、删除文件和文件夹右键菜单里可以直接在集成终端中打开某个目录文件搜索、全局替换、Git源代码管理这些功能全部照常运作。真正让我觉得“值回票价”的是调试功能。假如我在服务器上有一个Python项目按F5打开调试配置选择Python环境后验证过的断点会在服务器端生效。修改代码后无需手动同步因为VS Code编辑的就是云端的实际文件调试器、输出面板、变量监视全都和处理本地项目一样。不过这里有个注意点远端调试前需要在服务器上装好对应的语言服务扩展。比如Python推荐在远程环境里安装“Python”扩展和“Pylance”这样代码补全和类型检查才准确。有些新手第一次连上后发现写Python没有补全就是因为扩展装到了本地而不是远端。4.2 端口转发把服务映射到本地浏览器日常开发中经常遇到这种情况程序跑在服务器上监听某个端口我想在本地浏览器里预览这个服务。比如Flask启动在5000端口或者Vite开发服务器在5173端口。直接用本机IP去访问那是不可能的打开浏览器输服务器的公网IP加端口也不一定通因为安全组默认只会放行22端口而且服务器如果绑定了回环地址只有本机才能访问。VS Code为此提供了非常实用的端口转发功能。当远端某个端口有进程监听时终端下方或端口面板会自动展示这个端口它会自动把该端口映射到本地也就是说你在本地浏览器里访问http://localhost:5000等于访问服务器上5000端口那个服务。更详细的用法是打开VS Code底部“端口”面板点击“转发端口”按钮手动输入要转发的端口号比如8080或者3000。VS Code会生成一个本地地址和端口。注意这个转发通道是加密SSH隧道数据安全性和SSH本身保持一致比裸奔暴露端口到公网要安全得多。我在实际项目中就经常用这个功能比如想在本地调试一个对接微信支付的回调服务先在服务器上把服务跑起来然后通过端口转发在本地postman测试整个链路既安全又方便。4.3 设置远端默认终端与编码问题还有一个容易被坑的地方是终端和编码。服务器上的默认locale如果没配置好终端里跑Python打印中文可能会报UnicodeEncodeError。建议在服务器上设置好UTF-8环境sudo apt install -y locales sudo locale-gen en_US.UTF-8然后在~/.bashrc或~/.profile里追加export LANGen_US.UTF-8 export LC_ALLen_US.UTF-8保存后重新登录或执行source ~/.bashrc生效。这样至少能解决大部分中文乱码和编码相关的奇怪报错。另外VS Code默认的远程终端可以自定义默认shell。如果服务器上装了zsh或fish可以通过命令面板Remote-SSH: Open Configuration File修改或者设置terminal.integrated.shell.linux来改变。不过我建议先用好默认的bash没必要一上来就折腾shell配置。5. 常见问题与排查技巧实录5.1 连接失败超时、拒绝连接、权限报错这部分几乎每个用远程开发的都会碰到我把它整理成一个速查表遇到问题先对应检查。报错或现象大概率原因解决思路连接超时安全组未放行22端口服务器公网IP变化本地防火墙阻拦检查云控制台安全组确认IP是否已变化Connection refusedSSH服务没跑起来端口不是22登录云控制台VNC检查ssh服务状态Permission denied (publickey)私钥没指定或路径错误authorized_keys权限不对查看ssh verbose日志调整权限卡在Setting up SSH Hostvscode-server下载慢或失败手动下载安装vscode-server或换网络连上后文件列表读取慢目录太大vscode-server正在索引等待索引完成或在设置中排除无关目录这里挑两个最常见的详细展开。第一个是“Permission denied”。如果你的私钥文件权限太开放SSH会拒绝使用。Linux和macOS上执行chmod 600 ~/.ssh/id_ed25519Windows系统的话确保私钥文件没有被其他用户占用且目录权限正确。有时候用了非默认私钥路径却忘了在config里指定IdentityFile同样会报这个错。另一个是vscode-server下载卡住。表现是第一次连接时左下角一直转圈几十秒甚至几分钟没反应。解决办法是直接在服务器上手动下载对应版本的vscode-server然后把压缩包放到指定目录解压。具体做法可以这样本地打开VS Code的“关于”页面查看版本号根据版本号和服务器架构拼出下载链接在服务器上通过wget下载再按官方目录结构解压。如果你手上的服务器网络不好这个手动下载方案几乎是最稳妥的。5.2 连接后扩展装不上或不同步这种情况通常是插件安装位置错了。注意看插件标签有的显示“在SSH: my-cloud-server中安装”有的显示“在本地安装”。如果你原来在本地装过同名插件远程需要重新安装一份很多新手会误以为连上后插件会自动带过去实际并不会Remote-SSH的设计是远端与本地插件互相隔离。此外如果插件安装一直失败很可能是远端机器在访问VS Code扩展市场时被卡住。这时候可以检查服务器上的网络与DNS比如尝试手动下载扩展的vsix文件再说。操作路径是在网页端VS Code marketplace搜索并下载VSIX文件然后在VS Code的扩展面板右上角选择“从VSIX安装”上传到远端即可。5.3 日常操作避坑清单再说几个我用下来特别值得记住的细节这些在官方文档里基本不会写。第一尽量不要在服务器上直接改/etc/ssh/sshd_config后把PasswordAuthentication设为no除非你已经测试过密钥登录100%成功。曾经有人在云控制台重启SSH服务后发现密钥也连不上了最后只能通过VNC进去救回来过程相当麻烦。理智的做法是先用密钥连接成功后再考虑是否关闭密码登录。第二清理known_hosts是一个重要的排障手段。如果本地换过密钥、重装过系统、或者服务器被重置过本地known_hosts里残留了旧的指纹信息会导致连接时出现“Host key verification failed”的警告。这时候直接编辑本地~/.ssh/known_hosts删掉对应IP或别名的行再重新连接即可。第三不要在远端用code命令随便安装扩展或运行不熟悉的命令。vscode-server的权限和普通用户权限是一样的但因为这个服务常驻后台占用一定内存如果看到服务器内存接近满可以重启一下vscode-server释放缓存。操作方式是在命令面板里执行Remote-SSH: Kill VS Code Server on Host断开重连即可。第四利用好“任务”功能。如果你每次连上都要执行一串命令启动服务可以在VS Code里配置tasks.json绑定快捷键一键执行启动、打包、部署脚本。这个属于工作流层面的优化投入产出比很高。最后再分享一个实用习惯我自己的远程开发习惯是本地VS Code固定使用一套工作区配置把远程服务器的项目文件夹和本地调试目录结合到一起配合端口转发、终端多任务慢慢就形成了一套固定的云上开发工作流。用久了你会发现VS Code远程连接云服务器本质上是把“云服务器的运维”和“本地开发的体验”粘合在了一起省去了大量文件同步和无意义的重复操作。如果在配置过程中碰到奇怪的问题我建议先用命令行SSH回到最基本的登录方式排除网络和服务层面的问题再回到VS Code里排查。这个思路能帮你快速缩小问题边界。搞完这套之后你完全可以享受一下“本地编辑、云端运行”的感觉再回头看看当初那个在终端里用vim翻文件的自己估计会有点怀念。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价