VSCode 88 - Remote Development using SSH
# 前言
远程连接是项目开发过程中的常见需求,例如就我个人而言,我可能需要从个人笔记本远程连接到实验室工位的台式机,也可能需要从任意电脑上连接到组里的服务器,然后进行工程开发或调试正在运行中的系统。直接用 ssh 连接只适用于简单的文件操作,无法适应更复杂的需求,集成 IDE 是必不可少的。
VSCode 的 Remote SSH 扩展允许我们在远程连接时充分利用 VSCode 的功能集,具有和本地开发几乎完全相同的开发体验,包括代码的高亮、智能补全、导航、调试,项目管理,以及文件系统操作等等。当然,所有数据都在远端设备上存储和管理,本地仅需安装基础 ssh 组件以及启用了 Remote SSH 扩展的 VSCode 。
本文将简要介绍如何利用 VSCode Remote SSH 搭建远程连接的开发环境,主要用作日后复现参考使用。我个人是从 Windows 11 远程连接到 Ubuntu 22.04 Desktop 的,对于未能详尽解释的细节、以及可能出现的问题及其解决方案,请参阅 VSCode 官方文档,详见文末【参考资料】一节。
在本文中,我们可能会以 local / client 指代本地设备,并以 remote / host / server 指代远端设备。
# 基础 SSH 配置
我们的目标是在 VSCode 上利用 ssh 搭建从本地设备连接到远端设备的开发环境,也就是说,本地设备将作为 ssh client ,而远端设备将作为 ssh server 。因为配置 VSCode 时可能会遇到额外的问题,为避免后续搭建过程中陷入麻烦,我们建议先确保 ssh 连接正常,再配置 VSCode 上的 ssh 连接。
TODO. 另开一篇单独的文章介绍 ssh 连接,这部分内容直接引用过去
# 配置 SSH Server
在远端设备上配置 ssh server ,例如在 Ubuntu 上:
apt install openssh-server
检查 ssh server 是否正常工作:
service ssh status
如果 Ubuntu 上开启了 UFW 防火墙,可能需要额外配置 UFW 以允许 ssh 访问:
ufw allow ssh
ufw status
最后,获取远端设备 IP 地址以备客户端连接所用:
hostname -I
# 配置 SSH Client
在本地设备上配置 ssh client ,例如在 Ubuntu 上:
apt install openssh-client
如果是在 Windows 10/11 上,可以直接通过 设置 → 应用 → 可选功能 搜索并安装 OpenSSH 客户端,或通过 Windows 应用商城安装,比通过安装包安装更加方便,而且不容易出问题。
# 建立 SSH 连接
尝试建立 ssh 连接,其中 <username>
为登录到远端时所用的用户名,<ipaddress>
为远端设备的 IP 地址,<port>
为(可选的)端口:
ssh <username>@<ipaddress> [-p <port>]
如果连接失败,请读者根据具体情况查询其它资料尝试解决。
可以配置 ssh 密钥以实现免密登录。在本地设备上创建公钥私钥对(示例命令假定为默认路径),并将公钥复制到远端设备的系统环境中:
ssh-keygen -t rsa -C "your_email@example.com"
ssh-copy-id -i ~/.ssh/id_rsa.pub <username>@<ipaddress>
# VSCode SSH 配置
首先在 VSCode 上安装并启用 Remote SSH 扩展,然后:
可以通过以下三种方式之一呼出(同一个)配置新的 ssh 连接的窗口:
通过
Ctrl + Shift + P
执行命令Remote-SSH: Connect to Host...
通过 GUI 界面左侧工具栏打开 Remote Explorer ,光标移动至 SSH 栏目处呼出子按钮组,点击形如
+
的按钮点击 GUI 界面左下角形如
><
的有色按钮,界面上方弹出命令框,选择Connect to Host...
根据指引使用建立 ssh 连接的命令(例如 ssh <username>@<ipaddress>
)导入新的 ssh 连接配置,随后完成连接。
亦可直接修改本机 ssh 配置文件(例如 Windows 上默认为 C:\Users\JM233333\.ssh\config
):
Host <hostname>
User <username>
HostName <ipaddress>
[Port <port>]
配置完成后,仍可通过上述三种方式快速连接已保存的 ssh 远端目标。
# 参考资料
Visual Studio Code - Remote Development using SSH (opens new window)
Visual Studio Code - Remote Development Tips and Tricks: SSH tips (opens new window)
Complete Guide to Configuring SSH in Ubuntu (opens new window)
- 01
- Reading Papers - Kernel Concurrency06-01
- 02
- Linux Kernel - Source Code Overview05-01
- 03
- Linux Kernel - Per-CPU Storage05-01