GNOME/Keyring

提供: ArchWiki
2022年4月4日 (月) 12:07時点におけるKusanaginoturugi (トーク | 投稿記録)による版 (→‎PAM を使う: add Note and Tip.)
ナビゲーションに移動 検索に移動
この記事あるいはセクションは翻訳の途中です。
ノート: 翻訳へのご協力または英語版を参照してください。 (議論: トーク:GNOME/Keyring#)

GNOME Keyring はパスワード・鍵・証明書などを保存してアプリケーションから利用できるようにする GNOME のコンポーネントです。

インストール

GNOME を使用している場合、gnome-keyringgnome グループの一つとして自動的にインストールされます。GNOME を使っていない場合は、公式リポジトリから gnome-keyring をインストールしてください。

便利なユーティリティ:

  • secret-tool — コマンドラインから GNOME Keyring (や DBus Secret Service API が実装された他のサービス) にアクセス。
https://wiki.gnome.org/Projects/Libsecret || libsecret
  • gnome-keyring-query — GNOME Keyring に保存したパスワードを確認するためのシンプルなコマンドラインツール。
|| gnome-keyring-queryAUR
  • gkeyring — コマンドラインからパスワードを確認する。Git バージョンではアイテムの名前や id を知らなくても全てのパスワードを確認可能。
https://github.com/kparal/gkeyring || gkeyringAUR, gkeyring-gitAUR

GUI で管理

GNOME Keyring は Seahorse を使って管理することができます。公式リポジトリから seahorse パッケージをインストールしてください。

GNOME Keyring のパスワードを空にしたり変更することが可能です。Seahorse を開いて、ドロップダウンメニューの "View" から "By Keyring" を選択してください。Passwords タブを開いて、"Passwords: login" を右クリックして "Change password" を選択してください。旧パスワードを入力してから新しいパスワードを入力します。暗号化されていないストレージを使用しているという警告が表示されるので "Use Unsafe Storage" を押して下さい。

GNOME 以外でキーリングを使用する

ディスプレイマネージャを使わない

自動ログイン

自動ログインを使っている場合、ログインキーリングに空のパスワードを設定することでキーリングマネージャを無効化することができます。

ノート: この場合はパスワードは暗号化されていない状態で保存されます。

コンソールログイン

コンソールによるログインを使っている場合、PAMxinitrc を使ってキーリングデーモンを起動することができます。PAM ではログイン時に自動的にキーリングのロックを解除することもできます。

PAM を使う
ノート: To use automatic unlocking without automatic login, the password for the user account should be the same as the default keyring. See #Automatically change keyring password with user password.
ヒント:
  • To use automatic unlocking with automatic login, you can set a blank password for the default keyring. Note that the contents of the keyring are stored unencrypted in this case.
  • Alternatively, if using GDM and LUKS, GDM can unlock your keyring if it matches your LUKS password. For this to work, you need to use the systemd init in your mkinitcpio.conf as well as the appropriate kernel parameters. See [1] for more details.
  • Skipping the PAM step works, because the next step will initialise the daemon when one is not running already; however, the default keyring is not unlocked in this case. More details are available at [2].

/etc/pam.d/login から gnome-keyring-daemon を起動:

auth セクションの最後に auth optional pam_gnome_keyring.so を追加して session セクションの最後に session optional pam_gnome_keyring.so auto_start を追加してください。

/etc/pam.d/login
#%PAM-1.0

auth       required     pam_securetty.so
auth       requisite    pam_nologin.so
auth       include      system-local-login
auth       optional     pam_gnome_keyring.so
account    include      system-local-login
session    include      system-local-login
session    optional     pam_gnome_keyring.so        auto_start

次に、/etc/pam.d/passwd の最後に password optional pam_gnome_keyring.so を追加してください。

/etc/pam.d/passwd
#%PAM-1.0

#password	required	pam_cracklib.so difok=2 minlen=8 dcredit=2 ocredit=2 retry=3
#password	required	pam_unix.so sha512 shadow use_authtok
password	required	pam_unix.so sha512 shadow nullok
password	optional	pam_gnome_keyring.so
ノート:
  • 自動でロックを解除したい場合、ユーザーアカウントとキーリングに同一のパスワードを設定する必要があります。
  • 上記の設定だけでは不十分で ~/.xinitrc に以下のコードを記述して環境変数をエクスポートする必要があります。
xinitrc を使う

xinitrc から gnome-keyring-daemon を起動:

~/.xinitrc
eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
export SSH_AUTH_SOCK

Xfce の場合は、Xfce#SSH エージェント を確認。

ディスプレイマネージャを使う

ディスプレイマネージャを使う場合、ほとんどの場合、何も設定しなくてもキーリングは動作します。以下のディスプレイマネージャはログイン時にキーリングのロックを自動的に解除します:

ノート: libgnome-keyring をインストールする必要があるかもしれません。

KDM については、KDM#KDM と Gnome-keyring を見て下さい。

SDDM の場合、KDM のガイドラインに従ってください。ただし /etc/pam.d/kde/etc/pam.d/sddm に変更してください。

SSH などのターミナルから動作させるアプリケーションからキーリングを使えるようにするには、以下を ~/.bash_profile~/.zshenv に追加してください:

~/.zshenv
if [ -n "$DESKTOP_SESSION" ];then
    eval $(gnome-keyring-daemon --start)
    export SSH_AUTH_SOCK
fi
ノート: GNOME Keyring デーモンは GNOME_KEYRING_PID をもはや使いません。[3] を参照。

SSH 鍵

SSH 鍵を追加するには:

$ ssh-add ~/.ssh/id_dsa
Enter passphrase for /home/mith/.ssh/id_dsa:

自動でロードされている鍵を確認するには:

$ ssh-add -L

全ての鍵を無効化するには:

$ ssh-add -D

サーバーに接続するときに、鍵が使われてパスフレーズの入力を求めるダイアログがポップアップするようになります。ログイン時に自動的にロックを解除するオプションもあります。このオプションにチェックを入れている場合、もうパスフレーズを入力する必要はなくなります。

もしくは、キーリングにパスフレーズを永続的に保存したい場合、seahorse パッケージの seahorse-ssh-askpass を使います:

/usr/lib/seahorse/seahorse-ssh-askpass my_key
ノート: 秘密鍵と同じディレクトリ (上記の例では ~/.ssh/id_dsa.pub) に対応する .pub ファイルが必要です。また、公開鍵のファイル名が秘密鍵に .pub を付けた名前になっていることを確認してください (例: my_key.pub)。

キーリングデーモンの無効化

別の SSH エージェントを使いたい場合 (例: ssh-agent)、GNOME Keyring デーモンの SSH コンポーネントを無効化する必要があります:

# ln -sf /dev/null /etc/xdg/autostart/gnome-keyring-ssh.desktop

ログアウトすることで変更が適用されます。

ヒントとテクニック

アプリケーションとの統合

パスフレーズの消去

$ gnome-keyring-daemon -r -d

上記のコマンドで、実行中のインスタンスが終了して、新しい gnome-keyring-daemon が起動します。

GNOME Keyring と Git

HTTPS でプッシュするときに Git と GNOME Keyring を組み合わせると便利です。

まず公式リポジトリから libgnome-keyring パッケージをインストールしてください。

そしてヘルパーをコンパイルします:

$ cd /usr/share/git/credential/gnome-keyring
# make

ヘルパーを使うように Git を設定:

$ git config --global credential.helper /usr/lib/git-core/git-credential-gnome-keyring

これで git push を実行したときに、キーリングのロックが解除されていなかった場合、解除するように要求されます。

トラブルシューティング

パスワードが保存されない

ログイン時に毎回パスワードプロンプトが表示され、パスワードが保存されない場合は、デフォルトのキーリングを作成・設定する必要があります。

seahorse パッケージをインストールして、システム設定から "パスワードと秘密鍵" を開いて View > By Keyring を選択してください。左カラムにキーリングが存在しない場合 (鍵のアイコン)、File > New > Password Keyring とたどって名前を付けて下さい。パスワードの入力を求められます。パスワードを入力しないと自動的にパスワード解除されるようになります (自動ログインを使っている場合も)、ただしパスワードは安全に保存されません。最後に、作成したキーリングを右クリックして "Set as default" を選択してください。

キーリングデーモンの SSH と Secrets コンポーネントの起動

ディスプレイマネージャや上に書かれている PAM で GNOME Keyring を起動していて、デスクトップに GNOME や Unity、MATE を使っていない場合、SSH と Secrets コンポーネントが自動的に起動しない場合があります。/etc/xdg/autostart/ にあるデスクトップファイル gnome-keyring-ssh.desktopgnome-keyring-secrets.desktop~/.config/autostart/ にコピーして OnlyShowIn という行を削除すれば問題は解決します。

$ cp /etc/xdg/autostart/{gnome-keyring-secrets.desktop,gnome-keyring-ssh.desktop} ~/.config/autostart/
$ sed -i '/^OnlyShowIn.*$/d' ~/.config/autostart/gnome-keyring-secrets.desktop
$ sed -i '/^OnlyShowIn.*$/d' ~/.config/autostart/gnome-keyring-ssh.desktop

参照