---
name: "gh-codespace-ssh"
section: "1"
platform: "linux"
package: "github-cli"
version: "2.102.1-1"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/gh-codespace-ssh"
---

# gh-codespace-ssh(1)

SSH into a codespace

## NAME

gh-codespace-ssh - SSH into a codespace

## SYNOPSIS

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

## DESCRIPTION

The **ssh** command is used to SSH into a codespace. In its simplest form, you can run **gh cs ssh**, select a codespace interactively, and connect.

The **ssh** command will automatically create a public/private ssh key pair in the **~/.ssh** directory if you do not have an existing valid key pair. When selecting the key pair to use, the preferred order is:

- 1\.

  Key specified by **-i** in **\<ssh-flags\>**

- 2\.

  Automatic key, if it already exists

- 3\.

  First valid key pair in ssh config (according to **ssh -G**)

- 4\.

  Automatic key, newly created

The **ssh** command also supports deeper integration with OpenSSH using a **--config** option that generates per-codespace ssh configuration in OpenSSH format. Including this configuration in your **~/.ssh/config** improves the user experience of tools that integrate with OpenSSH, such as Bash/Zsh completion of ssh hostnames, remote path completion for **scp/rsync/sshfs**, **git** ssh remotes, and so on.

Once that is set up (see the second example below), you can ssh to codespaces as if they were ordinary remote hosts (using **ssh**, not **gh cs ssh**).

Note that the codespace you are connecting to must have an SSH server pre-installed. If the docker image being used for the codespace does not have an SSH server, install it in your **Dockerfile** or, for codespaces that use Debian-based images, you can add the following to your **devcontainer.json**:

```
"features": {
	"ghcr.io/devcontainers/features/sshd:1": {
		"version": "latest"
	}
}
```

## OPTIONS

- **-c**, **--codespace** **\<string\>**

  Name of the codespace

- **--config**

  Write OpenSSH configuration to stdout

- **-d**, **--debug**

  Log debug data to a file

- **--debug-file** **\<string\>**

  Path of the file log to

- **--profile** **\<string\>**

  Name of the SSH profile to use

- **-R**, **--repo** **\<string\>**

  Filter codespace selection by repository name (user/repo)

- **--repo-owner** **\<string\>**

  Filter codespace selection by repository owner (username or org)

- **--server-port** **\<int\> (default 0)**

  SSH server port number (0 =\> pick unused)

## EXIT CODES

0: Successful execution

1: Error

2: Command canceled

4: Authentication required

NOTE: Specific commands may have additional exit codes. Refer to the command's help for more information.

## EXAMPLE

```
$ gh codespace ssh
$ gh codespace ssh --config > ~/.ssh/codespaces
$ printf 'Match all\nInclude ~/.ssh/codespaces\n' >> ~/.ssh/config
```

## SEE ALSO

**[gh-codespace(1)](/gh-codespace/1.md)**
