VS Code 远程开发:为开发机、AICoder 提供本地般的开发体验
本文将介绍如何通过在 Visual Studio Code 中配置远程开发环境,使你能够像本地开发一样使用远程开发机或 AICoder。
NOTE
VS Code 左下角显示已连接到智算云平台的 AICoder。AICoder 是智算云平台提供的免费提供小规格的 CPU 实例资源,方便用户完成训练前的数据准备和文件上传等任务。
什么是 Remote - SSH 扩展?
Visual Studio Code 的 Remote - SSH 扩展 允许我们通过 SSH 连接远程主机,提供了本地级别的开发体验。
- 在 VS Code 编辑器中随意操作远程机器上的文件和文件夹
- 在 VS Code 集成终端中运行命令
- 使用完整的智能感知(补全)、代码导航和调试
- 安装其他扩展,充分利用 VS Code 的所有其他功能
前提条件
在开始之前,请确保你已完成以下步骤:
本地安装 Visual Studio Code。
本地已安装兼容的 OpenSSH 客户端(PuTTY 不支持)。
操作系统 安装指令 macOS 已预装。 Windows 10 1803+/Server 2016/2019 1803+ 安装 Windows OpenSSH 客户端。 较早版本的 Windows 安装 Git for Windows。 Debian/Ubuntu sudo apt-get install openssh-client
RHEL/Fedora/CentOS sudo yum install openssh-clients
安装 Remote-SSH 扩展
安装 Remote - SSH 扩展 ,也可以选择安装 Remote Development 远程开发扩展包。
NOTE
或在 VS Code 中搜索 Remote - SSH 或 Remote Development 进行安装。
获取 SSH 主机连接信息
为了在 Remote - SSH 扩展中添加智算云平台的 SSH 远程主机,我们需要登录智算云平台,获取开发机或 AICoder 的 SSH 配置信息。
WARNING
在继续之前,请确认你已在可以成功 SSH 远程登录开发机或 AICoder。
- 开发机支持 SSH 用户名/密码认证,也支持基于 SSH 密钥的认证。如需帮助,请参考 SSH 远程登录。
- 由于 AICoder 仅支持基于 SSH 密钥的身份认证,所以必须提前在机器内添加您的 SSH 公钥。如需帮助,请参考添加 SSH 公钥指南。
开发机
登录智算云平台,一键复制开发机 SSH 登录命令。
AICoder
登录智算云平台,打开 AICoder Shell。如果是首次使用,可能需要时间来申请和创建 AICoder 实例。
在 AICoder Shell 中输出 SSH banner 信息后,点击右上角的密钥按钮,复制弹窗中的 SSH 连接命令:
添加 SSH 远程主机
获取开发机或 AICoder 的 SSH 连接信息后,可以添加到本地的 SSH 配置文件中。
在左侧找到 Remote - SSH 扩展,点击新建远程。
NOTE
或直接在 VS Code 中,按 ctrl + shift + p
打开命令面板,输入 "remote",从命令面板中选择 Remote-SSH: Add New SSH Host...
,添加一个 SSH 远程连接。
在 VS Code 顶部的弹窗中,直接粘贴之前复制的开发机或 AICoder 的 SSH 连接命令,
随后选择要使用的配置文件。扩展会自动处理剩下的配置。
例如,输入 AICoder 的 SSH 连接命令 ssh -J ssh-jumper.cloud.infini-ai.com root@aic-c7lkg5b23mieqw7d
会生成以下配置:
Host aic-c7lkg5b23mieqw7d
HostName aic-c7lkg5b23mieqw7d
ProxyJump ssh-jumper.cloud.infini-ai.com
User root
添加成功后可直接连接,或者左侧扩展中查找已添加的 SSH 主机。
连接成功后,VS Code 会自动设置环境。你可以通过状态栏查看连接的主机,并使用 File > Open...
或 File > Open Workspace...
打开远程机器上的任意文件夹或工作区。
NOTE
上图中 VS Code 已连接到智算云平台的 AICoder。AICoder 是智算云平台提供的免费提供小规格的 CPU 实例资源,方便用户完成训练前的数据准备和文件上传等任务。
已知限制
Remote - SSH 限制
- 建议使用基于密钥的认证。密码和其他令牌不会保存。
- 较旧的 Linux 发行版需要安装必要先决条件的变通方法。
- Windows 上不支持 PuTTY。
- 使用 SSH 克隆 Git 仓库且 SSH 密钥设置了 passphrase ,VS Code 的 pull 和 sync 功能可能会挂起。解决方法包括:使用无 passphrase 的 SSH 密钥、使用 HTTPS 地址,或从命令行运行
git push
。
VS Code 扩展限制
- 许多扩展可以在远程 SSH 主机上工作。但某些功能可能失效或无法正常工作。如果遇到扩展问题,请查看常见问题和解决方案,并在报告问题时告知扩展作者。
- 不支持使用 VS Code 的 Dev Containers 扩展。
故障排除:连接挂起或失败
如果 VS Code 在尝试连接时挂起或超时,你可以尝试以下步骤来解决问题。
清理远程机器上的 VS Code Server
Remote - SSH 扩展提供了一个命令,用于清理远程机器上的 VS Code Server,Remote-SSH: Uninstall VS Code Server from Host...
。该命令会执行以下两项操作:终止所有运行中的 VS Code Server 进程并删除服务器安装的文件夹。
如果你想手动执行这些步骤,或者该命令对你不起作用,可以运行以下脚本:
# 终止服务器进程
kill -9 $(ps aux | grep vscode-server | grep $USER | grep -v grep | awk '{print $2}')
# 删除相关文件和文件夹
rm -rf $HOME/.vscode-server # 或 ~/.vscode-server-insiders
SSH 主机上的 VS Code Server 安装在 ~/.vscode-remote
目录下,你也可以检查该位置。
检查安装过程中是否使用了非默认 shell
如果在 SSH 主机上的 .bash_profile
或其他启动脚本中使用非默认 shell,可能会破坏 VS Code 的远程服务器安装脚本。如果遇到问题,可使用 chsh
更改远程机器上的默认 shell。
总结
通过以上步骤,你可以配置基于 SSH 的 VS Code 远程开发环境,实现像本地开发一样使用远程开发机或 AICoder。希望这些步骤可以帮助你顺利完成配置并提高开发效率。