blob: bb362190e64ad77e4a949bc9ae683f8bf744de41 [file] [log] [blame] [view] [edit]
# Create SSH keys for Fuchsia devices
To make an SSH connection to a Fuchsia device, some `ffx` commands (such as
[`ffx target show`][ffx-target-show] and [`ffx log`][ffx-log]) require
Fuchsia-specific SSH keys to be present on the host machine.
## Concepts
During development, one or more public SSH keys (listed in
`fuchsia_authorized_keys`) are loaded to a Fuchsia device, typically when a new
Fuchsia image is [flashed to the device][flash-device]. Once the device is
loaded with these public SSH keys, the `ffx` commands (running from the host
machine where a matching private SSH key is stored) can establish an SSH
connection to the device.
By default, Fuchsia-specific SSH keys are stored in the `$HOME/.ssh` directory
of the host machine, as shown below:
```none {:.devsite-disable-click-to-copy}
$HOME/.ssh/fuchsia_ed25519
$HOME/.ssh/fuchsia_authorized_keys
```
Note: These keys are not password protected. Don't use these keys for
non-development devices.
These files contain the following:
* `fuchsia_ed25519`: A private SSH key. The content of this file must not be
revealed or shared.
* `fuchsia_authorized_keys`: A list of one or more authorized public SSH keys.
The `fuchsia_authorized_keys` file must include the public SSH key for
`fuchsia_ed25519`. During the flashing process, the `fuchsia_authorized_keys`
file gets uploaded from the host machine to the Fuchsia device.
If you have multiple development machines, it's recommended that the Fuchsia SSH
keys are synchronized across your development machines. This may require you to
copy the existing Fuchsia SSH keys files from one machine to another.
## Create the keys
To check the configuration of the ssh keys, run the following command:
```posix-terminal
ffx config check-ssh-keys
```
This command generates the keys if they are missing, or updates the public key
file to include the public key matching the private key if it's missing.
Alternatively, commands that initialize the Fuchsia device, such as `ffx target
flash` and `ffx emu start`, generate SSH keys if they are not found. The
location for the SSH key files can be configured using `ffx config set ssh.pub`
and `ffx config set ssh.priv`.
## Troubleshooting
If you are experiencing issues with SSH connectivity, `ffx` provides tools to
help you verify your SSH keys. For more information, see
[Troubleshoot SSH keys for Fuchsia devices][troubleshoot-ssh-keys].
<!-- Reference links -->
[ffx-target-show]: https://fuchsia.dev/reference/tools/sdk/ffx?skip_cache=true#show_8
[ffx-log]: https://fuchsia.dev/reference/tools/sdk/ffx?skip_cache=true#log_2
[flash-device]: ./flash-a-device.md
[troubleshoot-ssh-keys]: /docs/development/tools/ffx/workflows/troubleshoot-ssh-keys.md