gh codespace ssh
gh codespace ssh [<flags>...] [-- <ssh-flags>...] [<command>]
ssh 命令用于 SSH 到代码空间。 在最简单的情况下,你可以运行 gh cs ssh,交互式地选择一个代码空间,然后连接。
ssh 命令会自动在 ~/.ssh 目录中创建一对公钥/私钥,如果你没有现有的有效密钥对。 当选择要使用的密钥对时,优先顺序是
- 由
-i在<ssh-flags>中指定的密钥 - 自动密钥,如果它已经存在
- ssh 配置中的第一个有效密钥对(根据
ssh -G) - 自动密钥,新创建的
ssh 命令还支持使用 --config 选项与 OpenSSH 进行更深入的集成,该选项会生成 OpenSSH 格式的每个代码空间 ssh 配置。 将此配置包含在你的 ~/.ssh/config 中,可以改善与 OpenSSH 集成的工具的用户体验,例如 Bash/Zsh 的 ssh 主机名补全、scp/rsync/sshfs 的远程路径补全、git ssh 远程等。
设置好之后(参见下面的第二个示例),你可以像访问普通远程主机一样 ssh 到代码空间(使用 ssh,而不是 gh cs ssh)。
请注意,你连接到的代码空间必须预先安装 SSH 服务器。 如果用于代码空间的 Docker 镜像没有 SSH 服务器,请在你的 Dockerfile 中安装它,或者对于使用基于 Debian 的镜像的代码空间,你可以将以下内容添加到你的 devcontainer.json 中
"features": {
"ghcr.io/devcontainers/features/sshd:1": {
"version": "latest"
}
}
选项
-c,--codespace <string>- 代码空间的名称
-
--config - 将 OpenSSH 配置写入标准输出
-d,--debug- 将调试数据记录到文件
-
--debug-file <string> - 要记录到的文件路径
-
--profile <string> - 要使用的 SSH 配置文件的名称
-R,--repo <string>- 按仓库名称(用户/仓库)过滤代码空间选择
-
--repo-owner <string> - 按仓库所有者(用户名或组织)过滤代码空间选择
-
--server-port <int> (默认 0) - SSH 服务器端口号(0 => 选择未使用的端口)
示例
$ gh codespace ssh
$ gh codespace ssh --config > ~/.ssh/codespaces
$ printf 'Match all\nInclude ~/.ssh/codespaces\n' >> ~/.ssh/config