gh codespace ssh

gh codespace ssh [<flags>...] [-- <ssh-flags>...] [<command>]

ssh 命令用于 SSH 到代码空间。 在最简单的情况下,你可以运行 gh cs ssh,交互式地选择一个代码空间,然后连接。

ssh 命令会自动在 ~/.ssh 目录中创建一对公钥/私钥,如果你没有现有的有效密钥对。 当选择要使用的密钥对时,优先顺序是

  1. -i<ssh-flags> 中指定的密钥
  2. 自动密钥,如果它已经存在
  3. ssh 配置中的第一个有效密钥对(根据 ssh -G
  4. 自动密钥,新创建的

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

另请参阅