为 Fuchsia 设备创建 SSH 密钥

如需通过 SSH 连接到 Fuchsia 设备,某些 ffx 命令(例如 ffx target showffx log)要求主机上存在 Fuchsia 特定的 SSH 密钥。

概念

在开发期间,一个或多个公共 SSH 密钥(列在 fuchsia_authorized_keys 中)会加载到 Fuchsia 设备,通常是在将新的 Fuchsia 映像刷写到设备时。当设备加载了这些 SSH 公钥后,ffx 命令(从存储了匹配的 SSH 私钥的主机上运行)便可以与设备建立 SSH 连接。

初始化 Fuchsia 设备的命令(例如 ffx target flashffx emu start)会在找不到 SSH 密钥时生成 SSH 密钥。使用 ffx config set ssh.pubffx config set ssh.priv 配置 SSH 密钥文件的位置。

默认情况下,Fuchsia 专用 SSH 密钥存储在宿主机器的 $HOME/.ssh 目录中,如下所示:

$HOME/.ssh/fuchsia_ed25519
$HOME/.ssh/fuchsia_authorized_keys

您可以运行 ffx config check-ssh-keys 来检查 SSH 密钥的配置和一致性,如果缺少密钥,该命令还会生成密钥;如果缺少与私钥匹配的公钥,该命令还会更新公钥文件以包含该公钥。

这些文件包含以下内容:

  • fuchsia_ed25519:私密 SSH 密钥。不得透露或分享此文件的内容。
  • fuchsia_authorized_keys:一个或多个授权的 SSH 公钥的列表。

fuchsia_authorized_keys 文件必须包含 fuchsia_ed25519 的 SSH 公钥。在刷写过程中,fuchsia_authorized_keys 文件会从主机上传到 Fuchsia 设备。

如果您有多台开发机器,建议您在这些机器之间同步 Fuchsia SSH 密钥。这可能需要您将现有的 Fuchsia SSH 密钥文件从一台机器复制到另一台机器。

问题排查

如果您在 SSH 连接方面遇到问题,ffx 会提供一些工具来帮助您验证 SSH 密钥。如需了解详情,请参阅排查 Fuchsia 设备的 SSH 密钥问题