前言

Zed前段时间送了学生认证的免费教育版,于是下了一个来试着用下。正好本人缺一个“小而美”的文本编辑器,而且对VSC的插件生态0依赖,也有点像尝试一下新东西,于是顺理成章的把Zed作为主力使用了。

很坏的,最近在使用GitHub codespace进行一些远程编码任务,很明显zed并不自带这玩意,于是我琢磨了一下如何在zed里使用GitHub codespace进行编码。理论上任何支持使用ssh进行远程开发的ide都能用同样的步骤实现同样的效果。

所需工具

1.本机有配置好能正常使用的openssh-client
2.确保本地的网络能连上workspace机器的ssh
3.准备就绪的GitHub Codespace实例

安装GitHub-cli

我们需要借助GitHub-cli来配置我们本地的ssh客户端,用于对codespace机器ssh的连接。

macOS,使用Homebrew安装

1
brew install gh

Linux

Debian / Ubuntu

1
apt install gh

Fedora / CentOS / RHEL

1
2
3
sudo dnf install 'dnf-command(config-manager)'
sudo dnf config-manager --add-repo https://cli.github.com/packages/rpm/gh-cli.repo
sudo dnf install gh

Arch Linux

1
sudo pacman -S github-cli

Windows 使用Winget与scoop

winget:

1
winget install --id GitHub.cli

scoop

1
scoop install gh

安装好后验证安装:

1
gh --version

接着登录GitHub Cli

1
gh auth login

按照提示依次选择:

1
2
3
? What account do you want to log into?  → GitHub.com
? What is your preferred protocol for Git operations? → HTTPS或SSH
? How would you like to authenticate GitHub CLI? → Login with a web browser

选择浏览器登录后,终端会显示一个一次性验证码,浏览器自动打开GitHub授权页面,粘贴验证码并点击授权即可

登录完成后,补充申请 Codespace 所需的权限,

1
gh auth refresh -h github.com -s codespace

验证登录状态

1
gh auth status

预期输出(以我自己的为例)

1
2
3
4
5
6
7
8
icymichiko@IcyMichikodeMBP ~ % gh auth status
github.com
✓ Logged in to github.com account IcyBlue17 (keyring)
- Active account: true
- Git operations protocol: ssh
- Token: gho_************************************
- Token scopes: 'admin:public_key', 'codespace', 'gist', 'read:org', 'repo'
icymichiko@IcyMichikodeMBP ~ %

使用GitHub cli配置ssh

使用GitHub cli生成ssh配置文件并写入你的本地ssh配置

1
gh codespace ssh --config >> ~/.ssh/config

这会把当前你账号下所有Codespace实例的SSH配,包含Host、ProxyCommand、认证信息等追加到你的本地SSH配置文件。

之后可以cat一下你的config,并把他的主机名复制下来直接用ssh连接就行,使用gh cs list可以查看你账号下所有codespace实例的情况,
CSlist

需要注意的是,只有处于开启状态下的codespace实例才能被ssh连接,即STATE为Available的。

1
ssh [hostname]

使用这条命令就可以连接到你开启的codespace实例了

需要注意的是,Codespace每次重建后Host名称可能变化,需要重新运行一次 –config

要是过段时间他关掉了怎么办?

使用gh cs ssh即可连接到实例并唤醒,唤醒后重新ssh即可。建议每次开工前都手工gh cs ssh来激活一次实例
CSwake

使用Zed连接到codespace

首先确保你本地ssh客户端能直接 ssh 主机名 来连上实例
非常简单,打开zed,在file-openremote中添加你的codespace主机名

zed1

zed2

这时候他会出现在Remote Projects中,
zed3

点击Openfloder,全部删掉,输入/workspaces/你的项目名即可(直接输入/workspaces他在底下也会自动列出来项目的)
zed3

然后enjoy吧~