VS Code 1.90 远程开发配置:Ubuntu Server 22.04 3步实现SSH免密连接
对于需要在远程Linux服务器上开发的程序员来说,图形界面的缺失常常让人头疼。想象一下这样的场景:你正在Windows或macOS上工作,但项目需要在Ubuntu Server 22.04上运行和测试。传统的解决方案要么是通过繁琐的命令行操作,要么是依赖不稳定的图形界面转发。而VS Code的Remote-SSH扩展彻底改变了这一局面,让你能在本地享受完整的IDE体验,同时代码实际运行在远程服务器上。
1. 环境准备与SSH密钥生成
在开始配置之前,我们需要确保两端环境就绪。本地机器可以是Windows 10/11或macOS,而远程服务器则需要是Ubuntu Server 22.04 LTS。VS Code 1.90版本对远程开发功能进行了多项优化,特别是SSH连接稳定性和文件同步效率。
生成SSH密钥对是免密连接的基础。打开本地终端(Windows用户可使用PowerShell或WSL终端),执行以下命令:
ssh-keygen -t ed25519 -C "vscode_remote_dev"这个命令会生成更安全、更快速的Ed25519密钥对。系统会提示你输入保存位置(直接回车使用默认位置)和密码短语(可选,为安全性建议设置)。生成的密钥默认保存在:
- Windows:
C:\Users\你的用户名\.ssh\ - macOS/Linux:
~/.ssh/
查看生成的公钥内容,你将需要它来配置服务器:
cat ~/.ssh/id_ed25519.pub输出应该类似于:
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIJv6Q5JzJ7VgJjK7X9Xm6wT1pLmNnFtZdJk1q2bY5Gb vscode_remote_dev提示:如果计划连接多个服务器,可以为每个服务器生成独立的密钥对,使用
-f参数指定不同文件名,如ssh-keygen -t ed25519 -f ~/.ssh/vscode_server1_ed25519
2. 服务器端配置与密钥部署
现在我们需要将公钥部署到Ubuntu Server上。首先确保服务器已安装OpenSSH Server:
sudo apt update && sudo apt install openssh-server -y sudo systemctl enable --now ssh检查SSH服务状态确认其正常运行:
sudo systemctl status ssh接下来将本地公钥添加到服务器的授权密钥中。有两种常用方法:
方法一:使用ssh-copy-id(最简单)
ssh-copy-id -i ~/.ssh/id_ed25519.pub 用户名@服务器IP方法二:手动复制(当ssh-copy-id不可用时)
- 将公钥内容复制到剪贴板
- SSH登录服务器:
ssh 用户名@服务器IP - 在服务器上执行:
mkdir -p ~/.ssh echo "粘贴你的公钥内容" >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys chmod 700 ~/.ssh
为增强安全性,建议修改服务器SSH配置:
sudo nano /etc/ssh/sshd_config进行以下关键修改:
PermitRootLogin no PasswordAuthentication no PubkeyAuthentication yes ChallengeResponseAuthentication no保存后重启SSH服务:
sudo systemctl restart ssh注意:在禁用密码认证前,务必确认密钥登录正常工作,否则可能被锁在服务器外
3. VS Code远程开发环境配置
现在进入最激动人心的部分——配置VS Code的Remote-SSH扩展。首先确保你已安装VS Code 1.90或更高版本。
安装Remote-SSH扩展:
- 打开VS Code扩展市场(Ctrl+Shift+X)
- 搜索"Remote - SSH"并安装
配置SSH连接:
- 点击左下角绿色"远程窗口"图标
- 选择"Remote-SSH: Connect to Host..." > "Configure SSH Hosts..."
- 选择你的SSH配置文件(通常是
~/.ssh/config)
添加服务器配置示例:
Host my_ubuntu_server HostName 192.168.1.100 User devuser IdentityFile ~/.ssh/id_ed25519 IdentitiesOnly yes保存后,你可以在VS Code的远程资源管理器中看到新配置的服务器。点击连接,VS Code会在服务器上自动安装必要的服务端组件。首次连接可能需要几分钟时间。
连接成功后,你会注意到左下角显示"SSH:your-server-name",表示你已成功进入远程开发环境。现在你可以:
- 打开远程文件夹(如
/home/devuser/projects) - 安装针对远程环境的扩展(C++、Python等)
- 使用集成终端直接在服务器上执行命令
高级配置技巧:
- 对于跳板机场景,配置SSH代理转发:
Host jump_host HostName jump.example.com User jumpuser IdentityFile ~/.ssh/jump_key Host target_server HostName 192.168.100.10 User targetuser IdentityFile ~/.ssh/target_key ProxyJump jump_host - 优化性能:对于高延迟连接,在SSH配置中添加:
Host * ControlMaster auto ControlPath ~/.ssh/sockets/%r@%h-%p ControlPersist 600
4. 常见问题排查与性能优化
即使按照步骤操作,有时也会遇到连接问题。以下是三个最常见的故障及其解决方案:
问题一:VS Code卡在"Setting up SSH Host XX: Copying VS Code Server to host with scp"
解决方案:
- 手动删除服务器上的旧版本:
rm -rf ~/.vscode-server/bin/* - 在VS Code设置中搜索"remote.SSH.enableRemoteCommand",启用它
- 或者使用预发布版本的Remote-SSH扩展(往往包含最新修复)
问题二:SSH连接超时或被拒绝
排查步骤:
- 检查网络连通性:
ping 服务器IP - 验证SSH端口是否开放:
telnet 服务器IP 22 - 检查服务器SSH服务状态:
sudo systemctl status ssh
问题三:文件同步缓慢
优化方案:
- 在VS Code设置中启用"remote.SSH.useLocalServer"
- 排除大型或不必要的文件同步,创建
.vscode/settings.json:{ "remote.SSH.exclude": [ "**/node_modules", "**/.git", "**/__pycache__" ] } - 考虑使用
rsync替代原生同步:rsync -avz --exclude='node_modules' ./project devuser@server:/path/to/project
性能对比表:
| 配置项 | 默认值 | 优化值 | 效果提升 |
|---|---|---|---|
| 压缩传输 | 关闭 | 开启 | 减少30-50%传输量 |
| 保持连接 | 关闭 | 开启 | 减少重复认证时间 |
| 本地服务器 | 关闭 | 开启 | 降低CPU占用20% |
| 排除规则 | 无 | 自定义 | 减少同步文件量60%+ |
对于C++/Python开发者,连接成功后还需要配置语言环境:
- 安装对应扩展(如C++、Python)
- 配置调试环境(创建
.vscode/launch.json) - 设置代码格式化工具(clang-format、autopep8等)
示例Python调试配置:
{ "version": "0.2.0", "configurations": [ { "name": "Python: Current File", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "justMyCode": true } ] }通过以上步骤,你将获得一个无缝的远程开发体验,就像在本地工作一样流畅,同时享受服务器端的强大计算能力和环境一致性。