カテゴリー
Linux

【Krypton】スマホ交換時にやったことと、`Public key for github.com does not match pinned key. If the host key has actually changed, remove the pinned key in Krypton.` エラーに対処した記録

まとめ

  • スマートフォンアプリと Kr cli とのペアリングをやり直すには kr pair を実行する。
    • Pair your computer
    • Already paired, unpair current session? [y/N] と尋ねられるので y と答えて既存のペアリング状態を解除する。
  • エラー Public key for github.com does not match pinned key. If the host key has actually changed, remove the pinned key in Krypton. への対応は、スマートフォンアプリにある Known Hosts を削除すればよい。

背景

  • GitHub にプッシュできなくなった。
  • スマートフォンアプリと Kr cli とのペアリングをやり直そうと思った。
  • スマートフォンを買い替えたので、新しいスマートフォンからペアリングを行うことにした。

GitHub にプッシュできなくなった時のエラー。

laravel9-boilerplate on  main [⇡] 
❯ git push origin main 
Krypton ▶ Requesting SSH authentication from phone
Krypton ▶ Phone approval required. Respond using the Krypton app
Krypton ▶ Public key for github.com does not match pinned key. If the host key has actually changed, remove the pinned key in Krypton.
sign_and_send_pubkey: signing failed for RSA "/Users/oki2a24/.ssh/id_krypton" from agent: agent refused operation
no such identity: /Users/oki2a24/.ssh/id_ed25519: No such file or directory
no such identity: /Users/oki2a24/.ssh/id_rsa: No such file or directory
no such identity: /Users/oki2a24/.ssh/id_ecdsa: No such file or directory
no such identity: /Users/oki2a24/.ssh/id_dsa: No such file or directory
git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

laravel9-boilerplate on  main [⇡] took 6s 

WSL で Krypton を使ってみる記録 – oki2a24 を参考に解決を試みました。

  1. 寄り道。 kr upgrade
  2. Pair your computer 。PC とスマホをペアリングする。
  3. 公開鍵を GitHub に登録する。
  4. 旧スマホの秘密鍵に対応する公開鍵を GitHub から削除する。

寄り道。 kr upgrade

kr を実行したところ、コマンド自体のアップグレードが出来るようなので、少し寄り道してまずこれを実行しました。

❯ kr
NAME:
   kr - communicate with Krypton and krd - the Krypton daemon

USAGE:
   kr [global options] command [command options] [arguments...]
   
VERSION:
   2.4.13
   
COMMANDS:
     pair                                                     Initiate pairing of this workstation with a phone running Krypton
     me                                                       Print your SSH public key
     codesign                                                 Setup Krypton to sign git commits
     copy                                                     Copy your SSH public key to the clipboard
     hosts                                                    Distribute & manage SSH known hosts for your team
     pin                                                      Pin a host's SSH public keys
     unpin                                                    Unpin a host SSH public key
     team                                                     Krypton Teams settings
     env                                                      Print useful environment variables for configuring kr/krd
     sshconfig                                                Verify SSH is configured to use Krypton
     transfer                                                 Authorize a new Krypton device to access of your servers
     aws,bitbucket,digitalocean,gcp,github,ghe,gitlab,heroku  Upload your public key this service
     add                                                      Add a Krypton SSH public key to a < user@server or SSH alias >
     remove, rm                                               Remove SSH public keys from < user@server or SSH alias >
     list, ls                                                 List which team members have access to a server
     restart                                                  Restart the Krypton daemon
     upgrade                                                  Upgrade Krypton on this workstation
     unpair                                                   Unpair this workstation from a phone running Krypton
     uninstall                                                Uninstall Krypton from this workstation
     debugaws                                                 Check connectivity to AWS SQS

GLOBAL OPTIONS:
   --help, -h     show help
   --version, -v  print the version
   

~ 
❯ 

実行してみましたところ、最新だったようです。 Homebrew でインストールしており、定期的にそちらでアップグレードしていたからですね。

~ 
❯ kr upgrade
Upgrade Krypton on this workstation? [y/N] y
Running `brew update --auto-update`...
==> Auto-updated Homebrew!
==> Updated Homebrew from 1a8f9ac70 to cf629b117.
No changes to formulae.

Warning: kryptco/tap/kr 2.4.13 already installed

~ took 8s 
❯ 

Pair your computer 。PC とスマホをペアリングする。

ドキュメント通り、 kr pair を実行しました。 すでにペアリングしてあった状態からのスタートだったため、アンペアするかどうかを尋ねられましたので、 Yes としました。

~ 
❯ kr pair
Already paired, unpair current session? [y/N] y

... QR コード画像が表示された。略 ...

Scan this QR Code with the Krypton mobile app to connect it with this workstation. Maximize the window and/or lower your font size if the QR code does not fit.

Paired successfully with identity
ssh-rsa A ... 略 ... = iPhone14ProMax

~ took 52s 
❯ 

公開鍵を GitHub に登録する。

My Public Key に従い、 kr github を実行しました。

~ 
❯ kr github
SSH public key copied to clipboard.
Press ENTER to open your web browser to GitHub. Then click "New SSH Key" and paste your public key.


~ took 11s 
❯ 

自動的に SSH and GPG keys ページが開きました。 "New SSH Key" から次の内容を入力し、 "Add SSH Key" をクリックして SSH 公開鍵を登録しました。

  • title: Krypton2
  • Key type: Authentication Key
  • Key: kr github 実行時にクリップボードにコピーされた内容

GitHub への接続テスト

Testing your SSH connection – GitHub Docs に従ってテストしました。

~ took 11s 
❯ ssh -T git@github.com
Krypton ▶ Requesting SSH authentication from phone
Krypton ▶ Phone approval required. Respond using the Krypton app
Krypton ▶ Public key for github.com does not match pinned key. If the host key has actually changed, remove the pinned key in Krypton.
sign_and_send_pubkey: signing failed for RSA "/Users/oki2a24/.ssh/id_krypton" from agent: agent refused operation
no such identity: /Users/oki2a24/.ssh/id_ed25519: No such file or directory
no such identity: /Users/oki2a24/.ssh/id_rsa: No such file or directory
no such identity: /Users/oki2a24/.ssh/id_ecdsa: No such file or directory
no such identity: /Users/oki2a24/.ssh/id_dsa: No such file or directory
git@github.com: Permission denied (publickey).

~ took 12s 
❯ 

失敗しました。

トライアルアンドエラー。 Public key for github.com does not match pinned key. If the host key has actually changed, remove the pinned key in Krypton.

最初のエラーと同じです。ここでようやくエラーメッセージで検索し、調査しました。

上記を頼りにアプリの developler タブ ({ } のタブ) の "Edit Known Hosts" から "Known Hosts" ページへアクセスし、 github.com 項目をスワイプして削除しました。

もう一度接続確認をしてみたところ、今度は成功しました!

❯ ssh -T git@github.com
Krypton ▶ Requesting SSH authentication from phone
Krypton ▶ Phone approval required. Respond using the Krypton app
Krypton ▶ Success. Request Allowed ✔
Hi oki2a24! You've successfully authenticated, but GitHub does not provide shell access.

~ took 4s 
❯ 

旧スマホの秘密鍵に対応する公開鍵を GitHub から削除する。

SSH and GPG keys ページから、古い公開鍵を削除しました。

おわりに

根本の原因は Known Host にあったというオチでした。とはいえ、どのみちスマートフォンも変えたので、新しいスマホでペアリングできたのはよかったです。

以上です。

コメントを残す