カテゴリー
Microsoft

WSL で Krypton を使ってみる記録

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" をタップすればよいようです。

  1. Kr cli で、 kr pair を実行する。コマンドラインに、 QR コードが表示される。
  2. スマートフォンアプリを立ち上げ、
    1. "Pair" タブをタップ。
    2. カメラになるので、 QR コードをスキャンする。
    3. "Pair" をタップ
    4. Face ID の許可を求められたので、 "OK" をタップ
    5. ["Krypton"が近隣のBluetoothデバイスに、Appを使用していない時でもデータ通信することを求めています。 Kreypton uses bluetooth to communicater to paired devices.] ともとめられたので、 "OK"
  3. 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 を使っていこうと思います。

コメントを残す