「GNOME/Keyring」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (add TranslationStatus.) |
細 (→gcr をセットアップする: 修正) |
||
(3人の利用者による、間の35版が非表示) | |||
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 |
+ | [[zh-hans:GNOME/Keyring]] |
+ | {{Related articles start}} |
||
+ | {{Related|GnuPG}} |
||
+ | {{Related|OpenPGP}} |
||
+ | {{Related articles end}} |
||
+ | |||
[https://wiki.gnome.org/Projects/GnomeKeyring GNOME Keyring] は「シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション」です。 |
[https://wiki.gnome.org/Projects/GnomeKeyring GNOME Keyring] は「シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション」です。 |
||
+ | |||
+ | == セキュリティモデル == |
||
+ | |||
+ | GNOME/Keyring API の動作に関連するセキュリティの問題 ([https://nvd.nist.gov/vuln/detail/CVE-2018-19358 CVE-2018-19358]) が過去に報告されています。いかなるアプリケーションも、キーリングのロックが解除されていれば、[https://github.com/sungjungk/keyring%20crack 任意のシークレットを簡単に読むことができてしまいます]。さらに、ユーザーがログインしていれば、ログイン/デフォルトのコレクションのロックは解除されています。D-Bus の保護機構 (busconfig とポリシー XML エレメントを含む) はデフォルトで使用されておらず、いずれにせよ、これも簡単にバイパスできてしまいます。 |
||
+ | |||
+ | GNOME/Keyring のセキュリティモデルによれば、信頼されないアプリケーションはユーザーのセッションバスソケットへのアクセスを許可されないであろうことから、GNOME プロジェクトはこの脆弱性レポートに[https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/5#note_1876550 同意していません]。 |
||
+ | |||
+ | Flatpak によってサンドボックス化されているアプリケーションは、この影響を受けません。 |
||
== インストール == |
== インストール == |
||
− | GNOME を使用している場合、{{Pkg|gnome-keyring}} は {{grp|gnome}} グループの一つとして自動的にインストールされます。GNOME を使っていない場合は、[[公式リポジトリ]]から {{Pkg|gnome-keyring}} をインストールしてください。{{Pkg|libsecret}} もインストールして、他のアプリケーションにキーリングへのアクセスを許可する必要があります。{{Pkg|libgnome-keyring}} は非推奨になりました(そして、libsecret にとって代わられました)が、それでも特定のアプリケーションで必要になる場合があります。 |
||
+ | {{Pkg|gnome-keyring}} は {{Grp|gnome}} グループの一部なので、GNOME を使用しているのであればすでにインストールされています。また、このパッケージは単独でインストールすることもできます。他のアプリケーションにキーリングへのアクセス権を与えるために {{Pkg|libsecret}} もインストールする必要があります。{{Pkg|libgnome-keyring}} は非推奨になりました (後継は ''libsecret'' です) が、それでも特定のアプリケーションで必要になる場合があります。 |
||
− | GNOME キーリングに関連する追加のユーティリティは次の通りです: |
||
+ | gnome-keyring-daemon は、ログイン時に systemd ユーザーサービスを介して自動的に開始されます。また、ソケットを介して要求に応じて開始させることもできます。 |
||
− | * {{App|secret-tool|コマンドラインから GNOME Keyring (や [https://standards.freedesktop.org/secret-service/ DBus Secret Service API] が実装された他のサービス) にアクセス。|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}} |
||
− | * {{App|lssecret|List all secret items using ''libsecret'' (e.g. GNOME Keyring).|https://gitlab.com/GrantMoyer/lssecret|{{AUR|lssecret-git}}}} |
||
− | * {{App|gnome-keyring-query|GNOME Keyring に保存したパスワードを確認するためのシンプルなコマンドラインツール。||{{AUR|gnome-keyring-query}}}} |
||
+ | GNOME Keyring に関する追加のユーティリティは次の通りです: |
||
− | == GUI で管理 == |
||
− | GNOME Keyring は Seahorse を使って管理することができます。公式リポジトリから {{Pkg|seahorse}} パッケージをインストールしてください。 |
||
+ | * {{App|secret-tool|コマンドラインから GNOME Keyring (や [https://specifications.freedesktop.org/secret-service/ DBus Secret Service API] を実装する他のサービス) にアクセスします。|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}} |
||
− | GNOME Keyring のパスワードを空にしたり変更することが可能です。Seahorse を開いて、ドロップダウンメニューの "View" から "By Keyring" を選択してください。Passwords タブを開いて、"Passwords: login" を右クリックして "Change password" を選択してください。旧パスワードを入力してから新しいパスワードを入力します。暗号化されていないストレージを使用しているという警告が表示されるので "Use Unsafe Storage" を押して下さい。 |
||
+ | * {{App|lssecret|''libsecret'' を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。|https://gitlab.com/GrantMoyer/lssecret|{{AUR|lssecret-git}}}} |
||
+ | |||
+ | == GUI で管理する == |
||
+ | |||
+ | GNOME Keyring は Seahorse を使って管理することができます。{{Pkg|seahorse}} パッケージを[[インストール]]してください。 |
||
+ | |||
+ | キーリング (例えば、デフォルトキーリングである "Login") のパスワードは変更することが可能であり、さらには削除することも可能です。詳細は GNOME Help の [https://help.gnome.org/users/seahorse/stable/keyring-create.html Create a new keyring] と [https://help.gnome.org/users/seahorse/stable/keyring-update-password.html Update the keyring password] を参照してください。 |
||
== キーリングを使用する == |
== キーリングを使用する == |
||
− | [[PAM]] モジュール ''pam_gnome_keyring.so'' は、GNOME キーリングを部分的に初期化し、その |
+ | [[PAM]] モジュール ''pam_gnome_keyring.so'' は、GNOME キーリングを部分的に初期化し、その過程でデフォルトの ''login'' キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。 |
+ | |||
+ | === PAM の手順 === |
||
+ | {{Note|'''自動ログインを使用しない場合に'''キーリングのロックを自動的にアンロックしたい場合、ユーザアカウントのパスワードとデフォルトのキーリングのパスワードを同じにする必要があります。[[#キーリングのパスワードをユーザのパスワードへ自動的に変更する]] を参照してください。}} |
||
− | === PAM ステップ === |
||
− | {{Note|自動ログインせずに、自動でロックを解除したい場合、ユーザーアカウントとキーリングに同一のパスワードを設定する必要があります。[[#Automatically change keyring password with user password]] を参照してください。}} |
||
{{Tip| |
{{Tip| |
||
− | * 自動ログイン |
+ | * 自動ログインを使用している場合にキーリングを自動的にアンロックするには、デフォルトのキーリングのパスワードを空白に設定すればよいです。この場合、キーリングの内容は暗号化されずに保存されることに注意してください。 |
− | * あるいは、GDM と LUKS を使 |
+ | * あるいは、GDM と LUKS を使用している場合、キーリングのパスワードが LUKS のパスワードと一致すれば、GDM はキーリングをアンロックすることができます。そうするには、[[mkinitcpio#通常のフック|mkinitcpio.conf で systemd init]] を使用し、かつ[[Dm-crypt/システム設定#systemd-cryptsetup-generator を使う|適切なカーネルパラメータ]]を使用する必要があります。詳細は [https://reddit.com/r/Fedora/comments/jwnqq5/] を参照してください。 |
− | * PAM |
+ | * 以下の PAM の手順をスキップしたい場合は、デフォルトのキーリングを手動で、あるいは他の方法によってアンロックしなければなりません。[[#デスクトップ環境 (KDE、GNOME、XFCE など) の外で gnome-keyring-daemon を使う]] と [https://wiki.gnome.org/Projects/GnomeKeyring/RunningDaemon GnomeKeyring wiki] を参照してください。 |
}} |
}} |
||
− | ディスプレイマネージャを使用 |
+ | ディスプレイマネージャを使用している場合、ほとんどのケースで特に設定せずともキーリングは機能します。[[GDM]]、[[LightDM]]、[[LXDM]]、そして [[SDDM]] にはすでに必須の PAM 設定が含まれています。キーリングのロックを自動的に解除しないディスプレイマネージャの場合は、以下で言及している {{ic|/etc/pam.d/login}} 以外の適切なファイルを適切に編集してください。 |
+ | コンソールベースのログインを行う場合は、{{ic|/etc/pam.d/login}} を編集してください: |
||
− | {{ic|/etc/pam.d/login}} から gnome-keyring-daemon を起動: |
||
− | {{ic|auth}} セクションの最後に {{ic|auth optional pam_gnome_keyring.so}} を追加し |
+ | {{ic|auth}} セクションの最後に {{ic|auth optional pam_gnome_keyring.so}} を追加し、{{ic|session}} セクションの最後に {{ic|session optional pam_gnome_keyring.so auto_start}} を追加してください。 |
{{hc|/etc/pam.d/login| |
{{hc|/etc/pam.d/login| |
||
47行目: | 65行目: | ||
account include system-local-login |
account include system-local-login |
||
session include system-local-login |
session include system-local-login |
||
− | '''session optional pam_gnome_keyring.so |
+ | '''session optional pam_gnome_keyring.so auto_start''' |
− | |||
− | GNOME、Unity、Cinnamon、MATE を使用している場合は、これで完了です。初期化が完了し、環境変数が自動的に設定されます。 |
||
− | |||
− | === --start ステップ === |
||
− | |||
− | デスクトップ環境として GNOME、Unity、Mate、Cinnamon を使用していない場合、初期化は自動的に完了しません。これは、さまざまな方法を使用して修正できます。 |
||
− | |||
− | ==== シェル ==== |
||
− | |||
− | {{ic|~/.bash_profile}}、{{ic|~/.zshenv}} などに以下を追加します。 |
||
− | |||
− | {{hc|~/.bash_profile|2= |
||
− | if [ -n "$DESKTOP_SESSION" ];then |
||
− | eval $(gnome-keyring-daemon --start) |
||
− | export SSH_AUTH_SOCK |
||
− | fi |
||
}} |
}} |
||
+ | {{Note|[[greetd]] ログインマネージャを使用している場合、変更する必要のあるファイルは {{ic|/etc/pam.d/login}} ではなく {{ic|/etc/pam.d/greetd}} です。}} |
||
− | {{hc|~/.config/fish/config.fish|2= |
||
− | if test -n "$DESKTOP_SESSION" |
||
− | set -x (gnome-keyring-daemon --start {{!}} string split "=") |
||
− | end |
||
− | }} |
||
− | + | == SSH 鍵 == |
|
+ | GNOME Keyring は、[[SSH 鍵#ssh-agent|ssh-agent]] のラッパとして振る舞うことができます。このモードでは、SSH 鍵をアンロックする必要が生じた度に GUI パスワード入力ダイアログを表示します。このダイアログには、入力したパスワードを記憶するかどうか尋ねるチェックボックスが含まれています。このチェックボックスを選択すると、ログインキーリングがアンロックされている限り、今後そのキーを使用する際にパスワードを入力する必要が無くなります。 |
||
− | [[xinitrc]] から gnome-keyring-daemon を起動: |
||
+ | バージョン [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-keyring-daemon の SSH 実装は完全に削除されることが[https://fedoraproject.org/wiki/Changes/ModularGnomeKeyring 計画されています]。 |
||
− | {{hc|~/.xinitrc|<nowiki> |
||
− | eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) |
||
− | export SSH_AUTH_SOCK |
||
− | </nowiki>}} |
||
− | + | === gcr をセットアップする === |
|
+ | やるべきことは: |
||
− | Xfce の場合は、[[Xfce#SSH エージェント]] を確認。 |
||
+ | # {{ic|gcr-ssh-agent.socket}} systemd [[ユーザーユニット]]を[[有効化]]する。 |
||
+ | # SSH コマンドを実行する際に {{ic|SSH_AUTH_SOCK}} 環境変数を {{ic|$XDG_RUNTIME_DIR/gcr/ssh}} に設定しておく。環境変数を設定する方法は[[環境変数#変数の定義|たくさんあります]]。使用するべき方法は、あなたのセットアップと好みに依ります。 |
||
− | + | === 使用する === |
|
+ | 以下を実行することで、実行中のエージェントにロードされている SSH 鍵をリストアップできます: |
||
− | {{ic|/etc/xdg/autostart/}} から {{ic|gnome-keyring-ssh.desktop}}、{{ic|gnome-keyring-pkcs11.desktop}}、{{ic|gnome-keyring-secrets.desktop}} を {{ic|~/.config/autostart/}} にコピーし、各ファイルから {{ic|1=OnlyShowIn=GNOME;Unity;MATE;Cinnamon;}} 行を削除してください。ただし、この方法では環境変数 {{ic|SSH_AUTH_SOCK}} (および PAM のステップをスキップした場合のその他の変数) は設定され'''ない'''ことに注意してください。 |
||
+ | $ ssh-add -L |
||
− | == SSH 鍵 == |
||
+ | これにより、適切なサービスが起動されていて、{{ic|SSH_AUTH_SOCK}} が適切に設定されていることを確認することができます。 |
||
− | '''ssh''' コンポーネントを含む '''gnome-keyring-daemon''' は、SSH エージェントを起動し、{{ic|~/.ssh/}} にある対応する ''.pub'' ファイルを持つすべての鍵を自動的にロードします。これらの鍵をエージェントから削除する方法はありません。 |
||
+ | パスフレーズをキーリングに永続的に保存するには、{{pkg|seahorse}} パッケージの ssh-askpass を使用してください: |
||
− | すべてのロードされている鍵を確認するには: |
||
+ | $ /usr/lib/seahorse/ssh-askpass ''my_key'' |
||
− | $ ssh-add -L |
||
+ | 他のディレクトリから SSH 鍵を手動で追加するには: |
||
− | サーバーに接続するときに、鍵が使われてパスフレーズの入力を求めるダイアログがポップアップするようになります。ログイン時に自動的にロックを解除するオプションもあります。このオプションにチェックを入れている場合、もうパスフレーズを入力する必要はなくなります。 |
||
+ | $ ssh-add ~/.private/id_rsa |
||
− | もしくは、キーリングにパスフレーズを永続的に保存したい場合、{{pkg|seahorse}} パッケージの seahorse-ssh-askpass を使います: |
||
+ | Enter passphrase for ~/.private/id_rsa: |
||
+ | {{Note|秘密鍵と同じディレクトリ (上記の例では {{ic|~/.ssh/id_rsa.pub}}) に対応する ''.pub'' ファイルが必要です。また、公開鍵のファイル名が秘密鍵に ''.pub'' を付けた名前になっていることを確認してください (例: {{ic|my_key.pub}})。}} |
||
− | /usr/lib/seahorse/seahorse-ssh-askpass my_key |
||
− | + | 手動で追加した鍵をすべて無効化するには: |
|
− | $ ssh-add |
+ | $ ssh-add -D |
− | Enter passphrase for /home/mith/.ssh/id_dsa: |
||
+ | === 無効化する === |
||
− | {{Note|秘密鍵と同じディレクトリ (上記の例では {{ic|~/.ssh/id_dsa.pub}}) に対応する {{ic|.pub}} ファイルが必要です。また、公開鍵のファイル名が秘密鍵に {{ic|.pub}} を付けた名前になっていることを確認してください (例: {{ic|my_key.pub}})。}} |
||
+ | 別の SSH エージェントを実行したい場合 (例: [[SSH 鍵#ssh-agent|ssh-agent]] や [[gpg-agent]])、GNOME Keyring の ssh-agent ラッパを無効化するのは良い考えです。各エージェントは異なるソケットをリッスンし、{{ic|SSH_AUTH_SOCK}} を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。 |
||
− | === キーリングデーモンの無効化 === |
||
+ | |||
− | 別の SSH エージェントを使いたい場合 (例: [[SSH 鍵#ssh-agent|ssh-agent]])、GNOME Keyring デーモンの SSH コンポーネントを無効化する必要があります: |
||
+ | gcr-ssh-agent を無効化するには、{{ic|gcr-ssh-agent.socket}} と {{ic|gcr-ssh-agent.service}} を両方とも systemd で無効化・停止してください。 |
||
− | # ln -sf /dev/null /etc/xdg/autostart/gnome-keyring-ssh.desktop |
||
− | ログアウトすることで変更が適用されます。 |
||
== ヒントとテクニック == |
== ヒントとテクニック == |
||
119行目: | 115行目: | ||
=== アプリケーションとの統合 === |
=== アプリケーションとの統合 === |
||
− | * [[Chromium# |
+ | * [[Chromium#特定のパスワードストアを強制する|Chromium]] |
=== パスフレーズの消去 === |
=== パスフレーズの消去 === |
||
125行目: | 121行目: | ||
$ gnome-keyring-daemon -r -d |
$ gnome-keyring-daemon -r -d |
||
− | + | このコマンドは、gnome-keyring-daemon を開始し、以前の実行中のインスタンスを終了します。 |
|
=== Git 統合 === |
=== Git 統合 === |
||
− | GNOME |
+ | GNOME Keyring は、HTTPS 経由でプッシュするときに [[Git]] と一緒に使うと便利です。この機能を使用するには、{{Pkg|libsecret}} パッケージが[[#インストール|インストールされている必要があります]]。 |
− | ''libsecret'' ヘルパーを使うように Git を設定: |
+ | ''libsecret'' ヘルパーを使うように Git を設定してください: |
− | $ git config --global credential.helper /usr/lib/git-core/git-credential- |
+ | $ git config --global credential.helper /usr/lib/git-core/git-credential-libsecret |
− | これで |
+ | これで、次回 {{ic|git push}} を実行したときに、キーリングがまだ解除されていない場合に解除するよう要求されます。 |
=== GnuPG 統合 === |
=== GnuPG 統合 === |
||
− | GnuPG を使用するいくつかのアプリケーションは、{{ic|pinentry-program}} |
+ | GnuPG を使用するいくつかのアプリケーションは、{{ic|pinentry-program}} が設定されていることを要求します。GNOME 3 pinentry for GNOME Keyring を使用してパスフレーズのプロンプトを管理するようにするには、以下を設定してください: |
{{hc|~/.gnupg/gpg-agent.conf| |
{{hc|~/.gnupg/gpg-agent.conf| |
||
145行目: | 141行目: | ||
}} |
}} |
||
− | もう一つのオプションは、[[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'' という拡張子が付けられて保存されています。 |
|
+ | === キーリングのパスワードをユーザのパスワードへ自動的に変更する === |
||
− | === Automatically change keyring password with user password === |
||
+ | {{Note|これは、デフォルトのキーリングにしか影響しません。}} |
||
− | {{Note|This only affects the default keyring.}} |
||
+ | |||
+ | {{ic|/etc/pam.d/passwd}} の末尾に {{ic|password optional pam_gnome_keyring.so}} を[[追加]]してください: |
||
− | Add {{ic|password optional pam_gnome_keyring.so}} to the end of {{ic|/etc/pam.d/passwd}}. |
||
{{hc|/etc/pam.d/passwd|2= |
{{hc|/etc/pam.d/passwd|2= |
||
+ | ... |
||
− | #%PAM-1.0 |
||
+ | password optional pam_gnome_keyring.so |
||
+ | }} |
||
+ | === デスクトップ環境 (KDE、GNOME、XFCE など) の外で gnome-keyring-daemon を使う === |
||
− | #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''' |
||
+ | {{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、または以下のファイルを実行しないウィンドウマネージャを使用している場合: |
||
+ | |||
+ | * {{ic|/etc/xdg/autostart/gnome-keyring-*.desktop}} |
||
+ | * {{ic|/etc/X11/xinit/xinitrc.d/50-systemd-user.sh}} |
||
+ | |||
+ | ウィンドウマネージャの起動時に以下のコマンドがウィンドウマネージャによって実行される必要があります。以下のコマンドを何らかの特定の順序で実行する必要はありません。 |
||
+ | |||
+ | {{bc|dbus-update-activation-environment DISPLAY XAUTHORITY WAYLAND_DISPLAY}} |
||
+ | |||
+ | または |
||
+ | |||
+ | {{bc|dbus-update-activation-environment --all}} |
||
+ | |||
+ | このコマンドは、環境変数をウィンドウマネージャから dbus セッションに渡します。これがないと、DBus 経由で GUI プロンプトをトリガーできません。例えば、これは seahorse のパスワードプロンプトで必要です。 |
||
+ | |||
+ | これが必要になるのは、グラフィカル環境が開始される前に dbus セッションが開始されるからです。したがって、dbus セッションは、あなたがいるグラフィカルな環境について知らないのです。誰か、または何かが、グラフィカル環境を記述する環境変数を dbus に渡すことで、グラフィカルな環境について dbus セッションに教えなければなりません。 |
||
+ | |||
+ | {{bc|1=gnome-keyring-daemon --start --components=secrets}} |
||
+ | |||
+ | ログイン時に 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 Keyring XDG Portal ==== |
||
+ | |||
+ | {{Accuracy|{{ic|/usr/share}} に存在するファイルを変更しても、パッケージのアップグレード時に元に戻ってしまいます。}} |
||
+ | |||
+ | GNOME Keyring は、[[flatpak]] などによってサンドボックス化されたアプリケーションのために XDG Portal のバックエンドを公開しています。GNOME の外でこれを機能させるには、設定ファイル {{ic|/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal}} の {{ic|UseIn}} キーにデスクトップ環境の名前を追加する必要があります。例えば、[[sway]] を追加するには: |
||
+ | |||
+ | {{hc|/usr/share/xdg-desktop-portal/portals/gnome-keyring.portal|2= |
||
+ | [portal] |
||
+ | DBusName=org.freedesktop.secrets |
||
+ | Interfaces=org.freedesktop.impl.portal.Secret |
||
+ | UseIn=gnome;sway |
||
}} |
}} |
||
+ | |||
+ | XDG Desktop Portal のバックエンドに関する詳細は [[XDG デスクトップ ポータル#バックエンド]] を参照してください。 |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
169行目: | 204行目: | ||
=== パスワードが保存されない === |
=== パスワードが保存されない === |
||
− | ログイン |
+ | ログインするたびにパスワードプロンプトが表示され、パスワードが保存されない場合は、デフォルトのキーリングを作成/設定する必要がある場合があります。Seahorse (別名、パスワードと鍵) を使ってこれを行う方法については、GNOME Help の [https://help.gnome.org/users/seahorse/stable/keyring-create.html Create a new keyring] と [https://help.gnome.org/users/seahorse/stable/keyring-change-default.html Change the default keyring] を参照してください。 |
− | |||
− | Seahorse を使用してこれを行うには、GNOME ヘルプの [https://help.gnome.org/users/seahorse/stable/keyring-create.html Create a new keyring] と [https://help.gnome.org/users/seahorse/stable/keyring-change-default.html Change the default keyring] を参照してください。 |
||
=== キーリングのリセット === |
=== キーリングのリセット === |
||
− | + | "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}} ファイルを削除することもできます。これらのファイルを削除すると、保存されている全鍵が永久に削除されるので注意してください。これらの削除したら、一旦ログアウトし、ログインし直してください。 |
+ | === Unable to locate daemon control file === |
||
− | === デーモンコントロールファイルが見つからない === |
||
− | ログイン後の [[journal]] に |
+ | ログイン後に以下のエラーが [[journal]] に表示される場合: |
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]。 |
|
=== No such secret collection at path: / === |
=== No such secret collection at path: / === |
||
− | カスタム {{ic|~/.xinitrc}} を使用していて、Seahorse で新しいキーリングを作成 |
+ | カスタムの {{ic|~/.xinitrc}} を使用していて、Seahorse で新しいキーリングを作成使用したときにこのエラーが発生する場合は、以下の行を追加することで解決できる可能性があります[https://bbs.archlinux.org/viewtopic.php?pid=1640822#p1640822]: |
{{hc|~/.xinitrc| |
{{hc|~/.xinitrc| |
||
source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh |
source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh |
||
}} |
}} |
||
+ | |||
+ | === ターミナルに "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}} [[ユーザーユニット]]を[[無効化]]することもできます。 |
||
== 参照 == |
== 参照 == |
||
− | * [https://wiki.gnome.org/action/show/Projects/GnomeKeyring GNOME wiki] |
||
+ | * https://help.gnome.org/users/seahorse/stable/ |
||
− | {{TranslationStatus|GNOME/Keyring|2022-04-05|725182}} |
||
+ | * [https://wiki.gnome.org/action/show/Projects/GnomeKeyring GNOME Wiki ページ] |
||
+ | |||
+ | {{TranslationStatus|GNOME/Keyring|2024-02-25|801104}} |
2024年2月25日 (日) 21:37時点における最新版
GNOME Keyring は「シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション」です。
セキュリティモデル
GNOME/Keyring API の動作に関連するセキュリティの問題 (CVE-2018-19358) が過去に報告されています。いかなるアプリケーションも、キーリングのロックが解除されていれば、任意のシークレットを簡単に読むことができてしまいます。さらに、ユーザーがログインしていれば、ログイン/デフォルトのコレクションのロックは解除されています。D-Bus の保護機構 (busconfig とポリシー XML エレメントを含む) はデフォルトで使用されておらず、いずれにせよ、これも簡単にバイパスできてしまいます。
GNOME/Keyring のセキュリティモデルによれば、信頼されないアプリケーションはユーザーのセッションバスソケットへのアクセスを許可されないであろうことから、GNOME プロジェクトはこの脆弱性レポートに同意していません。
Flatpak によってサンドボックス化されているアプリケーションは、この影響を受けません。
インストール
gnome-keyring は gnome グループの一部なので、GNOME を使用しているのであればすでにインストールされています。また、このパッケージは単独でインストールすることもできます。他のアプリケーションにキーリングへのアクセス権を与えるために libsecret もインストールする必要があります。libgnome-keyring は非推奨になりました (後継は libsecret です) が、それでも特定のアプリケーションで必要になる場合があります。
gnome-keyring-daemon は、ログイン時に systemd ユーザーサービスを介して自動的に開始されます。また、ソケットを介して要求に応じて開始させることもできます。
GNOME Keyring に関する追加のユーティリティは次の通りです:
- secret-tool — コマンドラインから GNOME Keyring (や DBus Secret Service API を実装する他のサービス) にアクセスします。
- lssecret — libsecret を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。
GUI で管理する
GNOME Keyring は Seahorse を使って管理することができます。seahorse パッケージをインストールしてください。
キーリング (例えば、デフォルトキーリングである "Login") のパスワードは変更することが可能であり、さらには削除することも可能です。詳細は GNOME Help の Create a new keyring と Update the keyring password を参照してください。
キーリングを使用する
PAM モジュール pam_gnome_keyring.so は、GNOME キーリングを部分的に初期化し、その過程でデフォルトの login キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。
PAM の手順
ディスプレイマネージャを使用している場合、ほとんどのケースで特に設定せずともキーリングは機能します。GDM、LightDM、LXDM、そして 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
SSH 鍵
GNOME Keyring は、ssh-agent のラッパとして振る舞うことができます。このモードでは、SSH 鍵をアンロックする必要が生じた度に GUI パスワード入力ダイアログを表示します。このダイアログには、入力したパスワードを記憶するかどうか尋ねるチェックボックスが含まれています。このチェックボックスを選択すると、ログインキーリングがアンロックされている限り、今後そのキーを使用する際にパスワードを入力する必要が無くなります。
バージョン 1:46 から、gnome-keyring-daemon ビルドでは SSH の機能がデフォルトで無効化されています。この機能は /usr/lib/gcr-ssh-agent
(gcr-4 パッケージに含まれています) へと移動されています。gnome-keyring-daemon の SSH 実装は完全に削除されることが計画されています。
gcr をセットアップする
やるべきことは:
gcr-ssh-agent.socket
systemd ユーザーユニットを有効化する。- SSH コマンドを実行する際に
SSH_AUTH_SOCK
環境変数を$XDG_RUNTIME_DIR/gcr/ssh
に設定しておく。環境変数を設定する方法はたくさんあります。使用するべき方法は、あなたのセットアップと好みに依ります。
使用する
以下を実行することで、実行中のエージェントにロードされている 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-add -D
無効化する
別の SSH エージェントを実行したい場合 (例: ssh-agent や gpg-agent)、GNOME Keyring の ssh-agent ラッパを無効化するのは良い考えです。各エージェントは異なるソケットをリッスンし、SSH_AUTH_SOCK
を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。
gcr-ssh-agent を無効化するには、gcr-ssh-agent.socket
と gcr-ssh-agent.service
を両方とも systemd で無効化・停止してください。
ヒントとテクニック
アプリケーションとの統合
パスフレーズの消去
$ 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 という拡張子が付けられて保存されています。
キーリングのパスワードをユーザのパスワードへ自動的に変更する
/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 を使う
起動する
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
GNOME Keyring は、flatpak などによってサンドボックス化されたアプリケーションのために XDG Portal のバックエンドを公開しています。GNOME の外でこれを機能させるには、設定ファイル /usr/share/xdg-desktop-portal/portals/gnome-keyring.portal
の UseIn
キーにデスクトップ環境の名前を追加する必要があります。例えば、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 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
ファイルを削除することもできます。これらのファイルを削除すると、保存されている全鍵が永久に削除されるので注意してください。これらの削除したら、一旦ログアウトし、ログインし直してください。
Unable to locate daemon control file
ログイン後に以下のエラーが journal に表示される場合:
gkr-pam: unable to locate daemon control file
関連する他の問題が発生していないのであれば、このメッセージは「安全に無視することができます」[2]。
No such secret collection at path: /
カスタムの ~/.xinitrc
を使用していて、Seahorse で新しいキーリングを作成使用したときにこのエラーが発生する場合は、以下の行を追加することで解決できる可能性があります[3]:
~/.xinitrc
source /etc/X11/xinit/xinitrc.d/50-systemd-user.sh
ターミナルに "discover_other_daemon: 1" というメッセージが表示される
これは gnome-keyring-daemon が複数回起動されたことが原因です。Systemd サービスが gnome keyring のデーモンと一緒に提供されるため、別の方法で起動する必要はありません。そのため、.zshenv
、.bash_profile
、.xinitrc
、config.fish
、その他の似たような場所から gnome-keyring-daemon を起動するコマンドを削除してください。あるいは、gnome-keyring-daemon.service
と gnome-keyring-daemon.socket
ユーザーユニットを無効化することもできます。