「GNOME/Keyring」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(序文を更新)
(同期)
 
(同じ利用者による、間の6版が非表示)
1行目: 1行目:
 
[[Category:GNOME]]
 
[[Category:GNOME]]
  +
[[Category:OpenPGP]]
 
[[en:GNOME/Keyring]]
 
[[en:GNOME/Keyring]]
 
[[es:GNOME (Español)/Keyring]]
 
[[es:GNOME (Español)/Keyring]]
 
[[zh-hans:GNOME/Keyring]]
 
[[zh-hans:GNOME/Keyring]]
  +
{{Related articles start}}
[https://wiki.gnome.org/Projects/GnomeKeyring GNOME Keyring] は "シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション" です。
 
  +
{{Related|GnuPG}}
  +
{{Related|OpenPGP}}
  +
{{Related articles end}}
  +
  +
[https://wiki.gnome.org/Projects/GnomeKeyring GNOME Keyring] は「シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション」です。
  +
  +
GNOME Keyring は [https://www.freedesktop.org/wiki/Specifications/secret-storage-spec/ org.freedesktop.secrets] API を提供しています。これは、クライアントアプリケーションがユーザーのログインセッション内で実行中のサービスを利用してシークレットをセキュアに保管できるようにする API です。
  +
  +
== セキュリティ ==
  +
  +
=== 悪意のあるアプリケーションからの保護 ===
  +
  +
GNOME/Keyring API の動作に関連するセキュリティの問題 ([https://nvd.nist.gov/vuln/detail/CVE-2018-19358 CVE-2018-19358]) が過去に報告されています。いかなるアプリケーションも、キーリングのロックが解除されていれば、[https://github.com/sungjungk/keyring_crack 任意のシークレットを簡単に読むことができてしまいます]。さらに、ユーザーがログインしていれば、ログイン/デフォルトのコレクションのロックは解除されています。D-Bus の保護機構 (busconfig とポリシー XML エレメントを含む) はデフォルトで使用されておらず、いずれにせよ、これも簡単にバイパスできてしまいます。
  +
  +
GNOME/Keyring のセキュリティモデルによれば、信頼されないアプリケーションはユーザーのセッションバスソケットへのアクセスを許可されないであろうことから、GNOME プロジェクトはこの脆弱性レポートに[https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/5#note_1876550 同意していません]。
  +
  +
Flatpak によってサンドボックス化されているアプリケーションは、セッションバスへのアクセスがフィルタリングされています。
  +
  +
=== セッションがロックされてもキーリングはロックされません ===
  +
  +
セッションがロックされても、キーリングは自動的にロックされません。[https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/62] これはつまり、パスワードがメモリ内に残り続け、[[Wikipedia:DMA attack|DMA 攻撃]]に対して脆弱になることを意味します。
   
 
== インストール ==
 
== インストール ==
13行目: 35行目:
 
GNOME Keyring に関する追加のユーティリティは次の通りです:
 
GNOME Keyring に関する追加のユーティリティは次の通りです:
   
* {{App|secret-tool|コマンドラインから GNOME Keyring (や [https://specifications.freedesktop.org/secret-service/ DBus Secret Service API] を実装する他のサービス) にアクセスします。|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}}
+
* {{App|secret-tool|コマンドラインから GNOME Keyring (や [https://specifications.freedesktop.org/secret-service-spec/latest/ DBus Secret Service API] を実装する他のサービス) にアクセスします。|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}}
 
* {{App|lssecret|''libsecret'' を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。|https://gitlab.com/GrantMoyer/lssecret|{{AUR|lssecret-git}}}}
 
* {{App|lssecret|''libsecret'' を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。|https://gitlab.com/GrantMoyer/lssecret|{{AUR|lssecret-git}}}}
   
24行目: 46行目:
 
== キーリングを使用する ==
 
== キーリングを使用する ==
   
[[PAM]] モジュール ''pam_gnome_keyring.so'' は、GNOME キーリングを部分的に初期化し、その過程でデフォルトの ''login'' キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。
+
[[PAM]] モジュール ''pam_gnome_keyring.so'' は、GNOME キーリングを部分的に初期化し、その過程で ''login'' キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。
   
 
=== PAM の手順 ===
 
=== PAM の手順 ===
   
{{Note|'''自動ログインを使用しない場合に'''キーリングのロックを自動的にアンロックしたい場合、ユーザアカウントのパスワードとデフォルトのキーリングのパスワードを同じにする必要があります。[[#キーリングのパスワードをユーザのパスワードへ自動的に変更する]] を参照してください。}}
+
{{Note|'''自動ログインを使用しない場合に'''キーリングのロックを自動的にアンロックしたい場合、ユーザアカウントのパスワードと ''login'' キーリングのパスワードを同じにする必要があります。[[#キーリングのパスワードをユーザのパスワードへ自動的に変更する]] を参照してください。}}
   
 
{{Tip|
 
{{Tip|
* 自動ログインを使用している場合にキーリングを自動的にアンロックするには、デフォルトのキーリングのパスワードを空白に設定すればよいです。この場合、キーリングの内容は暗号化されずに保存されることに注意してください。
+
* 自動ログインを使用している場合にキーリングを自動的にアンロックするには、''login'' キーリングのパスワードを空白に設定すればよいです。この場合、キーリングの内容は暗号化されずに保存されることに注意してください。
 
* あるいは、GDM と LUKS を使用している場合、キーリングのパスワードが LUKS のパスワードと一致すれば、GDM はキーリングをアンロックすることができます。そうするには、[[mkinitcpio#通常のフック|mkinitcpio.conf で systemd init]] を使用し、かつ[[Dm-crypt/システム設定#systemd-cryptsetup-generator を使う|適切なカーネルパラメータ]]を使用する必要があります。詳細は [https://reddit.com/r/Fedora/comments/jwnqq5/] を参照してください。
 
* あるいは、GDM と LUKS を使用している場合、キーリングのパスワードが LUKS のパスワードと一致すれば、GDM はキーリングをアンロックすることができます。そうするには、[[mkinitcpio#通常のフック|mkinitcpio.conf で systemd init]] を使用し、かつ[[Dm-crypt/システム設定#systemd-cryptsetup-generator を使う|適切なカーネルパラメータ]]を使用する必要があります。詳細は [https://reddit.com/r/Fedora/comments/jwnqq5/] を参照してください。
* 以下の PAM の手順をスキップしたい場合は、デフォルトのキーリングを手動で、あるいは他の方法によってアンロックしなければなりません。[[#デスクトップ環境 (KDE、GNOME、XFCE など) の外で gnome-keyring-daemon を起動する]] と [https://wiki.gnome.org/Projects/GnomeKeyring/RunningDaemon GnomeKeyring wiki] を参照してください。
+
* 以下の PAM の手順をスキップしたい場合は、''login'' キーリングを手動で、あるいは他の方法によってアンロックしなければなりません。[[#デスクトップ環境 (KDE、GNOME、XFCE など) の外で gnome-keyring-daemon を使う]] と [https://wiki.gnome.org/Projects/GnomeKeyring/RunningDaemon GnomeKeyring wiki] を参照してください。
 
}}
 
}}
   
53行目: 75行目:
 
'''session optional pam_gnome_keyring.so auto_start'''
 
'''session optional pam_gnome_keyring.so auto_start'''
 
}}
 
}}
  +
  +
{{Note|[[greetd]] ログインマネージャを使用している場合、変更する必要のあるファイルは {{ic|/etc/pam.d/login}} ではなく {{ic|/etc/pam.d/greetd}} です。}}
   
 
== SSH 鍵 ==
 
== SSH 鍵 ==
58行目: 82行目:
 
GNOME Keyring は、[[SSH 鍵#ssh-agent|ssh-agent]] のラッパとして振る舞うことができます。このモードでは、SSH 鍵をアンロックする必要が生じた度に GUI パスワード入力ダイアログを表示します。このダイアログには、入力したパスワードを記憶するかどうか尋ねるチェックボックスが含まれています。このチェックボックスを選択すると、ログインキーリングがアンロックされている限り、今後そのキーを使用する際にパスワードを入力する必要が無くなります。
 
GNOME Keyring は、[[SSH 鍵#ssh-agent|ssh-agent]] のラッパとして振る舞うことができます。このモードでは、SSH 鍵をアンロックする必要が生じた度に GUI パスワード入力ダイアログを表示します。このダイアログには、入力したパスワードを記憶するかどうか尋ねるチェックボックスが含まれています。このチェックボックスを選択すると、ログインキーリングがアンロックされている限り、今後そのキーを使用する際にパスワードを入力する必要が無くなります。
   
  +
バージョン [https://gitlab.gnome.org/GNOME/gnome-keyring/-/commit/25c5a1982467802fa12c6852b03c57924553ba73 1:46] から、gnome-keyring-daemon ビルドでは SSH の機能がデフォルトで無効化されています。この機能は {{ic|/usr/lib/gcr-ssh-agent}} ({{Pkg|gcr-4}} パッケージに含まれています) へと[https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67 移動されています]。
GNOME 41 (2021年9月リリース) からこの (英語版の) 記事が書かれた時点 (2023年4月) まで、gnome-keyring-daemon の SSH 機能は ({{Pkg|gcr}} の一部である) {{ic|/usr/lib/gcr-ssh-agent}} に[https://gitlab.gnome.org/GNOME/gcr/-/merge_requests/67 複製されています]。最終的には gnome-keyring-daemon からその (SSH の) 実装を削除する [https://fedoraproject.org/wiki/Changes/ModularGnomeKeyring 計画] になっていますが、その動きは失速しています。それが行われるまでは、どの実装を使用しているかに注意をはらうべきです。なぜなら、実装ごとに異なる方法でセットアップされ使用されるからです:
 
   
=== gcr-ssh-agent ===
+
=== gcr をセットアップする ===
   
  +
やるべきことは:
gcr-ssh-agent 実装は、これら2つの実装の中で最もプラグ・アンド・プレイです。また、最終的にはこの実装が唯一の実装になるので、特別な理由がない限りはこれを使用すべきです。
 
   
  +
# {{ic|gcr-ssh-agent.socket}} systemd [[ユーザーユニット]]を[[有効化]]する。
この実装を使用するために必要なことは:
 
# {{ic|gcr-ssh-agent.socket}} systemd ユーザユニットを有効化する。例えば、{{ic|systemctl --user enable gcr-ssh-agent.socket}} を実行する。
+
# {{ic|gcr-ssh-agent.socket}} systemd [[ユーザユニット]]一度[[開始]]する。これによりソケットファイル {{ic|$XDG_RUNTIME_DIR/gcr/ssh}} が作成されま。ファイルが作成されれば、最初のステップでソケットユニットが自動的に開始されようになります
  +
# {{ic|gcr-ssh-agent.socket}} ユニットがアクティブである場合、{{ic|SSH_AUTH_SOCK}} 環境変数を手動で設定する必要はないはずです。一旦ログアウトし、ログインし直せば、{{ic|SSH_AUTH_SOCK}} 環境変数は {{ic|$XDG_RUNTIME_DIR/gcr/ssh}} に設定されているはずです。これは、Gnome の {{ic|Console}} アプリケーションで {{ic|fish}} をデフォルトシェルとして使用した場合に動作することが確認されています。
# {{ic|SSH_AUTH_SOCK}} 環境変数を {{ic|$XDG_RUNTIME_DIR/gcr/ssh}} に設定して SSH コマンドを実行する。環境変数を設定する方法は [[環境変数#変数の定義|たくさんあります]] 使用するべき方法は、あなたのセットアップと好みに依ります。
 
   
  +
環境変数を設定する方法は[[環境変数#変数の定義|たくさんあります]]。使用するべき方法は、あなたのセットアップと好みに依ります。
=== gnome-keyring-daemon "ssh" コンポーネント ===
 
 
古い gnome-keyring-daemon 実装を使うことに決めたならば、{{ic|gnome-keyring-daemon}} が {{ic|--components}} 引数に '''ssh''' を含めて実行されている必要があります。[[XDG Autostart]] を使用するデスクトップ環境の場合、{{ic|/etc/xdg/autostart/gnome-keyring-ssh.desktop}} を介して自動的に実行されます。他のデスクトップ環境の場合、{{ic|gnome-keyring-daemon.service}} ユーザユニットの {{ic|ExecStart}} を編集する必要があります (デフォルトで SSH コンポーネントを起動しないからです)。方法は [[Systemd#ユニットファイルの編集]] を参照してください。
 
 
コンポーネントが実行されることを確認したら、上記の方法と同じように {{ic|SSH_AUTH_SOCK}} 環境変数を {{ic|$XDG_RUNTIME_DIR/keyring/ssh}} に設定してください。注意点として、gcr-ssh-agent と gnome-keyring-daemon は、ほとんど同じ実装を含んでいるにも関わらず、異なるソケットパスをリッスンします。
 
   
 
=== 使用する ===
 
=== 使用する ===
   
あなたが選んだ実装に依らず、以下を実行することで、実行中のエージェントにロードされている SSH 鍵をリストアップできます:
+
以下を実行することで、実行中のエージェントにロードされている SSH 鍵をリストアップできます:
   
 
$ ssh-add -L
 
$ ssh-add -L
84行目: 104行目:
 
パスフレーズをキーリングに永続的に保存するには、{{pkg|seahorse}} パッケージの ssh-askpass を使用してください:
 
パスフレーズをキーリングに永続的に保存するには、{{pkg|seahorse}} パッケージの ssh-askpass を使用してください:
   
$ /usr/lib/seahorse/ssh-askpass my_key
+
$ /usr/lib/seahorse/ssh-askpass ''my_key''
   
 
他のディレクトリから SSH 鍵を手動で追加するには:
 
他のディレクトリから SSH 鍵を手動で追加するには:
99行目: 119行目:
 
=== 無効化する ===
 
=== 無効化する ===
   
別の SSH エージェントを実行したい場合 (例: [[SSH 鍵#ssh-agent|ssh-agent]] や [[gpg-agent]])、GNOME Keyring の ssh-agent ラッパを無効化するのは良い考えです。各エージェントは異なるソケットをリッスンし、{{ic|SSH_AUTH_SOCK}} を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。
+
別の SSH エージェントを実行したい場合 (例: [[SSH 鍵#ssh-agent|ssh-agent]] や [[gpg-agent]])、GNOME Keyring の ssh-agent ラッパを無効化するのは良い考えです。各エージェントは異なるソケットをリッスンし、{{ic|SSH_AUTH_SOCK}} を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。ただし、GNOME の実装は BatchMode を含む多くのスクリプト機能を実装していないことに注意してください[https://gitlab.gnome.org/GNOME/gcr/-/issues/117]
   
gcr-ssh-agent の実装を無効化するには、{{ic|gcr-ssh-agent.socket}} と {{ic|gcr-ssh-agent.service}} を両方とも systemd で無効化・停止してください。
+
gcr-ssh-agent を無効化するには、{{ic|gcr-ssh-agent.socket}} と {{ic|gcr-ssh-agent.service}} を両方とも systemd で無効化・停止してください。
 
アカウントローカルな方法で gnome-keyring-daemon 実装を無効化するには、{{ic|/etc/xdg/autostart/gnome-keyring-ssh.desktop}} を {{ic|~/.config/autostart/}} にコピーし、コピー先のファイルに {{ic|1=Hidden=true}} という行を末尾に追加してください。また、上記の手順で {{ic|gnome-keyring-daemon.service}} に対して行った編集もすべて元に戻してください。
 
   
 
== ヒントとテクニック ==
 
== ヒントとテクニック ==
110行目: 128行目:
   
 
* [[Chromium#特定のパスワードストアを強制する|Chromium]]
 
* [[Chromium#特定のパスワードストアを強制する|Chromium]]
  +
  +
=== キーリングをロックする ===
  +
  +
$ dbus-send --session --dest=org.freedesktop.secrets \
  +
--type=method_call \
  +
/org/freedesktop/secrets \
  +
org.freedesktop.Secret.Service.Lock \
  +
array:objpath:/org/freedesktop/secrets/collection/login
  +
  +
このコマンドは [[D-Bus]] メソッドを呼び出して ''login'' キーリングをロックします。これとは別に GUI を使いたい場合は、Seahorse でキーリングをロックすることもできます。
   
 
=== パスフレーズの消去 ===
 
=== パスフレーズの消去 ===
119行目: 147行目:
 
=== Git 統合 ===
 
=== Git 統合 ===
   
GNOME Keyring は、HTTPS 経由でプッシュするときに [[Git]] と一緒に使うと便利です。この機能を使用するには、{{Pkg|libsecret}} パッケージが [[#インストール|インストールされている必要があります]]
+
GNOME Keyring は、HTTPS 経由でプッシュするときに [[Git]] と一緒に使うと便利です。この機能を使用するには、{{Pkg|libsecret}} パッケージが[[#インストール|インストールされている必要があります]]
   
 
''libsecret'' ヘルパーを使うように Git を設定してください:
 
''libsecret'' ヘルパーを使うように Git を設定してください:
135行目: 163行目:
 
}}
 
}}
   
もう一つのオプションは、[[GnuPG#無人のパスフレーズ|GPG のループバックを強制する]] ことで、アプリケーションでパスフレーズを入力できるようにすることです。
+
もう一つのオプションは、[[GnuPG#無人のパスフレーズ|GPG のループバックを強制する]]ことで、アプリケーションでパスフレーズを入力できるようにすることです。
   
 
=== キーリングの名前変更 ===
 
=== キーリングの名前変更 ===
   
キーリングの表示名 (つまり、Seahorse や {{ic|file}} で表示される名前) は、[https://ttboj.wordpress.com/2013/01/27/renaming-a-gnome-keyring-for-seahorse-the-passwords-and-keyrings-application/ 暗号化されていないキーリングファイル内で display-name の値を変更する] ことで、変更することができます。キーリングは通常、{{ic|~/.local/share/keyrings/}} 内に ''.keyring'' という拡張子が付けられて保存されています。
+
キーリングの表示名 (つまり、Seahorse や {{ic|file}} で表示される名前) は、[https://ttboj.wordpress.com/2013/01/27/renaming-a-gnome-keyring-for-seahorse-the-passwords-and-keyrings-application/ 暗号化されていないキーリングファイル内で display-name の値を変更する]ことで、変更することができます。キーリングは通常、{{ic|~/.local/share/keyrings/}} 内に ''.keyring'' という拡張子が付けられて保存されています。
   
 
=== キーリングのパスワードをユーザのパスワードへ自動的に変更する ===
 
=== キーリングのパスワードをユーザのパスワードへ自動的に変更する ===
   
{{Note|これは、デフォルトのキーリングにしか影響しません。}}
+
{{Note|これは、''login'' キーリングにしか影響しません。}}
   
{{ic|/etc/pam.d/passwd}} の末尾に {{ic|password optional pam_gnome_keyring.so}} を追加してください:
+
{{ic|/etc/pam.d/passwd}} の末尾に {{ic|password optional pam_gnome_keyring.so}} を[[追加]]してください:
   
 
{{hc|/etc/pam.d/passwd|2=
 
{{hc|/etc/pam.d/passwd|2=
  +
...
#%PAM-1.0
 
  +
password optional pam_gnome_keyring.so
 
#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 を起動する ===
+
=== デスクトップ環境 (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,_...)}}
+
{{Accuracy|少なくとも [[xinit]] [[SDDM]] {{ic|/etc/X11/xinit/xinitrc.d/}} 内のスクリプトを全て実行するし、[[sway]] {{ic|/etc/sway/config.d/50-systemd-user.conf}} を提供しているので、問題は "デスクトップ環境の外" ではありません。gnome-keyring [[XDG Autostart]] を必要とするならば、インストール/設定のセクションでもそう書かれてあるべきです。英語版の議論ページ: [[:en:Talk:GNOME/Keyring#Launching_gnome-keyring-daemon_outside_desktop_environments_(KDE,_GNOME,_XFCE,_...)]]。}}
   
 
sway や i3、または以下のファイルを実行しないウィンドウマネージャを使用している場合:
 
sway や i3、または以下のファイルを実行しないウィンドウマネージャを使用している場合:
183行目: 207行目:
 
ログイン時に PAM は {{ic|gnome-keyring-daemon --login}} を実行します。これにより、gnome-keyring がログインパスワードによってアンロックされた状態になります。もし {{ic|gnome-keyring-daemon --login}} が数分以内に dbus セッションに接続されなければ、{{ic|gnome-keyring-daemon --login}} は終了します。{{ic|gnome-keyring-daemon --start ...}} がウィンドウ・マネージャ内で dbus セッションに対して起動されると、{{ic|gnome-keyring-daemon --login}} は dbus セッションに接続されます。ログインセッションが {{ic|gnome-keyring-daemon --start ...}} を開始する前に {{ic|gnome-keyring-daemon --login}} が終了すると、gnome-keyring や secret service API を使用するプログラムも使えなくなってしまいます。
 
ログイン時に PAM は {{ic|gnome-keyring-daemon --login}} を実行します。これにより、gnome-keyring がログインパスワードによってアンロックされた状態になります。もし {{ic|gnome-keyring-daemon --login}} が数分以内に dbus セッションに接続されなければ、{{ic|gnome-keyring-daemon --login}} は終了します。{{ic|gnome-keyring-daemon --start ...}} がウィンドウ・マネージャ内で dbus セッションに対して起動されると、{{ic|gnome-keyring-daemon --login}} は dbus セッションに接続されます。ログインセッションが {{ic|gnome-keyring-daemon --start ...}} を開始する前に {{ic|gnome-keyring-daemon --login}} が終了すると、gnome-keyring や secret service API を使用するプログラムも使えなくなってしまいます。
   
==== GNOME キーリング XDG ポータル ====
+
==== GNOME Keyring XDG Portal ====
   
  +
{{Accuracy|{{ic|/usr/share}} に存在するファイルを変更しても、パッケージのアップグレード時に元に戻ってしまいます。}}
{{Accuracy|Modifies package files in {{ic|/usr/share}}, will be undone on pacman upgrades}}
 
GNOME Keyring は XDG Portal バックエンドを公開します (例えば、[[flatpak]] を通してサンドボックス化されたアプリケーションで使用するため)。GNOME の外部で動作させるには、{{ic|/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal}} 設定ファイルの {{ic|UseIn}} キーを変更してデスクトップ環境を追加する必要があります。例えば、[[sway]] に追加する場合など:
 
   
  +
GNOME Keyring は、[[flatpak]] などによってサンドボックス化されたアプリケーションのために XDG Portal のバックエンドを公開しています。GNOME の外でこれを機能させるには、設定ファイル {{ic|/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal}} の {{ic|UseIn}} キーにデスクトップ環境の名前を追加する必要があります。例えば、[[sway]] を追加するには:
{{hc|1=/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal|2=
 
  +
  +
{{hc|/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal|2=
 
[portal]
 
[portal]
 
DBusName=org.freedesktop.secrets
 
DBusName=org.freedesktop.secrets
195行目: 220行目:
 
}}
 
}}
   
XDG デスクトップポータルバックエンド詳細について[[XDG デスクトップ ポータル#バックエンド]] を参照してください。
+
XDG Desktop Portal のバックエンドに関する詳細は [[XDG デスクトップ ポータル#バックエンド]] を参照してください。
   
 
== トラブルシューティング ==
 
== トラブルシューティング ==
205行目: 230行目:
 
=== キーリングのリセット ===
 
=== キーリングのリセット ===
   
"The password you use to login to your computer no longer matches that of your login keyring" といったエラーメッセージが表示される場合は、[[#GUI で管理する|ログインキーリングのパスワードを変更する]] 必要があります。
+
"The password you use to login to your computer no longer matches that of your login keyring" といったエラーメッセージが表示される場合は、[[#GUI で管理する|ログインキーリングのパスワードを変更する]]必要があります。
   
 
または、{{ic|~/.local/share/keyrings/}} から {{ic|login.keyring}} ファイルと {{ic|user.keystore}} ファイルを削除することもできます。これらのファイルを削除すると、保存されている全鍵が永久に削除されるので注意してください。これらの削除したら、一旦ログアウトし、ログインし直してください。
 
または、{{ic|~/.local/share/keyrings/}} から {{ic|login.keyring}} ファイルと {{ic|user.keystore}} ファイルを削除することもできます。これらのファイルを削除すると、保存されている全鍵が永久に削除されるので注意してください。これらの削除したら、一旦ログアウトし、ログインし直してください。
215行目: 240行目:
 
gkr-pam: unable to locate daemon control file
 
gkr-pam: unable to locate daemon control file
   
関連する他の問題が発生していないのであれば、このメッセージは ''安全に無視することができます'' [https://bbs.archlinux.org/viewtopic.php?pid=1940190#p1940190]
+
関連する他の問題が発生していないのであれば、このメッセージは安全に無視することができます[https://bbs.archlinux.org/viewtopic.php?pid=1940190#p1940190]
   
 
=== No such secret collection at path: / ===
 
=== No such secret collection at path: / ===
   
カスタムの {{ic|~/.xinitrc}} を使用していて、Seahorse で新しいキーリングを作成使用にこのエラーが発生する場合は、以下の行を追加することで解決できる可能性があります [https://bbs.archlinux.org/viewtopic.php?pid=1640822#p1640822]:
+
Seahorse で新しいキーリングを追加ようすると、以下の理由よりこのエラーが発生することがあります:
  +
  +
* {{ic|~/.local/share/keyrings/}} ディレクトリが存在しない。この場合、このディレクトリを作成してください。
  +
* カスタムの {{ic|~/.xinitrc}} が使用されている。これは以下の行を追加することで解決します[https://bbs.archlinux.org/viewtopic.php?pid=1640822#p1640822]:
   
 
{{hc|~/.xinitrc|
 
{{hc|~/.xinitrc|
227行目: 255行目:
 
=== ターミナルに "discover_other_daemon: 1" というメッセージが表示される ===
 
=== ターミナルに "discover_other_daemon: 1" というメッセージが表示される ===
   
これは ''gnome-keyring-daemon'' が複数回起動されたことが原因です。Systemd サービスが gnome keyring のデーモンと一緒に提供されるため、別の方法で起動する必要はありません。そのため、{{ic|.zshenv}}、{{ic|.bash_profile}}、{{ic|.xinitrc}}、{{ic|config.fish}}、その他の似たような場所から ''gnome-keyring-daemon'' を起動するコマンドを削除してください。あるいは、{{ic|gnome-keyring-daemon.service}} と {{ic|gnome-keyring-daemon.socket}} [[ユーザーユニット]] [[無効化]] することもできます。
+
これは ''gnome-keyring-daemon'' が複数回起動されたことが原因です。Systemd サービスが gnome keyring のデーモンと一緒に提供されるため、別の方法で起動する必要はありません。そのため、{{ic|.zshenv}}、{{ic|.bash_profile}}、{{ic|.xinitrc}}、{{ic|config.fish}}、その他の似たような場所から ''gnome-keyring-daemon'' を起動するコマンドを削除してください。あるいは、{{ic|gnome-keyring-daemon.service}} と {{ic|gnome-keyring-daemon.socket}} [[ユーザーユニット]]を[[無効化]]することもできます。
  +
  +
=== キーリングの不適切な初期化 ===
  +
  +
これによる症状としては:
  +
  +
* SSH や Git といったプログラムが、キーリングからパスワードが提供されるのを待機する間、ハングアップする。最終的には "agent refused operation" といったエラーでタイムアウトします。
  +
* Seahorse でキーリングが何も表示されない。"login" という名前のキーリングを手動で作成しても何も起こらないに見える。
  +
* 次のようなエラーメッセージが Seahorse の出力に現れる: {{bc|couldn't load all secret collections: No such secret collection at path: /org/freedesktop/secrets/collection/login}}
  +
  +
これを解決するには、以下を行ってください:
  +
  +
* {{ic|gnome-keyring-daemon.service}} systemd [[ユーザーユニット]]を[[再起動]]する。これにより、''login'' キーリングが適切に初期化されるはずです。
  +
* {{ic|gcr-ssh-agent.service}} systemd [[ユーザーユニット]]を、使用しているのであれば、[[再起動]]する。他のエージェントも再起動する必要があるかもしれません。
  +
  +
これで治らない場合は、[[#トラブルシューティング|キーリングを再設定する]]ことを検討してください。
   
 
== 参照 ==
 
== 参照 ==
   
 
* https://help.gnome.org/users/seahorse/stable/
 
* https://help.gnome.org/users/seahorse/stable/
* [https://wiki.gnome.org/action/show/Projects/GnomeKeyring GNOME Wiki ページ]
+
* [https://wiki.gnome.org/action/show/Projects/GnomeKeyring GNOME Wiki ページ]{{Dead link|2024|11|05|status=403}}
  +
* [https://archlinux.org/packages/?q=org.freedesktop.secrets org.freedesktop.secrets を提供しているパッケージ]
   
{{TranslationStatus|GNOME/Keyring|2023-10-25|786683}}
+
{{TranslationStatus|GNOME/Keyring|2024-11-30|821751}}

2024年11月30日 (土) 08:56時点における最新版

関連記事

GNOME Keyring は「シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション」です。

GNOME Keyring は org.freedesktop.secrets API を提供しています。これは、クライアントアプリケーションがユーザーのログインセッション内で実行中のサービスを利用してシークレットをセキュアに保管できるようにする API です。

セキュリティ

悪意のあるアプリケーションからの保護

GNOME/Keyring API の動作に関連するセキュリティの問題 (CVE-2018-19358) が過去に報告されています。いかなるアプリケーションも、キーリングのロックが解除されていれば、任意のシークレットを簡単に読むことができてしまいます。さらに、ユーザーがログインしていれば、ログイン/デフォルトのコレクションのロックは解除されています。D-Bus の保護機構 (busconfig とポリシー XML エレメントを含む) はデフォルトで使用されておらず、いずれにせよ、これも簡単にバイパスできてしまいます。

GNOME/Keyring のセキュリティモデルによれば、信頼されないアプリケーションはユーザーのセッションバスソケットへのアクセスを許可されないであろうことから、GNOME プロジェクトはこの脆弱性レポートに同意していません

Flatpak によってサンドボックス化されているアプリケーションは、セッションバスへのアクセスがフィルタリングされています。

セッションがロックされてもキーリングはロックされません

セッションがロックされても、キーリングは自動的にロックされません。[1] これはつまり、パスワードがメモリ内に残り続け、DMA 攻撃に対して脆弱になることを意味します。

インストール

gnome-keyringgnome グループの一部なので、GNOME を使用しているのであればすでにインストールされています。また、このパッケージは単独でインストールすることもできます。他のアプリケーションにキーリングへのアクセス権を与えるために libsecret もインストールする必要があります。libgnome-keyring は非推奨になりました (後継は libsecret です) が、それでも特定のアプリケーションで必要になる場合があります。

gnome-keyring-daemon は、ログイン時に systemd ユーザーサービスを介して自動的に開始されます。また、ソケットを介して要求に応じて開始させることもできます。

GNOME Keyring に関する追加のユーティリティは次の通りです:

  • secret-tool — コマンドラインから GNOME Keyring (や DBus Secret Service API を実装する他のサービス) にアクセスします。
https://wiki.gnome.org/Projects/Libsecret || libsecret
  • lssecretlibsecret を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。
https://gitlab.com/GrantMoyer/lssecret || lssecret-gitAUR

GUI で管理する

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

キーリング (例えば、デフォルトキーリングである "Login") のパスワードは変更することが可能であり、さらには削除することも可能です。詳細は GNOME Help の Create a new keyringUpdate the keyring password を参照してください。

キーリングを使用する

PAM モジュール pam_gnome_keyring.so は、GNOME キーリングを部分的に初期化し、その過程で login キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。

PAM の手順

ノート: 自動ログインを使用しない場合にキーリングのロックを自動的にアンロックしたい場合、ユーザアカウントのパスワードと login キーリングのパスワードを同じにする必要があります。#キーリングのパスワードをユーザのパスワードへ自動的に変更する を参照してください。
ヒント:
  • 自動ログインを使用している場合にキーリングを自動的にアンロックするには、login キーリングのパスワードを空白に設定すればよいです。この場合、キーリングの内容は暗号化されずに保存されることに注意してください。
  • あるいは、GDM と LUKS を使用している場合、キーリングのパスワードが LUKS のパスワードと一致すれば、GDM はキーリングをアンロックすることができます。そうするには、mkinitcpio.conf で systemd init を使用し、かつ適切なカーネルパラメータを使用する必要があります。詳細は [2] を参照してください。
  • 以下の PAM の手順をスキップしたい場合は、login キーリングを手動で、あるいは他の方法によってアンロックしなければなりません。#デスクトップ環境 (KDE、GNOME、XFCE など) の外で gnome-keyring-daemon を使うGnomeKeyring wiki を参照してください。

ディスプレイマネージャを使用している場合、ほとんどのケースで特に設定せずともキーリングは機能します。GDMLightDMLXDM、そして SDDM にはすでに必須の PAM 設定が含まれています。キーリングのロックを自動的に解除しないディスプレイマネージャの場合は、以下で言及している /etc/pam.d/login 以外の適切なファイルを適切に編集してください。

コンソールベースのログインを行う場合は、/etc/pam.d/login を編集してください:

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
ノート: greetd ログインマネージャを使用している場合、変更する必要のあるファイルは /etc/pam.d/login ではなく /etc/pam.d/greetd です。

SSH 鍵

GNOME Keyring は、ssh-agent のラッパとして振る舞うことができます。このモードでは、SSH 鍵をアンロックする必要が生じた度に GUI パスワード入力ダイアログを表示します。このダイアログには、入力したパスワードを記憶するかどうか尋ねるチェックボックスが含まれています。このチェックボックスを選択すると、ログインキーリングがアンロックされている限り、今後そのキーを使用する際にパスワードを入力する必要が無くなります。

バージョン 1:46 から、gnome-keyring-daemon ビルドでは SSH の機能がデフォルトで無効化されています。この機能は /usr/lib/gcr-ssh-agent (gcr-4 パッケージに含まれています) へと移動されています

gcr をセットアップする

やるべきことは:

  1. gcr-ssh-agent.socket systemd ユーザーユニット有効化する。
  2. gcr-ssh-agent.socket systemd ユーザーユニットを一度開始する。これにより、ソケットファイル $XDG_RUNTIME_DIR/gcr/ssh が作成されます。ファイルが作成されれば、最初のステップでソケットユニットが自動的に開始されるようになります。
  3. gcr-ssh-agent.socket ユニットがアクティブである場合、SSH_AUTH_SOCK 環境変数を手動で設定する必要はないはずです。一旦ログアウトし、ログインし直せば、SSH_AUTH_SOCK 環境変数は $XDG_RUNTIME_DIR/gcr/ssh に設定されているはずです。これは、Gnome の Console アプリケーションで fish をデフォルトシェルとして使用した場合に動作することが確認されています。

環境変数を設定する方法はたくさんあります。使用するべき方法は、あなたのセットアップと好みに依ります。

使用する

以下を実行することで、実行中のエージェントにロードされている SSH 鍵をリストアップできます:

$ ssh-add -L

これにより、適切なサービスが起動されていて、SSH_AUTH_SOCK が適切に設定されていることを確認することができます。

パスフレーズをキーリングに永続的に保存するには、seahorse パッケージの ssh-askpass を使用してください:

$ /usr/lib/seahorse/ssh-askpass my_key

他のディレクトリから SSH 鍵を手動で追加するには:

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

手動で追加した鍵をすべて無効化するには:

$ ssh-add -D

無効化する

別の SSH エージェントを実行したい場合 (例: ssh-agentgpg-agent)、GNOME Keyring の ssh-agent ラッパを無効化するのは良い考えです。各エージェントは異なるソケットをリッスンし、SSH_AUTH_SOCK を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。ただし、GNOME の実装は BatchMode を含む多くのスクリプト機能を実装していないことに注意してください[3]

gcr-ssh-agent を無効化するには、gcr-ssh-agent.socketgcr-ssh-agent.service を両方とも systemd で無効化・停止してください。

ヒントとテクニック

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

キーリングをロックする

$ dbus-send --session --dest=org.freedesktop.secrets \
   --type=method_call  \
   /org/freedesktop/secrets \
   org.freedesktop.Secret.Service.Lock \
   array:objpath:/org/freedesktop/secrets/collection/login

このコマンドは D-Bus メソッドを呼び出して login キーリングをロックします。これとは別に GUI を使いたい場合は、Seahorse でキーリングをロックすることもできます。

パスフレーズの消去

$ gnome-keyring-daemon -r -d

このコマンドは、gnome-keyring-daemon を開始し、以前の実行中のインスタンスを終了します。

Git 統合

GNOME Keyring は、HTTPS 経由でプッシュするときに Git と一緒に使うと便利です。この機能を使用するには、libsecret パッケージがインストールされている必要があります

libsecret ヘルパーを使うように Git を設定してください:

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

これで、次回 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 で表示される名前) は、暗号化されていないキーリングファイル内で display-name の値を変更することで、変更することができます。キーリングは通常、~/.local/share/keyrings/ 内に .keyring という拡張子が付けられて保存されています。

キーリングのパスワードをユーザのパスワードへ自動的に変更する

ノート: これは、login キーリングにしか影響しません。

/etc/pam.d/passwd の末尾に password optional pam_gnome_keyring.so追加してください:

/etc/pam.d/passwd
...
password	optional	pam_gnome_keyring.so

デスクトップ環境 (KDE、GNOME、XFCE など) の外で gnome-keyring-daemon を使う

起動する

この記事またはセクションの正確性には問題があります。
理由: 少なくとも xinitSDDM/etc/X11/xinit/xinitrc.d/ 内のスクリプトを全て実行するし、sway/etc/sway/config.d/50-systemd-user.conf を提供しているので、問題は "デスクトップ環境の外" ではありません。gnome-keyring が XDG Autostart を必要とするならば、インストール/設定のセクションでもそう書かれてあるべきです。英語版の議論ページ: en:Talk:GNOME/Keyring#Launching_gnome-keyring-daemon_outside_desktop_environments_(KDE,_GNOME,_XFCE,_...)。 (議論: トーク:GNOME/Keyring#)

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

ログイン時に PAM は 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 XDG Portal

この記事またはセクションの正確性には問題があります。
理由: /usr/share に存在するファイルを変更しても、パッケージのアップグレード時に元に戻ってしまいます。 (議論: トーク:GNOME/Keyring#)

GNOME Keyring は、flatpak などによってサンドボックス化されたアプリケーションのために XDG Portal のバックエンドを公開しています。GNOME の外でこれを機能させるには、設定ファイル /usr/share/xdg-desktop-portal/portals/gnome-keyring.portalUseIn キーにデスクトップ環境の名前を追加する必要があります。例えば、sway を追加するには:

/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal
[portal]
DBusName=org.freedesktop.secrets
Interfaces=org.freedesktop.impl.portal.Secret
UseIn=gnome;sway

XDG Desktop Portal のバックエンドに関する詳細は XDG デスクトップ ポータル#バックエンド を参照してください。

トラブルシューティング

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

ログインするたびにパスワードプロンプトが表示され、パスワードが保存されない場合は、デフォルトのキーリングを作成/設定する必要がある場合があります。Seahorse (別名、パスワードと鍵) を使ってこれを行う方法については、GNOME Help の Create a new keyringChange 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 ファイルを削除することもできます。これらのファイルを削除すると、保存されている全鍵が永久に削除されるので注意してください。これらの削除したら、一旦ログアウトし、ログインし直してください。

Unable to locate daemon control file

ログイン後に以下のエラーが journal に表示される場合:

gkr-pam: unable to locate daemon control file

関連する他の問題が発生していないのであれば、このメッセージは「安全に無視することができます」[4]

No such secret collection at path: /

Seahorse で新しいキーリングを追加しようとすると、以下の理由によりこのエラーが発生することがあります:

  • ~/.local/share/keyrings/ ディレクトリが存在しない。この場合、このディレクトリを作成してください。
  • カスタムの ~/.xinitrc が使用されている。これは以下の行を追加することで解決します[5]:
~/.xinitrc
source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh

ターミナルに "discover_other_daemon: 1" というメッセージが表示される

これは gnome-keyring-daemon が複数回起動されたことが原因です。Systemd サービスが gnome keyring のデーモンと一緒に提供されるため、別の方法で起動する必要はありません。そのため、.zshenv.bash_profile.xinitrcconfig.fish、その他の似たような場所から gnome-keyring-daemon を起動するコマンドを削除してください。あるいは、gnome-keyring-daemon.servicegnome-keyring-daemon.socket ユーザーユニット無効化することもできます。

キーリングの不適切な初期化

これによる症状としては:

  • SSH や Git といったプログラムが、キーリングからパスワードが提供されるのを待機する間、ハングアップする。最終的には "agent refused operation" といったエラーでタイムアウトします。
  • Seahorse でキーリングが何も表示されない。"login" という名前のキーリングを手動で作成しても何も起こらないに見える。
  • 次のようなエラーメッセージが Seahorse の出力に現れる:
    couldn't load all secret collections: No such secret collection at path: /org/freedesktop/secrets/collection/login

これを解決するには、以下を行ってください:

  • gnome-keyring-daemon.service systemd ユーザーユニット再起動する。これにより、login キーリングが適切に初期化されるはずです。
  • gcr-ssh-agent.service systemd ユーザーユニットを、使用しているのであれば、再起動する。他のエージェントも再起動する必要があるかもしれません。

これで治らない場合は、キーリングを再設定することを検討してください。

参照

翻訳ステータス: このページは en:GNOME/Keyring の翻訳バージョンです。最後の翻訳日は 2024-11-30 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。