2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

YubiKey を使って git の ssh 接続を構築する(Windows編)

Last updated at Posted at 2021-08-16

ことの発端

社内で2要素認証・多要素認証で YubiKey を採用しました。
で、購入した YubiKey5シリーズ には FIDO2 (WebAuthn) のみならず PIV 即ち ICカード の機能を持っているので、 ssh の公開鍵暗号で使うことにしましたので、 Windowsでの導入手順を示します。

なお、この記事では以下を前提とします。

  • 既に ssh の公開鍵暗号方式を使って git のクローンやプッシュを経験している。
  • PIV 機能がある YubiKey を所有している。
  • SouceTree での設定例。 1

1. YubiKey の設定

下記の記事を参考に YubiKey を設定してください。

※ この記事で説明している取得した公開鍵を GitHubBitbucket に設定してください。

2. Yubico PIV Tool をインストール

PKCS11 の認証モジュールが必要になりますので、インストールしておきましょう。
インストール後、インストール先の bin フォルダ内に libykcs11.dll へのパスをメモしておきましょう。 (後で登場します)

3. PuTTY-CAC をインストール

一般的な pageant はスマートカードに対応しておりませんので、 PuTTY-CAC を下記 URL よりダウンロードしてインストールしましょう。

スタートアップに登録して先に PuTTY-CACpageant を起動させておくと便利です。スタートアップへの登録方法は下記を参考にしましょう。

SourceTree では SSH クライアントの設定SourceTree 起動時に SSH エージェントを起動します のチェックを外しておきます。

image.png

4. pageant に証明書を登録

既に ssh で運用されている方はご存じだと思いますが、Windows 起動後に毎回やらないといけないやつです。

  1. タスクトレイの pageant アイコンを右クリックします。

    image.png
  2. Add PKCS Cert を選択します。(秘密鍵ファイルの場合は Add PuTTY Key ですが、今回インストールした PuTTY-CAC のお陰でスマートカードを使用できるようになり、スマートカードの場合は Add PKSC Cert を選択します。)

    image.png
  3. ファイル選択を All Library Files (*.dll) に変更します。

    image.png
  4. Yubico PIV Tools のインストール先の bin フォルダにある libkcs11.dll を開きます。
  5. 公開鍵の選択画面が表示されるので、 その他 をクリックして、今回は SLOT 9A の証明書を選択します。(スロットについては 「ssh の公開鍵認証方式で YubiKey を使うための準備」 を参照してください)

    image.png

5. SourceTree を使ってみる

既に設定は終わっていますので、いつものように git でクローンやプッシュを行います。
その際、下記のような PuTTY Authentication が表示されるので、 YubiKeyPIN を入力します。

image.png

6. コマンドラインを使ってみる

おまけで、コマンドラインからも使用する場合を説明しておきます。
(SourceTree でうまく接続できない場合、問題の切り分けとして試行する際に使えます)

ssh のコンフィグファイルに下記を追加します。

.ssh/config
Host github.com
  PKCS11Provider "D:\Program Files\Yubico\Yubico PIV Tool\bin\libykcs11.dll"

github に接続してみましょう。

ssh git@github.com

すると下記の表示がされますので、 YubiKeyPIN を入力し Enter を押下します。

Enter PIN for 'YubiKey PIV #15801817': 

その後、下記のような表示になれば成功です。

PTY allocation request failed on channel 0
Hi terukazu-inoue! You've successfully authenticated, but GitHub does not provide shell access.
Connection to github.com closed.

ちなみに、 windows の git では、デフォルトshell が sigwin の ssh なので、 windows 標準に変更します。(この変更により SourceTree が使えなくなるので注意)

設定する
git config --global core.sshCommand "C:/Windows/System32/OpenSSH/ssh.exe"
やっぱりやめる
git config --global --unset core.sshCommand
  1. コマンドラインを使っても可能です。しかし、 GitHub Desktop はトークンによる https アクセスを使用するため使用できません。

2
2
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?