VSCode远程连接虚拟机完整教程

VSCode远程连接虚拟机完整教程
LayVSCode远程连接虚拟机完整教程
本文将详细介绍如何使用VSCode的Remote-SSH功能连接到Linux虚拟机,实现远程开发。
简介
在日常开发中,我们经常需要在远程服务器或虚拟机上进行开发工作。VSCode提供了Remote-SSH扩展,可以让我们直接在本地VSCode中连接远程服务器或虚拟机,享受本地开发的便利性,同时使用远程服务器的计算资源。
本教程将详细介绍如何在Windows系统上配置SSH密钥,并通过VSCode连接Ubuntu或Arch Linux虚拟机。
准备工作
在开始之前,请确保您已完成以下准备工作:
- 在本地Windows系统上安装了Visual Studio Code
- 拥有一台可访问的Linux虚拟机(Ubuntu或Arch Linux)
- 确保本地Windows系统与虚拟机网络互通
在Linux虚拟机上配置SSH服务
要使用VSCode远程连接虚拟机,首先需要在虚拟机上配置并启动SSH服务。
Ubuntu系统配置SSH服务
Ubuntu是最受欢迎的Linux发行版之一,特别适合初学者。它基于Debian,提供了用户友好的界面和强大的社区支持。
在Ubuntu上安装和启动SSH服务:
更新软件包列表:
1
sudo apt update
安装OpenSSH服务器软件包:
1
sudo apt install openssh-server
启动SSH服务:
1
sudo systemctl start ssh
设置SSH开机自启:
1
sudo systemctl enable ssh
检查SSH服务状态:
1
sudo systemctl status ssh
配置防火墙允许SSH连接(如果启用了UFW):
1
sudo ufw allow ssh
Arch Linux系统配置SSH服务
Arch Linux是一个轻量级且灵活的Linux发行版,采用滚动更新模式。它专为希望完全控制系统的技术用户而设计。
在Arch Linux上安装和启动SSH服务:
更新系统:
1
sudo pacman -Syu
安装OpenSSH软件包:
1
sudo pacman -S openssh
启动SSH服务:
1
sudo systemctl start sshd
设置SSH开机自启:
1
sudo systemctl enable sshd
检查SSH服务状态:
1
sudo systemctl status sshd
配置防火墙允许SSH连接(如果使用ufw):
1
sudo ufw allow ssh
在Windows上生成SSH密钥
现在,我们在Windows电脑上创建一对全新的SSH密钥(公钥和私钥)用于免密登录。
打开命令提示符(CMD)或者 PowerShell。
运行ssh-keygen命令来生成密钥。推荐使用ed25519算法,因为它更安全、更高效:
1
ssh-keygen -t ed25519 -C "your_email@example.com"
- 您可以将引号中的内容替换成您的邮箱,方便识别密钥。
- 当提示 “Enter file in which to save the key…” 时,直接按回车,密钥将保存在默认位置。
- 当提示 “Enter passphrase…” 时,为了实现完全的免密登录,请不要输入任何内容,直接按回车键。
执行完毕后,在 %USERPROFILE%\.ssh 目录下会生成两个新文件:id_ed25519(私钥)和 id_ed25519.pub(公钥)。
配置SSH免密登录
方法一:使用命令自动复制公钥(推荐)
这是实现免密登录的最简单方法。Windows虽然没有ssh-copy-id命令,但我们可以通过一条命令完成同样的工作。
打开PowerShell(推荐使用PowerShell,功能更强大)
执行以下命令,将公钥内容复制到虚拟机的authorized_keys文件中:
1
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh username@your_vm_ip_address "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
- 请务必将
username替换成您在虚拟机上的用户名 - 将
your_vm_ip_address替换成您虚拟机的IP地址 - 执行该命令后,系统会提示您输入一次虚拟机的登录密码,这是为了验证身份并完成公钥的复制
- 请务必将
方法二:手动复制公钥
如果自动复制方法不工作,可以手动复制公钥:
在Windows上显示公钥内容并复制:
1
cat $env:USERPROFILE\.ssh\id_ed25519.pub
在Linux虚拟机上创建SSH目录并粘贴公钥:
1
2
3
4
5# 创建.ssh目录(如果不存在)
mkdir -p ~/.ssh
# 将复制的公钥内容粘贴到authorized_keys文件中
echo "在这里粘贴从Windows复制的公钥内容" > ~/.ssh/authorized_keys
配置SSH服务权限
SSH对安全性要求极高,如果目录或文件权限不正确,会直接拒绝读取密钥。
在Linux虚拟机终端中,执行以下命令设置正确的权限:
1 | chmod 700 ~/.ssh |
700权限意味着只有您自己(用户)可以读、写和执行这个目录600权限意味着只有您自己可以读、写这个文件
配置SSH服务器选项
确认SSH服务器是否允许公钥认证:
在Linux虚拟机中,使用文本编辑器打开SSH服务器配置文件:
1
sudo nano /etc/ssh/sshd_config
确保以下配置项设置正确(取消注释并设置为如下值):
1
2
3- `PubkeyAuthentication yes`:确保允许公钥认证
- `AuthorizedKeysFile .ssh/authorized_keys`:指定授权密钥文件位置
- `PasswordAuthentication yes`:**暂时**开启密码登录,这样即使公钥有问题,我们也能通过正确的密码登录来修复。等我们用密钥免密登录成功后,再把它改回 `no` 以增强安全性(不改也没问题)保存修改后重启SSH服务使配置生效:
1
2sudo systemctl restart sshd # Ubuntu
sudo systemctl restart sshd # Arch Linux
安装和配置VSCode Remote-SSH扩展
安装必要的扩展
- 打开VSCode
- 进入扩展面板(Ctrl+Shift+X)
- 搜索并安装以下扩展:
- Remote - SSH
- Remote - SSH: Editing Configuration Files



配置SSH连接
- 按
Ctrl+Shift+P打开命令面板 - 输入 “Remote-SSH: Connect to Host…” 并选择
- 选择 “Add New SSH Host…”
- 输入SSH连接命令:将
1
ssh username@ip_address
username替换为虚拟机用户名,ip_address替换为虚拟机IP地址

- 选择SSH配置文件位置(通常选择第一个选项即可)

连接到虚拟机
- 再次按
Ctrl+Shift+P打开命令面板 - 输入 “Remote-SSH: Connect to Host…” 并选择
- 从列表中选择刚才配置的主机
- 如果一切配置正确,VSCode将直接连接到虚拟机,无需输入密码
故障排除
如果连接失败,请按以下步骤排查:
在PowerShell中测试SSH连接:
1
ssh username@ip_address
如果提示输入密码,则说明SSH密钥认证未正确配置。
检查虚拟机上的SSH服务状态:
1
2sudo systemctl status ssh # Ubuntu
sudo systemctl status sshd # Arch Linux检查SSH配置文件中的关键设置:
1
2
3PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
PasswordAuthentication yes确认文件权限设置正确:
1
2chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys
总结
通过以上步骤,您应该能够成功使用VSCode连接到Linux虚拟机进行远程开发。这种方法不仅适用于虚拟机,同样适用于远程服务器。SSH密钥认证提供了安全且便捷的连接方式,避免了每次都需要输入密码的麻烦。
配置成功后,您就可以在本地VSCode中直接编辑远程服务器或虚拟机上的文件,享受与本地开发几乎一致的体验,同时利用远程服务器的性能优势。




