ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

在 Zulip Vagrant 开发环境中使用 VS Code Remote - SSH 进行远程开发

在 Zulip Vagrant 开发环境中使用 VS Code Remote - SSH 进行远程开发 在 Zulip Vagrant 开发环境中使用 VS Code Remote - SSH 进行远程开发【免费下载链接】zulipZulip server and web application. Open-source team chat that helps teams stay productive and focused.项目地址: https://gitcode.com/GitHub_Trending/zu/zulip本文介绍如何在 Zulip 的 Vagrant 开发环境中使用 Visual Studio Code 的 Remote - SSH 扩展直接连接并编辑代码。Zulip 官方推荐在 macOS、Linux 及 Windows虚拟机方式下通过 Vagrant 启动开发环境而 VS Code Remote - SSH 是把编辑体验从宿主机延伸到虚拟机/容器内部的标准做法。读完本文你将掌握从安装扩展、执行vagrant ssh-config、写入~/.ssh/config到刷新 Remote Explorer 的完整配置流程并理解每一步背后 Vagrant 与 Docker 的实际工作方式。为什么需要 Remote - SSHZulip 开发环境的运行模式Zulip 的开发环境基于「宿主机编辑 虚拟机/容器运行」的模型。推荐流程是先执行vagrant up --providerdockermacOS/Linux或vagrant up --providervirtualboxWindows 虚拟机方式启动开发环境详见 vagrant-up.md。其核心设计是宿主机上保存 Zulip 源码克隆即当前仓库所在的目录通过共享目录挂载到虚拟机/容器内~/zulip保存文件后自动同步虚拟机的 base box 为 Ubuntu 22.04见 VagrantfileDocker 提供方则在 dev-vagrant-docker/Dockerfile 中基于ubuntu:22.04构建镜像并预先安装openssh-server、创建vagrant用户、开放 22 与 9991 端口开发服务器各组件运行在虚拟机的端口上并通过 Vagrantfile 中的端口转发映射到宿主机Vagrantfile9991 → 9991、9994 → 9994、9995 → 9995。正因为源码运行在虚拟机内部直接在宿主机上用普通编辑器无法享受到智能感知、调试、终端等能力。官方推荐方案是安装Visual Studio Code Remote - SSH扩展让 VS Code 通过 SSH 连入 Vagrant 环境像编辑本地文件一样操作虚拟机内的 Zulip 代码。这一建议也被仓库自身的配置印证Zulip 在 .vscode/extensions.json 中把ms-vscode-remote.vscode-remote-extensionpackVS Code 远程开发扩展包列为工作区推荐扩展同时推荐了 ESLint、Prettier 等配套工具。首次打开工作区时 VS Code 会提示安装这些扩展。第一步安装 Remote - SSH 扩展并一键打开在 VS Code 中安装Remote - SSH扩展后回到宿主机上存放 Zulip 克隆的目录例如zulip文件夹直接运行$ code .VS Code 便会通过 SSH 连接到你当前的 Vagrant 环境并在远程环境中打开当前目录。此时左侧资源管理器、内置终端、Git 面板都工作在该虚拟机的上下文中编辑的文件即时同步到共享目录。需要说明的是code .能直接连入前提是 VS Code 已经能识别当前目录对应的 SSH 主机。对于 Vagrant 这种由工具动态生成的 SSH 配置官方文档建议先完成下面的 SSH 配置步骤让 VS Code 的 Remote Explorer 可以列出并连接该主机。第二步用 vagrant ssh-config 导出 SSH 连接参数Vagrant 环境默认的 SSH 端口、密钥路径、用户名等参数是动态分配的不适合手写。正确做法是让 Vagrant 生成标准格式的 OpenSSH 配置。在宿主机上的zulip文件夹内执行$ vagrant ssh-config本文撰写时基于当前仓库所用 Vagrant 配置的输出类似Host default HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /PATH/TO/zulip/.vagrant/machines/default/docker/private_key IdentitiesOnly yes LogLevel FATAL PubkeyAcceptedKeyTypes ssh-rsa HostKeyAlgorithms ssh-rsa这些字段的含义与来源如下字段值说明Hostdefault连接别名也是 Remote Explorer 中显示的远程名称HostName127.0.0.1SSH 实际连接的地址指向本机转发的端口Uservagrant虚拟机内的登录用户见 Dockerfile 中创建的vagrant用户Port2222宿主机上映射到虚拟机 22 端口的 SSH 端口IdentityFile.../.vagrant/machines/default/docker/private_keyVagrant 为该机器生成的私钥位于你的 Zulip 克隆目录内StrictHostKeyChecking no/UserKnownHostsFile /dev/null—跳过主机指纹校验因为每次重建环境后指纹都会变化PasswordAuthentication no—强制使用密钥认证不需要输入密码LogLevel FATAL—只在严重错误时输出日志PubkeyAcceptedKeyTypes/HostKeyAlgorithmsssh-rsa为老版本 OpenSSH 兼容性额外放行 ssh-rsa 算法第三步把配置写入 ~/.ssh/config 并自定义主机名将上面的输出完整复制到宿主机用户的~/.ssh/config文件中若文件不存在则新建注意追加而非覆盖已有内容。建议把主机名从default改成一个更有辨识度的名字例如zulipHost zulip HostName 127.0.0.1 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /PATH/TO/zulip/.vagrant/machines/default/docker/private_key IdentitiesOnly yes LogLevel FATAL PubkeyAcceptedKeyTypes ssh-rsa HostKeyAlgorithms ssh-rsa更名后你既可以在终端里用ssh zulip直接登录也可以在 VS Code 中以zulip作为远程目标。注意IdentityFile中的/PATH/TO/zulip要替换为宿主机上 Zulip 克隆的真实路径由于密钥位于.vagrant/machines/default/docker/private_key它是该 Vagrant 机器专属的重建环境vagrant destroy后重新vagrant up会重新生成届时需重新执行vagrant ssh-config并更新配置。第四步刷新 Remote Explorer 并连接配置完成后打开 VS Code 的Remote Explorer远程资源管理器点击刷新按钮刷新 known remotes 列表即可看到zulip或你自定义的主机名。点击该主机名VS Code 会自动在该远程主机上安装远程服务器组件并打开新窗口随后即可像本地一样浏览、编辑、搜索与调试~/zulip下的源码。连接后你可以在 VS Code 内置终端中直接启动开发服务器验证一切正常(zulip-server) vagrantvagrant:/srv/zulip$ ./tools/run-dev正常情况下会输出各内部端口信息Starting Zulip on: http://localhost:9991/ Internal ports: 9991: Development server proxy (connect here) 9992: Django 9993: Tornado 9994: webpack之后在宿主机浏览器访问 http://localhost:9991/devlogin 即可看到 Zulip 开发登录页该页面截图见 docs/images/zulip-devlogin.png。完整的启动与验证流程可参考 vagrant-ssh.md。进阶适配你的 Vagrant 环境上面的默认配置基于仓库自带的 Vagrantfile但 Zulip 允许通过宿主机~/.zulip-vagrant-config文件覆盖多项运行时参数Vagrantfile 第 30-48 行逐行解析该文件这些改动会影响 SSH 与访问地址修改宿主机访问端口HOST_PORT 9971会把 9991 端口转发改到 9971应用后访问 http://localhost:9971/允许其他机器访问HOST_IP_ADDR 0.0.0.0表示任意 IP 都可连接调整虚拟机资源GUEST_CPUS 4、GUEST_MEMORY_MB 8192仅对 VirtualBox 等 VM 型 provider 生效Docker 容器方式会忽略。修改后需执行vagrant reload使其生效并重新运行vagrant ssh-config确认端口、密钥等 SSH 参数是否有变化。完整的可选配置说明见 setup-recommended.md。如果你使用代理访问网络vagrant ssh-config之前还需在~/.zulip-vagrant-config中配置HTTP_PROXY/HTTPS_PROXY/NO_PROXY并安装vagrant-proxyconf插件否则首次vagrant up的依赖下载会失败。若 SSH 连接出现Permission denied或密钥不匹配最可能的原因是重建环境后私钥已更换请重新导出并更新~/.ssh/config其他常见 Vagrant 问题可查阅 setup 目录 下的故障排查文档如shared-vagrant-errors.md、unix-troubleshoot.md。小结在 Zulip 的 Vagrant 开发环境中VS Code Remote - SSH 是官方推荐、配置成本最低的远程编辑方案。核心流程只需四步安装 Remote - SSH 扩展 → 在zulip目录运行vagrant ssh-config导出连接参数 → 复制到~/.ssh/config并自定义主机名 → 在 Remote Explorer 中刷新并连接。结合 Vagrantfile 与 dev-vagrant-docker/Dockerfile 的源码实现你可以清楚地知道每个 SSH 参数从何而来、何时会变化从而在重建、改端口、调整资源后快速恢复远程开发环境。关于远程开发的其他替代方案如rmate可进一步参考 docs/development/remote.md。【免费下载链接】zulipZulip server and web application. Open-source team chat that helps teams stay productive and focused.项目地址: https://gitcode.com/GitHub_Trending/zu/zulip创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表