2015年02月06日

ssh 越しに「gpg --gen-key」を実行したときに乱数生成の段階までくるとハングしてしまったかのようになるのは,「単に時間がかかっているから」らしい.約20分もかかった.これの解決方法は,「別の ssh セッションでがりがりディスクアクセスをすればいい」らしい.

Web拍手:


$ date; gpg --gen-key; date
2015年 2月 6日 金曜日 20:24:46 JST
gpg-agent[23959]: ディレクトリー「/home/noike/.gnupg」ができました
gpg-agent[23959]: ディレクトリー「/home/noike/.gnupg/private-keys-v1.d」ができました
gpg-agent[23959]: listening on socket `/home/noike/.gnupg/S.gpg-agent'
gpg-agent[23959]: listening on socket `/home/noike/.gnupg/S.gpg-agent.ssh'
gpg-agent[23960]: gpg-agent (GnuPG) 2.0.14 started
gpg (GnuPG) 2.0.14; Copyright (C) 2009 Free Software Foundation, Inc.
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

gpg: 鍵輪「/home/noike/.gnupg/secring.gpg」ができました
gpg: 鍵輪「/home/noike/.gnupg/pubring.gpg」ができました
ご希望の鍵の種類を選択してください: [47/1130]
(1) RSA and RSA (default)
(2) DSA and Elgamal
(3) DSA (署名のみ)
(4) RSA (署名のみ)
選択は?

(略)

今から長い乱数を生成します。キーボードを打つとか、マウスを動かす
とか、ディスクにアクセスするとかの他のことをすると、乱数生成子で
乱雑さの大きないい乱数を生成しやすくなるので、お勧めいたします。
gpg-agent[23960]: handler 0x224f380 for fd 9 started
gpg-agent[23960]: handler 0x224f380 for fd 9 terminated

(略)

gpg-agent[23960]: handler 0x228f390 for fd 9 started
gpg-agent[23960]: handler 0x228f390 for fd 9 terminated
gpg: /home/noike/.gnupg/trustdb.gpg: 信用データベースができました
gpg: 鍵5AB82A20を絶対的に信用するよう記録しました
公開鍵と秘密鍵を作成し、署名しました。

(略)

2015年 2月 6日 金曜日 20:43:43 JST
$



開始時刻が 2015年 2月 6日 金曜日 20:24:46 JST で,
終了時刻が 2015年 2月 6日 金曜日 20:43:43 JST なので,
約 20 分もかかった.

ssh 越しに「gpg --gen-key」を実行したときに乱数生成の段階までくるとハングしてしまったかのようになるのは,「単に時間がかかっているから」らしい.
時間がかかっている間に何をしているのかというと,「乱数を生成するのに必要なエントロピーを収集している」らしいのだけど,「ssh 越しでアクセスしているときはキーボードやマウスの入力割り込みを取得できないために,エントロピーの収集がなかなかできないので時間がかかる」らしい.

「らしい」ばかりなのは,私はよくわかっていないから(^^;).

それで,「この待たされ時間を短くする方法は何かないのかなぁ」としばらくぐぐっていたら,次の記事を見つけた.

「GnuPG で鍵作成時のエントロピーの取得 - 電気ウナギ的○○」
http://blog.netandfield.com/shar/2009/05/gnupg-2.html

「別の ssh セッションでがりがりディスクアクセスをすればいい」らしい.
「えー,ホントかなー」と半ば疑いながら,
「rm -r ~/.gnupg/」で GnuPG の管理情報を消して,
今一度,「gpg --gen-key」を実行.
「待たされ時間」が始まったら,
別の ssh セッションで「dd if=/dev/urandom of=/tmp/mass bs=1M count=16384」を実行した.

ログは貼らないけれど,結果は,
開始時刻が 2015年 2月 6日 金曜日 21:13:00 JST で,
終了時刻が 2015年 2月 6日 金曜日 21:22:17 JST なので,
今度は,約 10 分になった.

相変わらず待たされることには違いないけれど,半分の時間で済むようになった.
うーむー,もう追求しないけれど,今後,こういう機会があったら,VNC や X のフォワードでリモートアクセスして,「待たされ時間」が始まったら,キーボードやマウスをわさわさ操作してみようかなー.

何か,根本的な解決方法があるような気がするなぁ... .


==

2015年02月06日
「which で得られる実行ファイル」と,「実際に実行される実行ファイル」がなぜか異なる現象でハマった.原因はわからなかったのだけど,source ~/.bashrc したら「which で得られる実行ファイル」が実行されるようになった.どこかにキャッシュされていたのかなぁ?
http://knoike.seesaa.net/article/413582310.html


posted by NOIKE at 22:16 | 東京 ☀ | Comment(0) | TrackBack(0) | コンピュータ | このブログの読者になる | 更新情報をチェックする

「which で得られる実行ファイル」と,「実際に実行される実行ファイル」がなぜか異なる現象でハマった.原因はわからなかったのだけど,source ~/.bashrc したら「which で得られる実行ファイル」が実行されるようになった.どこかにキャッシュされていたのかなぁ?

Web拍手:


$ which gpg
/usr/local/bin/gpg

$ cat /usr/local/bin/gpg
#!/bin/sh
echo "hohoho"
exit

$ gpg
gpg: 開始します。メッセージを打ってください ...
^C
gpg: signal Interrupt caught ... exiting

$ source ~/.bashrc; source ~/.bash_profile

$ gpg
hohoho

$ which gpg
/usr/local/bin/gpg

$ gpg
hohoho




「which で得られる実行ファイル」と,「実際に実行される実行ファイル」がなぜか異なる現象でハマった.
原因はわからなかったのだけど,source ~/.bashrc したら「which で得られる実行ファイル」が実行されるようになった.
どこかにキャッシュされていたのかなぁ?

やりたかったことは,gpg コマンド実行時に
「can't connect to `/home/xxx/.gnupg/S.gpg-agent': Connection refused」
という警告が出てしまうので,それが出ないように,/usr/bin/gpg ではなく,/usr/local/bin/gpg というコマンドを作って,その中で,gpg-agent を経由して本来の /usr/bin/gpg を実行したかったのでした.


「gpg2の実行時のワーニング・メッセージ:Linuxの環境設定に関するメモ:So-netブログ」
http://dan-project.blog.so-net.ne.jp/2012-08-30






posted by NOIKE at 03:02 | 東京 🌁 | Comment(0) | TrackBack(1) | コンピュータ | このブログの読者になる | 更新情報をチェックする