トップ 差分 一覧 ソース 検索 ヘルプ PDF RSS ログイン

NetBSDでGnuk Tokenを試す

はじめに

 経緯など

この文書はNetBSD Advent Calendar 2014の19日目の記事として書かれました。(注:その後、若干更新されています。)

2014年12月13日、CBUG 32nd Meetingで、今井さんのGnukトークンでSSHという発表をきいて、試してみたいと思い、FST-01を譲ってもらいました。このページはそれをNetBSDで試した結果を書いてみたものです。

(注:2017年6月現在、既に使っていません。念のため。)

 Gnuk Token?

ものすごく簡単にいうと、SSHの秘密鍵を持ち運びたいけどどうしようか、という時に役に立つものです。(SSLの証明書とかも入ればいいと思いますが、まだ実験段階みたいです。)

あえていえば、"Gnuk Token"って、"Yubikey"みたいなもの、でしょうかね。

"Gnuk"がOpenPGP v2スマートカードを実現するファームウェアで、"FST-01"がCreative Commons (CC BY 3.0)で設計情報が公開されているGnukが動くハードウェア、になります。

Gnukが動くハードウェアは他にもあるみたいですが、この文書では、Gnuk on FST-01 = Gnuk Tokenとしています。

他に参考としては、

などをざっとながめるといいと思います。

本家のドキュメントとしては、

がありますので、これから試す人は、ここも確認して下さい。

 現状の確認

Google大明神に訊いてみた限りでは、Gnuk TokenはLinuxではふつうに使えていて、FreeBSDでも使えているようです。

NetBSDの情報は(2014年12月19日の時点では)ありませんでした。

考え方

GnuPG2の(gpg-agentの)機能として、GnuPGの鍵をSSHの鍵としても使える機能がついていて、それと、OpenPGP v2スマートカードを扱うことができる機能をつかって、OpenPGP v2スマートカードにあるGnuPGの鍵をつかって、SSHの公開鍵認証を行う、というのがやろうとしていること、になります。

GnuPG2のgpg-agentは、そもそも、GnuPGを使わくても、ssh-agentの代わりとして、使えるソフトです。("gpg-agent で ssh-agent"に詳しく紹介されています。既存のSSHの鍵を登録して使う例です。)

必要なソフトのインストール

 lang/python27

lang/python27 をインストールします。バイナリーパッケージもありますが、ここでは、pkgsrcからいれます。

 # cd /usr/pkgsrc/lang/pyhon27
 # make install; make clean; make clean-depends

特に問題となるようなことはないはずです。

 security/pinentry

security/pinentryをインストールします。バイナリーパッケージもありますが、ここでは、pkgsrcからいれます。0.9.0nb1以上を入れてください。。

 # cd /usr/pkgsrc/security/pinentry
 # make install; make clean; make clean-depends

特に問題となるようなことはないはずです。

GUIでパスワードを入れたいひとは、prinentry-gtk とか prinentry-qt をインストールしましょう。

 securiy/ccid

securty/ccidをインストールします。バイナリーパッケージもありますが、ここでは、pkgsrcからいれます。1.4.17以上であることを確認して下さい。

 # cd /usr/pkgsrc/security/ccid
 # make install; make clean; make clean-depends

特に問題となるようなことはないはずです。

 securiy/gnupg2

security/gnupg2 をインストールします。残念なことに、バイナリーパッケージはないので、pkgsrcからインストールします。2.0.26nb1以上であることを確認して下さい。

security/gnupg2をインストールしようとすると、(2014年12月19日現在、)関連パッケージの依存関係で必要な devel/gettext-tools がビルドはとおるものの、インストールできません。

 # cd /usr/pkgsrc/devel/gettext-tools
 # make install
 <snip>
 In end of data:
 po-compat.el:264:1:Warning: the following functions are not known to be
     defined: cp-supported-codepages, codepage-setup
 Wrote /opt/pkgsrc/devel/gettext-tools/work.i386/gettext-0.19.3/gettext-tools/misc/po-compat.elc
 if test -f archive.dir.tar; then  inputfile=archive.dir.tar;  else  inputfile='.'/archive.dir.tar;  fi;  xz -c -5 < "$inputfile" > archive.dir.tar.xz-t && mv archive.dir.tar.xz-t archive.dir.tar.xz
  ../../build-aux/install-sh -c -d '/opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/bin'
  /usr/bin/install -c -o root -g wheel -m 755 gettextize autopoint '/opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/bin'
  ../../build-aux/install-sh -c -d '/opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/share/gettext'
  /usr/bin/install -c -o root -g wheel -m 644 archive.dir.tar.xz '/opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/share/gettext'
 /usr/bin/install -c -o root -g wheel -m 644 /opt/pkgsrc/devel/gettext-tools/work.i386/gettext-0.19.3/gettext-tools/man/autopoint.1  /opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/man/man1
 /usr/bin/install -c -o root -g wheel -m 644 /opt/pkgsrc/devel/gettext-tools/work.i386/gettext-0.19.3/gettext-tools/man/gettextize.1  /opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/man/man1
 libtool-expand: `lib/libgettextsrc.a' was not found
 => Automatic manual page handling
 => Generating post-install file lists
 pkg_create: can't stat `/opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/lib/libgettextsrc.a'
 => Checking file-check results for gettext-tools-0.19.3
 ERROR: ************************************************************
 ERROR: The following files are in the PLIST but not in /opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg:
 ERROR:         /opt/pkgsrc/devel/gettext-tools/work.i386/.destdir/usr/pkg/lib/libgettextsrc.a
 *** Error code 1

原因はpkgsrc側に起因するようですが、よくわかりません。とりあえず、0.19.4では直っているので、pkgsrcを更新するか、そうでない人は、以下のパッチをあてるとインストールできるので、あてて下さい。(なお、mk.confでLOCALPATCHESを設定している人は、LOCALPATCHES/devel/gettext-tools以下に以下に示すファイルを置いてmake installすればOKです。)

patch-gettext-tools_src_Makefile.in

$NetBSD$

--- gettext-tools/src/Makefile.in.orig	2014-10-16 06:01:39.000000000 +0000
+++ gettext-tools/src/Makefile.in
@@ -3375,7 +3375,7 @@ uninstall-am: uninstall-binPROGRAMS unin
 
 
 # No need to install libgettextsrc.a, except on AIX.
-install-exec-hook: install-exec-clean
+install-exec-hook: 
 install-exec-clean:
 	case "@host_os@" in \
 	  aix*) ;; \

設定する

 USBデバイスの許可の設定

TokenをUSBポートに挿すと、以下のようなものとわかります。

 ugen0 at uhub1 port 1
 ugen0: Free Software Initiative of Japan FSIJ USB Token, rev 1.10/2.00, addr 2

本家ドキュメントでは、udevに関する記述がありますが、NetBSDにはudevやそれに類するものはありませんので、なにもする必要はありません。

代わりに、PC/SC-Liteの設定を行います。(security/ccidをインストールすると、security/pcsc-liteがインストールされたはずです。)本家のドキュメントでは、PC/SC-Liteはオプション扱いですが、NetBSDでは、(試した限り、)GnuPG内蔵のドライバではうまく動かないため、PC/SC-Liteを使うようにします。

設定、といっても、PC起動時に、pcscdを起動するようにするだけです。ここでは、かんたんに、/etc/rc.localに書きましょう。

if [ -x /usr/pkg/sbin/pcscd ]; then
  /usr/pkg/sbin/pcscd -d
fi

-dは、デバックオプションです。不要になったら、消して下さい。

security/pcsc-liteが、1.8.12nb2以上のひとは、rc.dファイルがあるので、それを使いましょう。

 # cp /usr/pkg/share/example/rc.d/pcscd /etc/rc.d

あとは、/etc/rc.confに以下を追加して下さい。

pcscd=YES
pcscd_flags="-d"

-dは、デバックオプションです。不要になったら、消して下さい。

この後、Gnuk Tokenを使いますので、起動しておきます。

 # /usr/pkg/sbin/pcscd -d

or

 # /etc/rc.d/pcscd start

 GnuPGの設定

~/.gnupg/gpg.conf

本家ドキュメントの指定通り、でいいのですが、ひとつ付け加えます。

use-agent
personal-digest-preferences SHA256
cert-digest-algo SHA256
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES CAST5 ZLIB BZIP2 ZIP Uncompressed
armor

armorは、GnuPGの鍵をテキスト形式で保存するオプションです。デフォルトはバイナリ形式ですが、扱いやすいため、デフォルトを変更します。

~/.gnupg/gpg-agent.conf

本家ドキュメントの指定通り、でいいのですが、ここでも付け加えます。

enable-ssh-support
use-standard-socket

use-stadard-socketは、必要なソケットを、home dir以下に作る、というオプションです。pkgsrcデフォルトでは、/tmp 以下に作られますが、一部のgpg-connect-agentコマンドが、(なぜか)きかなくなるので、こうしています。

pkgsrcで入れたgpg-agentの、PINの入力のデフォルトは、cursesベースの入力画面です。本家ドキュメントと同じようにしたい場合は、

enable-ssh-support
use-standard-socket
pinentry-program /usr/pkg/bin/pinentry-tty

として下さい。同様に、pinentry-gtkやpinentry-qtをインストールした人は、ここで指定して下さい。

~/.gnupg/scdaemon.conf

本家ドキュメントにはありませんが、作成します。

card-timeout 5
disable-ccid

card-timeout 5は、scdaemonのmanを読むと、ちょっと時間をとった方がいい気がしたので、書いています。disable-ccidは、GnuPGの内蔵ccidドライバを使わない、という指定です。これを書かなくてもpcscdが上がっていれば、動作しますが、書いておきます。

ssh-agent等の無効化

自分は、Gnome等のデスクトップ環境を全く使っていない(昔ながらの、X + Windows Manager)なので、必要な設定は、ssh-agentを、gpg-agentに置き換えるだけです。

zshを使っており、.zloginで、ssh-agentを起動しているので、それをgpg-agentにおきかえました。(manにあるサンプルをコピペしただけです。)

eval $(/usr/pkg/bin/gpg-agent --daemon --write-env-file "${HOME}/.gpg-agent-info")

あとは、.zshrcにも必要なものを書きます。(manにあるサンプルをコピペしただけです。)

export GPG_TTY=$(tty)

if [ -f "${HOME}/.gpg-agent-info" ]; then
  . "${HOME}/.gpg-agent-info"
  export GPG_AGENT_INFO
  export SSH_AUTH_SOCK
fi

Gnuk Tokenが動いているか確認する

本家のドキュメントどおり、確認します。

 % gpg2 --card-status
 Application ID ...: D276000124010200FFFE50FF6A060000
 Version ..........: 2.0
 Manufacturer .....: unmanaged S/N range
 Serial number ....: 50FF6A06
 Name of cardholder: [未設定]
 Language prefs ...: [未設定]
 Sex ..............: 無指定
 URL of public key : [未設定]
 Login data .......: [未設定]
 Signature PIN ....: 強制
 Key attributes ...: 2048R 2048R 2048R
 Max. PIN lengths .: 127 127 127
 PIN retry counter : 3 3 3
 Signature counter : 0
 Signature key ....: [none]
 Encryption key....: [none]
 Authentication key: [none]
 General key info..: [none]

やった!動きました。

ちなみに、/var/log/messageを確認すると、pcscdを-d (debug)で動かしている場合、以下のようなログが出ていると思います。

 Dec 20 03:33:21 ishitPc9 pcscd: hotplug_libusb.c:541:HPAddHotPluggable() Adding USB device: 1:2:0
 Dec 20 03:33:21 ishitPc9 pcscd: readerfactory.c:1015:RFInitializeReader() Attempting startup of Free Software Initiative of Japan Gnuk (FSIJ-1.0.1-50FF6A06) 00 00 using /usr/pkg/lib/pcsc-lite/drivers/ifd-ccid.bundle/Contents/NetBSD/libccid.so
 Dec 20 03:33:21 ishitPc9 pcscd: readerfactory.c:900:RFBindFunctions() Loading IFD Handler 3.0
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:1927:init_driver() Driver version: 1.4.18
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:1944:init_driver() LogLevel: 0x0003
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:1955:init_driver() DriverOptions: 0x0000
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:96:CreateChannelByNameOrChannel() Lun: 0, device: usb:234b/0000:libusb-1.0:1:2:0
 Dec 20 03:33:21 ishitPc9 pcscd: ccid_usb.c:284:OpenUSBByName() Using: /usr/pkg/lib/pcsc-lite/drivers/ifd-ccid.bundle/Contents/Info.plist
 Dec 20 03:33:21 ishitPc9 pcscd: ccid_usb.c:302:OpenUSBByName() ifdManufacturerString: Ludovic Rousseau (ludovic.rousseau at free.fr)
 Dec 20 03:33:21 ishitPc9 pcscd: ccid_usb.c:303:OpenUSBByName() ifdProductString: Generic CCID driver
 Dec 20 03:33:21 ishitPc9 pcscd: ccid_usb.c:304:OpenUSBByName() Copyright: This driver is protected by terms of the GNU Lesser General Public License version 2.1, or (at your option) any later version.
 Dec 20 03:33:21 ishitPc9 pcscd: ccid_usb.c:596:OpenUSBByName() Found Vendor/Product: 234B/0000 (Free Software Initiative of Japan Gnuk)
 Dec 20 03:33:21 ishitPc9 pcscd: ccid_usb.c:598:OpenUSBByName() Using USB bus/device: 1/2
 Dec 20 03:33:21 ishitPc9 pcscd: ccid_usb.c:1137:get_data_rates() declared: 9600 bps
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:375:IFDHGetCapabilities() tag: 0xFB3, usb:234b/0000:libusb-1.0:1:2:0 (lun: 0)
 Dec 20 03:33:21 ishitPc9 pcscd: readerfactory.c:353:RFAddReader() Using the pcscd polling thread
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:375:IFDHGetCapabilities() tag: 0xFAE, usb:234b/0000:libusb-1.0:1:2:0 (lun: 0)
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:463:IFDHGetCapabilities() Reader supports 1 slot(s)
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:1139:IFDHPowerICC() action: PowerUp, usb:234b/0000:libusb-1.0:1:2:0 (lun: 0)
 Dec 20 03:33:21 ishitPc9 pcscd: eventhandler.c:292:EHStatusHandlerThread() powerState: POWER_STATE_POWERED
 Dec 20 03:33:21 ishitPc9 pcscd: Card ATR: 3B DA 11 FF 81 B1 FE 55 1F 03 00 31 84 73 80 01 80 00 90 00 E4
 Dec 20 03:33:21 ishitPc9 pcscd: ifdhandler.c:1139:IFDHPowerICC() action: PowerDown, usb:234b/0000:libusb-1.0:1:2:0 (lun: 0)
 Dec 20 03:33:21 ishitPc9 pcscd: eventhandler.c:481:EHStatusHandlerThread() powerState: POWER_STATE_UNPOWERED

Gnuk Token最初の設定

本家ドキュメントにあるシリアル番号の登録は「この設定は必須ではなく」と記載があるので、しないことにします。

Gnuk Tokenをパーソナライズする

本家ドキュメントのとおり、パーソナライズします。

できたら、確認します。

 % gpg2 --card-status
 Application ID ...: D276000124010200FFFE50FF6A060000
 Version ..........: 2.0
 Manufacturer .....: unmanaged S/N range
 Serial number ....: 50FF6A06
 Name of cardholder: Takanori ISIHARA
 Language prefs ...: ja
 Sex ..............: 男
 URL of public key : http://www.rururu.org/~isihara/isihara.asc.txt
 Login data .......: [未設定]
 Signature PIN ....: 強制なし
 Key attributes ...: 2048R 2048R 2048R
 Max. PIN lengths .: 127 127 127
 PIN retry counter : 3 3 3
 Signature counter : 0
 Signature key ....: [none]
 Encryption key....: [none]
 Authentication key: [none]
 General key info..: [none]

GnuPGで鍵を生成する

もともと、GnuPGの鍵はあったのですが、再度作りなおすことにしました。本家ドキュメントでは、RSA 2048bit以外はサポートしていないので、なおさらです。

本家ドキュメントと同じように、認証用のサブキーを(ひとつ)追加しました。以下のような感じになりました。

 % gpg2 --list-key
 /home/isihara/.gnupg/pubring.gpg
 --------------------------------
 pub   2048R/C3AB2FA3 2014-12-19
 uid       [  究極  ] ISIHARA Takanori <isihara at rururu.org>
 sub   2048R/C585E2CB 2014-12-19
 sub   2048R/125463A8 2014-12-19

125463A8が追加したものになります。

秘密鍵をGnuk Tokenに登録する

本家ドキュメントのとおりに行います。

注意点は、keytocardが終わったあとに、saveしてしまうと、~/.gnupg以下の秘密鍵は、Gnuk Tokenの参照のみになってしまい、実態は無くなってしまいます。

作成した鍵を残したい場合は、saveする前に、バックアップをとっておきましょう。

登録後、確認します。以下のようになりました。

 % gpg2 --card-status
 Application ID ...: D276000124010200FFFE50FF6A060000
 Version ..........: 2.0
 Manufacturer .....: unmanaged S/N range
 Serial number ....: 50FF6A06
 Name of cardholder: Takanori ISIHARA
 Language prefs ...: ja
 Sex ..............: 男
 URL of public key : http://www.rururu.org/~isihara/isihara.asc.txt
 Login data .......: [未設定]
 Signature PIN ....: 強制なし
 Key attributes ...: 2048R 2048R 2048R
 Max. PIN lengths .: 127 127 127
 PIN retry counter : 3 3 3
 Signature counter : 0
 Signature key ....: 32B4 7B37 64CD B949 CCDF  2094 9F8F 364E C3AB 2FA3
       created ....: 2014-12-19 20:40:39
 Encryption key....: A583 6AC6 C19B 2223 2640  8D8E 3240 8D1B C585 E2CB
       created ....: 2014-12-19 20:40:39
 Authentication key: 701A 2AA4 C421 C969 07A6  3EB7 C9DF 56F6 1254 63A8
       created ....: 2014-12-19 20:43:39
 General key info..: pub  2048R/C3AB2FA3 2014-12-19 ISIHARA Takanori <isihara at rururu.org>
 sec>  2048R/C3AB2FA3  作成: 2014-12-19  有効期限: 無期限
                       カード番号: FFFE 50FF6A06
 ssb>  2048R/C585E2CB  作成: 2014-12-19  有効期限: 無期限
                       カード番号: FFFE 50FF6A06
 ssb>  2048R/125463A8  作成: 2014-12-19  有効期限: 無期限
                       カード番号: FFFE 50FF6A06

Gnuk Tokenのパスワードを設定する

 admin less mode(本家どおり)

本家ドキュメントのとおりに行います。admin less modeを使うことにします。

本家ドキュメントにも繰り返しあるように、注意点は、パスワードは8文字以上必要です。

リセットコードは、任意だったので、設定しませんでした。

 admin full mode

Gnuk Tokenの制限事項として、「パスワードを3回連続して間違うと、Gnuk Tokenは使えなくなります。」admin lessモードだと、燃えないゴミに事実上なります。[1]3回連続で間違えることもあると思う人は、admin fullモード(つまり、adminパスワードをつける)ようにして、燃えないゴミにならないようにした方がよいです。[2]

具体的には、adminコマンドを入力すると、管理者モードになるので、そこで、adminパスワードを先につけるとadmin full modeになります。

また、リセットコードも設定した方がよいです。[3]

Gnuk Tokenを使う

 注意

gpg-agentは、起動した時のTTYを覚えていて、そこにパスフレーズやPINを訊くプロンプトを出してきます。よって、たとえば、

  1. コンソールでログインする。
  2. gpg-agent起動
  3. startxしてXを起動
  4. xterm上のシェルから、sshでリモートのホストにログインする。

という場合、gpg-agentはX上のxtermではなく、最初のコンソール上なので、パスフレーズを聞いてくるのは、xterm上ではありません。

こういう場合、

gpg-connect-agent updatestartuptty /bye

というコマンドで、gpg-agentにパスフレーズやPINのプロンプトを出すTTYが変わったことを通知します。もっとも、いちいち手動で行うのはめんどくさいので、"gpg-agent で ssh-agent"にある、「ssh のラッパスクリプト」をつかって、sshコマンド等の実行前に、毎度、実行するようにしておくとよいと思います。

 実行

では、当初予定通り、sshに使ってみます。まず、sshの公開鍵が取り出せるはずです。

 % gpgkey2ssh 125463A8
 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc/rocXEFzdxNChQp8dzPkic5wyPQq6jySdMukh43Pk8Cxlq+3LhWTL12U36ZsXK5BcPP767IW
 D/jf46aBNlH7/FoyKHbImHGYizSK5Ai5zdAIY8WR35slKKrlrrgPJYuccgYm6D31rdLksAEfwHMhZERCyc6kZv0j+OhONo/gAQ6nlWqvyQRJtXYH
 ZX+g2f7oNtMz6yZj/l+U/AOByluxIBTsK/SimSgz9uGc3ALlsdcLuHkpKyZzTsyk48FwC9AcZU0wcsGa6vDB9vmR/ZGNcYQApBafKr/G6iGGnGLm
 SSGHG0dZhUAKwplLZ0mbzBgt0ZeQMElmQM82y8pTaYQ1 COMMENT

ssh-add -Lで、ちゃんと、認証用のsub keyがつかわれていることがわかります。

 % ssh-add -L
 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDc/rocXEFzdxNChQp8dzPkic5wyPQq6jySdMukh43Pk8Cxlq+3LhWTL12U36ZsXK5BcPP767IW
 D/jf46aBNlH7/FoyKHbImHGYizSK5Ai5zdAIY8WR35slKKrlrrgPJYuccgYm6D31rdLksAEfwHMhZERCyc6kZv0j+OhONo/gAQ6nlWqvyQRJtXYH
 ZX+g2f7oNtMz6yZj/l+U/AOByluxIBTsK/SimSgz9uGc3ALlsdcLuHkpKyZzTsyk48FwC9AcZU0wcsGa6vDB9vmR/ZGNcYQApBafKr/G6iGGnGLm
 SSGHG0dZhUAKwplLZ0mbzBgt0ZeQMElmQM82y8pTaYQ1 cardno:FFFE50FF6A06

Gnuk Tokenを抜くと、ちゃんと出なくなります。

 % ssh-add -L
 The agent has no identities.

おぉ。ちょっと感激。

sshで接続してみましょう。公開鍵を自分自身に登録して、sshしてみます。

 % ssh-add -L >> ~/.ssh/authorized_keys
 % ssh -v localhost
 <snip>
 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
 debug1: Next authentication method: publickey
 debug1: Offering RSA public key: cardno:FFFE50FF6A06
 debug1: Server accepts key: pkalg ssh-rsa blen 279
 debug1: Authentication succeeded (publickey).
 <snip>
 %

loginできました。本家ドキュメントのとおり、「debug1: Authentication succeeded (publickey).」の手前で、2秒くらい(1.5秒らしい)待たされます。

Gnuk Tokenのパスワードを変えたあと、一度もパスワードを入力していない場合は、PINの入力を求められます。

 % ssh -v localhost
 <snip>
 debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
 debug1: Next authentication method: publickey
 debug1: Offering RSA public key: cardno:FFFE50FF6A06
 debug1: Server accepts key: pkalg ssh-rsa blen 279
 debug1: Authentication succeeded (publickey).
 Please enter the PIN
 PIN:

PINの入力を求められないときは、一度、sshコマンドを終了したあと、

gpg-connect-agent updatestartuptty /bye

して、gpg-agentにPINを出すTTYを伝えたのち、再度sshしてみて下さい。

その他、気づいたことなど

 scdaemonがずっとCPUを食う

scdaemonがずっとCPUを食います。(Gnuk Tokenを抜いたあとでもです。)残念ですが、これでは実用になりません。

scdaemonは停止しておけるのですが、止めてしまうと、gpg2コマンドで、Gnuk Tokenを読み出すかなんかして、scdaemonを起動したあと、Gnuk TokenのPINを再度、入力する必要があります。イケてません。

同様に、scdaemonほどではないですが、pcscdも食います。(ただし、Gnuk Tokenを刺していないときは、全く問題ありません。)

NetBSD 7 BETA(DRMKMSカーネル:DRMKMS.201502152020Z)で試した限りでは、上記の問題はおきないようです。いいかんじ!

この件は、NBUGのおおしまさんが、NetBSD 6以降の32bit port全般に起きる問題で、原因はGNU pthと特定してくださって、send-prして下さり(PR49759)、直っています。

 PINの入力がおかしくなる

どうも、~/.gnupg/gpg-agent.confで、pinentry-programを/usr/pkg/bin/pinentry-ttyにすると、入力をキャンセルした時に、おかしくなることがありました。よって、デフォルトの、

pinentry-program /usr/pkg/bin/pinentry-curses

にしておいたほうがよいかもしれません。(自分は、そうしています。)

次の記事は

明日(20日)は、@ozaki-r さんの記事です。楽しみです。

NetBSD Advent-Calendar 2014: http://qiita.com/advent-calendar/2014/netbsd

  • [1]実際になりました。
  • [2]本当に燃えないゴミにならないかは試していません。
  • [3]本当に燃えないゴミにならないかは試していません。

間違いの指摘や、ご意見などは、FrontPageにある連絡先にメールを下さるとうれしいです。

最終更新時間:2017年06月30日 23時53分46秒