排解 Fuchsia 裝置的安全殼層 (SSH) 金鑰問題

如果無法使用 ffx 指令建立與 Fuchsia 裝置的 SSH 連線,本指南可協助您診斷及解決常見的 SSH 金鑰問題。

概念

透過 SSH 連線至 Fuchsia 裝置時,常見的問題是主機上的 SSH 金鑰與裝置上的授權金鑰不符。為協助您完成這項作業,ffx 提供相關工具來驗證 SSH 金鑰。基於安全考量,這項功能僅適用於 enguserdebug 版本。

ffx verify-ssh-keys 工具會檢查是否有金鑰不符的情況。這項檢查也整合到 ffx doctor 中,可進行更一般的疑難排解。

如果系統偵測到不相符情形,你可能需要更新裝置上的金鑰,或確保主機具有正確的金鑰。如要瞭解如何建立及管理 SSH 金鑰,請參閱「為 Fuchsia 裝置建立 SSH 金鑰」。

手動驗證 SSH 金鑰

如要手動檢查本機公開金鑰是否與裝置預期的公開金鑰 (authorized_keys 檔案中包含的公開金鑰) 相符,請執行下列指令:

ffx verify-ssh-keys

如果金鑰設定正確無誤,這項指令會無聲無息地結束。

如果兩者不符,系統會顯示錯誤訊息,指出裝置上的公開金鑰與本機私密金鑰不符。

使用 ffx doctor 自動驗證

ffx doctor 指令會執行一系列檢查,診斷開發設定的問題,包括驗證 SSH 金鑰。

如要執行 ffx doctor,請使用下列指令:

ffx doctor

如果 ffx doctor 發現 SSH 金鑰有問題,會連同其他潛在問題一併回報。

解決 SSH 金鑰問題

如果 ffx verify-ssh-keysffx doctor 報告 SSH 金鑰不符,請按照下列步驟操作:

  1. 檢查金鑰設定

    • 私密金鑰:

      ffx config get ssh.priv
    • 公開金鑰:

      ffx config get ssh.pub

    這會顯示 ffx 尋找安全殼層金鑰的位置。確認這些地點正確無誤。

  2. 確認金鑰存在:如果設定路徑中缺少金鑰,可以使用下列指令產生金鑰:

    ffx config check-ssh-keys

    如果沒有金鑰,系統會產生新的金鑰;如果公開金鑰檔案缺少與私密金鑰對應的公開金鑰,系統也會更新檔案。

  3. 更新裝置上的金鑰:如果您有多部開發機器或已重新產生金鑰,裝置可能會有舊的授權金鑰。你可能需要重新刷寫裝置或更新裝置上的 fuchsia_authorized_keys。詳情請參閱「為 Fuchsia 裝置建立 SSH 金鑰」。