GitHub に SSH 公開鍵を登録してログインしたくなりました。けれども、秘密鍵と公開鍵のペアを作って、いや、そもそも秘密鍵をあらたに作るべきか使いまわすか、、、悩み始めて踏み切れませんでした。
そんなときに、スマートフォンに秘密鍵を保管することで管理する、 Krypton | Let’s make two-factor easy & secure というサービスを知りました。
使ってみます。
インストール概要
導入方法は、上述のページで解説されている通りです。ですけれども、最新の情報も検めたく思いますので、公式ページも探しました。
- 使い始めるまでの概要
- インストール手順
公式のインストール手順に従って進めました。
スマートフォンアプリインストール
iPhone の App Store アプリで、 krypton と検索して、 Krypton Authenticator on the App Store をインストールしました。
PC に Krypton クライアントアプリの Kr cli をインストール
Install に従うだけです。Windows 10 Pro の WSL 、 Ubuntu 18.04 で行いました。
sudo apt update && sudo apt upgrade -y
curl https://krypt.co/kr | sh
スマートフォンアプリと Kr cli とのペアリング
Pair your computer に沿って行いました。
ちなみに、ペアリングを解除したいときの手順も、このページに記載がありました。スマートフォンアプリで "Computers" タブから PC を選び、 "Unpair" をタップすればよいようです。
- Kr cli で、
kr pair
を実行する。コマンドラインに、 QR コードが表示される。 - スマートフォンアプリを立ち上げ、
- "Pair" タブをタップ。
- カメラになるので、 QR コードをスキャンする。
- "Pair" をタップ
- Face ID の許可を求められたので、 "OK" をタップ
- ["Krypton"が近隣のBluetoothデバイスに、Appを使用していない時でもデータ通信することを求めています。 Kreypton uses bluetooth to communicater to paired devices.] ともとめられたので、 "OK"
- Kr cli 側では、次のように表示され、ペアリングが完了する?
Paired successfully with identity ssh: short read
これは、ダメな状態です。なぜなら、本来ならターミナルに Krypton SSH 公開鍵が表示されるはずだからです。
Krypton のペアリングの問題を探る
でも同じ問題が取り上げられいました。どうやら、スマートフォンアプリで developer mode をいったんオフにして、再びオンにすれば解決した、などと報告がありました。
そこで、私も スマートフォンアプリの左上の設定アイコン > Developer Mode をオフ -> オンにしてみました。
そして、ペアリングの手順を、 kr pair
からもう一度実施したところ、見事ターミナルに公開鍵が表示されました!成功です♪
Paired successfully with identity
ssh-rsa AAAAB3Nza ... 略 ... Bw== iPhoneXS
GitHub に SSH 公開鍵をアップロードしてみる
My Public Key に沿って進めればよいです。
ちなみに、既存のサーバに追加する場合の手順も記載されていました。 kr add <user>@<server>
すればよいようです。
kr github
こうなりました。 WSL なため、クリップボードまわり等に難があるようです。
$ kr github
No clipboard utilities available. Please install xsel or xclip.
Or copy the following lines to your clipboard:
ssh-rsa AAAAB3Nza ... 略 ... Bw== iPhoneXS
Press ENTER to open your web browser to GitHub. Then click "New SSH Key" and paste your public key.
Unable to open browser, please visit https://github.com/settings/keys
表示されたとおり、 https://github.com/settings/keys へアクセスし、 "New SSH Key" から SSH 公開鍵を登録します。名前は、 Krypton としました。
GitHub への接続テスト
今度は、 Testing your SSH connection – GitHub Help の手順に沿って行いました。
ssh -T git@github.com
を行ってみました。
Krypton ▶ Requesting SSH authentication from phone
で一旦とまり、スマートフォンアプリで、認証を行いました。
結果、次のようになり、成功です♪
$ ssh -T git@github.com
The authenticity of host 'github.com (<no hostip for proxy command>)' can't be established.
RSA key fingerprint is SHA256:nThbg6kXUpJWGl7E1IGOCspRomTxdCARLviKw6E5SY8.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'github.com' (RSA) to the list of known hosts.
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.
$
GitHub へ実際に PUSH
ローカルにある、すべての Git リポジトリのリモート URL で PUSH 時のものを、 https://github.com/ から git@github.com: に変更すればよいです。
よいのですが、、、とても面倒ですね><。調べてみると、リモート URL を上書きする機能が、 git config
にありました。次のページが参考になります。
公式ドキュメントはこちらです。
設定するためのコマンドは次のようになりました。
git config --global url.git@github.com:.pushInsteadOf https://github.com/
もしくは、 ~/.gitconfig
に次を追記します。
[url "git@github.com:"]
pushInsteadOf = https://github.com/
このようにすれば、 Git リポジトリで接続先を確認すると push 時の URL が、変化してこうなります。
$ git remote -v
origin https://github.com/oki2a24/dotfiles.git (fetch)
origin git@github.com:oki2a24/dotfiles.git (push)
$
1 つのリポジトリでのみ確認しましたが、すべてのリポジトリで、 GitHub へ push するときはこのように SSH で接続するようになります。
では、実際に push してみますと、、、成功です♪ SSH で接続し、 Krypton を使うようになっています。
$ git push
Krypton ▶ Requesting SSH authentication from phone
Krypton ▶ Phone approval required. Respond using the Krypton app
Krypton ▶ Success. Request Allowed ✔
Enumerating objects: 7, done.
Counting objects: 100% (7/7), done.
Delta compression using up to 8 threads
Compressing objects: 100% (4/4), done.
Writing objects: 100% (4/4), 457 bytes | 228.00 KiB/s, done.
Total 4 (delta 2), reused 0 (delta 0)
remote: Resolving deltas: 100% (2/2), completed with 2 local objects.
To github.com:oki2a24/dotfiles.git
59a4842..ee8d98e master -> master
$
おわりに
Krypton は、 SSH 接続以外に、Facebook 、 Google 、 Dropbox 、 Twitter など様々なサービスへのログインにも使えるそうです。
こちらはいったん使用しないでおいて、 SSH 接続で Krypton を使っていこうと思います。