「GNOME/Keyring」の版間の差分
(→ヒントとテクニック: デスクトップ環境以外 (KDE、GNOME、XFCE など) で gnome-keyring-daemon を起動するを翻訳して追加) |
|||
143行目: | 143行目: | ||
=== デスクトップ環境以外 (KDE、GNOME、XFCE など) で gnome-keyring-daemon を起動する === |
=== デスクトップ環境以外 (KDE、GNOME、XFCE など) で gnome-keyring-daemon を起動する === |
||
+ | |||
+ | {{Accuracy|At least [[xinit]] and [[SDDM]] execute all scripts from {{ic|/etc/X11/xinit/xinitrc.d/}} and [[sway]] provides {{ic|/etc/sway/config.d/50-systemd-user.conf}} so the problem is not being "outside desktop environments". If gnome-keyring requires [[XDG Autostart]], the installation/configuration section should say so.|section=Launching gnome-keyring-daemon outside desktop environments (KDE,_GNOME,_XFCE,_...)}} |
||
sway、i3、またはそれ以外のウィンドウマネージャーを使用している場合 |
sway、i3、またはそれ以外のウィンドウマネージャーを使用している場合 |
2023年2月7日 (火) 05:57時点における版
GNOME Keyring は「シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション」です。
インストール
GNOME を使用している場合、gnome-keyring は gnome グループの一つとして自動的にインストールされます。GNOME を使っていない場合は、公式リポジトリから gnome-keyring をインストールしてください。libsecret もインストールして、他のアプリケーションにキーリングへのアクセスを許可する必要があります。libgnome-keyring は非推奨になりました(そして、libsecret にとって代わられました)が、それでも特定のアプリケーションで必要になる場合があります。
gnome-keyring-daemon は、ログイン時に systemd ユーザー サービスを介して自動的に開始されます。また、ソケットを介して要求に応じて開始することもできます。
GNOME キーリングに関連する追加のユーティリティは次の通りです:
- secret-tool — コマンドラインから GNOME Keyring (や DBus Secret Service API が実装された他のサービス) にアクセス。
- lssecret — libsecret を使用してすべてのシークレットアイテムを一覧表示する (例えば、GNOME Keyring)
GUI で管理
GNOME Keyring は Seahorse を使って管理することができます。公式リポジトリから seahorse パッケージをインストールしてください。
GNOME Keyring のパスワードを空にしたり変更することが可能です。Seahorse を開いて、ドロップダウンメニューの "View" から "By Keyring" を選択してください。Passwords タブを開いて、"Passwords: login" を右クリックして "Change password" を選択してください。旧パスワードを入力してから新しいパスワードを入力します。暗号化されていないストレージを使用しているという警告が表示されるので "Use Unsafe Storage" を押して下さい。
キーリングを使用する
PAM モジュール pam_gnome_keyring.so は、GNOME キーリングを部分的に初期化し、そのプロセスでデフォルトの login キーリングのロックを解除します。その後、初期化を完了して、環境変数を設定する --start
オプションを指定して gnome-keyring-daemon を呼び出す必要があります。
PAM ステップ
ディスプレイマネージャを使用する場合、ほとんどのケースでキーリングはそのまま機能します。GDM、LightDM、LXDM、SDDM はすでに必要な PAM の設定があります。キーリングのロックを自動的に解除しないディスプレイマネージャの場合は、以下のような /etc/pam.d/login
の代わりに適切なファイルを編集してください。
/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
GNOME、Unity、Cinnamon、MATE を使用している場合は、これで完了です。初期化が完了し、環境変数が自動的に設定されます。
SSH 鍵
ssh コンポーネントを含む gnome-keyring-daemon は、SSH エージェントを起動し、~/.ssh/
にある対応する .pub ファイルを持つすべての鍵を自動的にロードします。これらの鍵をエージェントから削除する方法はありません。
すべてのロードされている鍵を確認するには:
$ ssh-add -L
サーバーに接続するときに、鍵が使われてパスフレーズの入力を求めるダイアログがポップアップするようになります。ログイン時に自動的にロックを解除するオプションもあります。このオプションにチェックを入れている場合、もうパスフレーズを入力する必要はなくなります。
もしくは、キーリングにパスフレーズを永続的に保存したい場合、seahorse パッケージの seahorse-ssh-askpass を使います:
/usr/lib/seahorse/seahorse-ssh-askpass my_key
SSH 鍵を追加するには:
$ ssh-add ~/.ssh/id_dsa Enter passphrase for /home/mith/.ssh/id_dsa:
To disable all manually added keys:
$ ssh-add -D
キーリング ssh コンポーネントを有効にする
キーリングに同梱されているデフォルトの systemd ユーザー サービスには、ssh コンポーネントが含まれていません。ユニットファイル の ExecStart
行で gnome-keyring-daemon
コマンドの --components
オプションに ssh を追加する必要があります。
キーリングの systemd ユニットファイルを編集する方法については Systemd#ユニットファイルの編集 を参照してください。
また、gcr-ssh-agent.service
ユーザーユニットを有効にする必要があります。
キーリングデーモンの無効化
別の 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 が起動します。
Git 統合
GNOME キーリングは、HTTPS でプッシュするときに Git と一緒に使うと便利です。この機能を利用するには、libsecret パッケージを インストールする必要があります。
libsecret ヘルパーを使うように Git を設定:
$ git config --global credential.helper /usr/lib/git-core/git-credential-gnome-keyring
これで git push を実行したときに、キーリングのロックが解除されていなかった場合、解除するように要求されます。
GnuPG 統合
GnuPG を使用するいくつかのアプリケーションは、pinentry-program
の設定を必要とします。GNOME 3 pinentry for GNOME Keyring を使用してパスフレーズプロンプトを管理するために以下を設定します。
~/.gnupg/gpg-agent.conf
pinentry-program /usr/bin/pinentry-gnome3
もう一つのオプションは、GPG のループバックを強制することで、アプリケーションでパスフレーズを入力できるようにすることです。
キーリングの名前変更
キーリングの表示名 (つまり、Seahorse および file
に表示される名前) は gnome-keyring-for-seahorse-the-passwords-and-keyrings-application/ 暗号化されていないキーリングファイルの display-name の値を変更する キーリングは通常、.keyring ファイル拡張子を付けて ~/.local/share/keyrings/
に保存されます。
キーリングのパスワードをユーザーパスワードで自動的に変更
password optional pam_gnome_keyring.so
を /etc/pam.d/passwd
の末尾に追加します。
/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
デスクトップ環境以外 (KDE、GNOME、XFCE など) で gnome-keyring-daemon を起動する
sway、i3、またはそれ以外のウィンドウマネージャーを使用している場合
/etc/xdg/autostart/gnome-keyring-*.desktop
/etc/X11/xinit/xinitrc.d/50-systemd-user.sh
ウィンドウマネージャーの起動時に次のコマンドを実行する必要があります。コマンドは特定の順序で実行する必要はありません。
dbus-update-activation-environment DISPLAY XAUTHORITY WAYLAND_DISPLAY
または、
dbus-update-activation-environment --all
このコマンドは、環境変数をウィンドウマネージャーから dBus セッションに渡します。これがないと、dbus 経由で GUI プロンプトをトリガーできません。たとえば、これは seahorse パスワードプロンプトに必要です。
これは、グラフィカル環境が開始される前に dbus セッションが開始されるために必要です。したがって、dbus セッションはあなたがいるグラフィカルな環境について知らないのです。誰か、または何かが、グラフィカル環境を記述する環境変数を dbus セッションに渡すことによって、グラフィカル環境について dbus セッションに教えなければなりません。
gnome-keyring-daemon --start --components=secrets
ログイン時に gnome-keyring-daemon --login
が起動し、gnome-keyring をログインパスワードでアンロックした状態にします。もし gnome-keyring-daemon --login
が数分以内に dbus セッションに接続されなければ、gnome-keyring-daemon --login
は終了します。gnome-keyring-daemon --start ...
がウィンドウマネージャの dbus セッションに対して起動されると、gnome-keyring-daemon --login
は dbus セッションに接続されます。ログインセッションが gnome-keyring-daemon --start ...
を起動しないまま gnome-keyring-daemon --login
が終了すると、 gnome-keyring や secret service API を使用したプログラムも終了してしまいます、その場合は gnome-keyring-daemon --login
が終了するまで待つ必要が有ります。
トラブルシューティング
パスワードが保存されない
ログイン時に毎回パスワードプロンプトが表示され、パスワードが保存されない場合は、デフォルトのキーリングを作成・設定する必要があります。
Seahorse を使用してこれを行うには、GNOME ヘルプの Create a new keyring と Change the default keyring を参照してください。
キーリングのリセット
以下のエラーメッセージが表示された場合は、ログインキーリングのパスワードを変更する必要があります。"The password you use to login to your computer no longer matches that of your login keyring"。
または、~/.local/share/keyrings/
から login.keyring
と user.keystore
ファイルを削除することもできます。この操作を行うと、保存されているすべての鍵が永久に削除されますのでご注意ください。ファイルを削除した後、ログアウトして再度ログインしてください。
デーモンコントロールファイルが見つからない
ログイン後の journal に以下のようなエラーが表示されることがあります。
gkr-pam: unable to locate daemon control file
このメッセージは、他に関連する問題がなければ、「無視しても大丈夫」です[3]。
No such secret collection at path: /
カスタム ~/.xinitrc
を使用していて、Seahorse で新しいキーリングを作成しようとしたときにこのエラーが発生した場合は、次の行を追加することで解決できる可能性があります
~/.xinitrc
source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
ターミナルに "discover_other_daemon: 1" というメッセージが表示される
これは gnome-keyring-deamon が重複して起動されたことが原因です。systemd サービスはデーモンと一緒に提供されるため、別の方法で開始する必要はありません。そのため、.zshenv
、.bash_profile
、.xinitrc
、config.fish
などから開始コマンドを必ず削除してください。または、gnome-keyring-daemon.service
および gnome-keyring-daemon.socket
ユーザーユニットを無効化することもできます。