2019年8月11日日曜日

KeePassXCの起動時にパスワードを指定する

前回書いたように、パスワード管理にはKeePassXCを使っています。

ただ、今までずっと起動するたびにマスターパスワードを入力していたんですが、それだと毎回だるいので、自動入力できないもんかと調べてみました。

ここで紹介する方法は、Linuxのデスクトップ環境MATEXfce4で確認しています。多分GNOMEでもうごくとおもいます。KDEは知りません。

マスターパスワードはGNOME Keyringで管理

自動入力といってもさすがにマスターパスワードを平文で保存しておくわけにはいかないので、これは暗号化しておきます。

暗号化にはGNOME Keyringを使います。GNOMEやMATEには最初から入っていて、Xfce4でもあとから導入できます。多分KDEでも。導入方法は割愛します。aptとかyumで入れてください。

これにマスターパスワードを登録しておけば、ログインパスワードをキーにしてロックを解除できます。
あとはコマンドラインツールからマスターパスワードを取得してKeePassXCの起動時に渡すという流れ。

マスターパスワードの登録はGNOME KeyringのCLIであるsecret-toolを使います。
$ secret-tool store --label "KeePassXC master password" type kdb
Password: (ここにKeePassXCのパスワードを入れる)
パスワードの入力を求められるので、ここにKeePassXCデータベースのパスワードを入れます。
こんなかんじでパスワードが入ります。
typekdbはそれぞれ属性名と属性値です。なんでもいいのですが、GNOME Keyringは属性名と属性値をユニークなキーとしてデータを格納しています。
属性名・属性値は2つ以上あっても構いません。その場合は属性名・属性値の組み合わせがユニークである必要があります。
labelはユニークでなくても構いません。一見するとラベルがユニークである必要があるように思えるかもしれませんが、ラベルはただ表示に使われるだけっぽいです。

格納したパスワードを標準出力に表示するにはこうします。
$ secret-tool lookup type kdb
(ここにKeePassXCのパスワードが表示される)
あとはこれをKeePassXC起動時に渡してやればOKです。

KeePassXCにパスフレーズを標準入力から渡す

KeePassXCに--pw-stdinという起動オプションがあります。このオプションとパイプを使えばGNOME Keyring内のパスフレーズをKeePassXCに渡せます。
$ secret-tool lookup type kdb | keepassxc --pw-stdin /path/to/keepassxc.kdb
Xfceなら「設定マネージャー」→「セッションと起動」→「追加」からコマンドを登録します。
ただし、パイプを含むコマンドは実行できないかもしれないので、その場合はshコマンドをはさみます。
$ sh -c "secret-tool lookup type kdb | keepassxc --pw-stdin /path/to/keepassxc.kdb"
ちなみにキーファイルは--keyfileで指定できます。
$ sh -c "secret-tool lookup type kdb | keepassxc --pw-stdin --keyfile /path/to/keyfile /path/to/keepassxc.kdb"

複数のファイルを開きたい場合は?

パスフレーズが指定された複数のファイルを開く方法についてはまだ解決していません。

該当部分のコードを見る限り、複数のパスフレーズを改行で区切ったものを標準入力から渡せばよさそうに見えますが、1つめのファイルは開けたものの2つめはパスワードを要求されました。

誰か方法を知っていたら教えてください。

0 件のコメント:

コメントを投稿