「GNOME/Keyring」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) 細 (ed25519は使えるようになっているのでnoteは削除しました) タグ: visualeditor-switched |
細 (→gcr をセットアップする: 修正) |
||
(6人の利用者による、間の86版が非表示) | |||
1行目: | 1行目: | ||
[[Category:GNOME]] |
[[Category:GNOME]] |
||
+ | [[Category:OpenPGP]] |
||
[[en:GNOME/Keyring]] |
[[en:GNOME/Keyring]] |
||
+ | [[es:GNOME (Español)/Keyring]] |
||
− | [https://wiki.gnome.org/Projects/GnomeKeyring GNOME Keyring] はパスワード・鍵・証明書などを保存してアプリケーションから利用できるようにする [[GNOME]] のコンポーネントです。 |
||
+ | [[zh-hans:GNOME/Keyring]] |
||
+ | {{Related articles start}} |
||
+ | {{Related|GnuPG}} |
||
+ | {{Related|OpenPGP}} |
||
+ | {{Related articles end}} |
||
+ | |||
+ | [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|gnome-keyring}} は {{Grp|gnome}} グループの一部なので、GNOME を使用しているのであればすでにインストールされています。また、このパッケージは単独でインストールすることもできます。他のアプリケーションにキーリングへのアクセス権を与えるために {{Pkg|libsecret}} もインストールする必要があります。{{Pkg|libgnome-keyring}} は非推奨になりました (後継は ''libsecret'' です) が、それでも特定のアプリケーションで必要になる場合があります。 |
||
− | 便利なユーティリティ: |
||
− | * {{App|secret-tool|コマンドラインから GNOME Keyring (や [https://standards.freedesktop.org/secret-service/ DBus Secret Service API] が実装された他のサービス) にアクセス。|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}} |
||
− | * {{App|gnome-keyring-query|GNOME Keyring に保存したパスワードを確認するためのシンプルなコマンドラインツール。|http://www.gentoo-wiki.info/HOWTO_Use_gnome-keyring_to_store_SSH_passphrases|{{AUR|gnome-keyring-query}}}} |
||
− | * {{App|gkeyring|コマンドラインからパスワードを確認する。[[Git]] バージョンではアイテムの名前や id を知らなくても全てのパスワードを確認可能。|https://github.com/kparal/gkeyring|{{AUR|gkeyring}}, {{AUR|gkeyring-git}}}} |
||
+ | gnome-keyring-daemon は、ログイン時に systemd ユーザーサービスを介して自動的に開始されます。また、ソケットを介して要求に応じて開始させることもできます。 |
||
− | == GUI で管理 == |
||
− | GNOME Keyring は Seahorse を使って管理することができます。公式リポジトリから {{Pkg|seahorse}} パッケージをインストールしてください。 |
||
+ | GNOME Keyring に関する追加のユーティリティは次の通りです: |
||
− | GNOME Keyring のパスワードを空にしたり変更することが可能です。Seahorse を開いて、ドロップダウンメニューの "View" から "By Keyring" を選択してください。Passwords タブを開いて、"Passwords: login" を右クリックして "Change password" を選択してください。旧パスワードを入力してから新しいパスワードを入力します。暗号化されていないストレージを使用しているという警告が表示されるので "Use Unsafe Storage" を押して下さい。 |
||
+ | * {{App|secret-tool|コマンドラインから GNOME Keyring (や [https://specifications.freedesktop.org/secret-service/ DBus Secret Service API] を実装する他のサービス) にアクセスします。|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}} |
||
− | == GNOME 以外でキーリングを使用する == |
||
+ | * {{App|lssecret|''libsecret'' を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。|https://gitlab.com/GrantMoyer/lssecret|{{AUR|lssecret-git}}}} |
||
+ | == GUI で管理する == |
||
− | === ディスプレイマネージャを使わない === |
||
+ | GNOME Keyring は Seahorse を使って管理することができます。{{Pkg|seahorse}} パッケージを[[インストール]]してください。 |
||
− | ==== 自動ログイン ==== |
||
− | 自動ログインを使っている場合、ログインキーリングに空のパスワードを設定することでキーリングマネージャを無効化することができます。 |
||
− | {{Note|この場合はパスワードは暗号化されていない状態で保存されます。}} |
||
+ | キーリング (例えば、デフォルトキーリングである "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]] か [[xinitrc]] を使ってキーリングデーモンを起動することができます。PAM ではログイン時に自動的にキーリングのロックを解除することもできます。 |
||
− | + | == キーリングを使用する == |
|
− | {{ic|/etc/pam.d/login}} から gnome-keyring-daemon を起動: |
||
+ | [[PAM]] モジュール ''pam_gnome_keyring.so'' は、GNOME キーリングを部分的に初期化し、その過程でデフォルトの ''login'' キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。 |
||
− | {{ic|auth}} セクションの最後に {{ic|auth optional pam_gnome_keyring.so}} を追加して {{ic|session}} セクションの最後に {{ic|session optional pam_gnome_keyring.so auto_start}} を追加してください。 |
||
+ | |||
+ | === PAM の手順 === |
||
+ | |||
+ | {{Note|'''自動ログインを使用しない場合に'''キーリングのロックを自動的にアンロックしたい場合、ユーザアカウントのパスワードとデフォルトのキーリングのパスワードを同じにする必要があります。[[#キーリングのパスワードをユーザのパスワードへ自動的に変更する]] を参照してください。}} |
||
+ | |||
+ | {{Tip| |
||
+ | * 自動ログインを使用している場合にキーリングを自動的にアンロックするには、デフォルトのキーリングのパスワードを空白に設定すればよいです。この場合、キーリングの内容は暗号化されずに保存されることに注意してください。 |
||
+ | * あるいは、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] を参照してください。 |
||
+ | }} |
||
+ | |||
+ | ディスプレイマネージャを使用している場合、ほとんどのケースで特に設定せずともキーリングは機能します。[[GDM]]、[[LightDM]]、[[LXDM]]、そして [[SDDM]] にはすでに必須の PAM 設定が含まれています。キーリングのロックを自動的に解除しないディスプレイマネージャの場合は、以下で言及している {{ic|/etc/pam.d/login}} 以外の適切なファイルを適切に編集してください。 |
||
+ | |||
+ | コンソールベースのログインを行う場合は、{{ic|/etc/pam.d/login}} を編集してください: |
||
+ | |||
+ | {{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| |
||
40行目: | 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''' |
+ | }} |
||
+ | {{Note|[[greetd]] ログインマネージャを使用している場合、変更する必要のあるファイルは {{ic|/etc/pam.d/login}} ではなく {{ic|/etc/pam.d/greetd}} です。}} |
||
− | 次に、{{ic|/etc/pam.d/passwd}} の最後に {{ic|password optional pam_gnome_keyring.so}} を追加してください。 |
||
− | {{hc|/etc/pam.d/passwd|<nowiki> |
||
− | #%PAM-1.0 |
||
+ | == SSH 鍵 == |
||
− | #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</nowiki> |
||
− | '''password optional pam_gnome_keyring.so'''}} |
||
+ | GNOME Keyring は、[[SSH 鍵#ssh-agent|ssh-agent]] のラッパとして振る舞うことができます。このモードでは、SSH 鍵をアンロックする必要が生じた度に GUI パスワード入力ダイアログを表示します。このダイアログには、入力したパスワードを記憶するかどうか尋ねるチェックボックスが含まれています。このチェックボックスを選択すると、ログインキーリングがアンロックされている限り、今後そのキーを使用する際にパスワードを入力する必要が無くなります。 |
||
− | {{Note| |
||
− | * 自動でロックを解除したい場合、ユーザーアカウントとキーリングに同一のパスワードを設定する必要があります。 |
||
− | * 上記の設定だけでは不十分で {{ic|~/.xinitrc}} に以下のコードを記述して環境変数をエクスポートする必要があります。}} |
||
+ | バージョン [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 計画されています]。 |
||
− | ===== xinitrc を使う ===== |
||
+ | === gcr をセットアップする === |
||
− | [[xinitrc]] から gnome-keyring-daemon を起動: |
||
+ | やるべきことは: |
||
− | {{hc|~/.xinitrc|<nowiki> |
||
+ | # {{ic|gcr-ssh-agent.socket}} systemd [[ユーザーユニット]]を[[有効化]]する。 |
||
− | eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) |
||
+ | # SSH コマンドを実行する際に {{ic|SSH_AUTH_SOCK}} 環境変数を {{ic|$XDG_RUNTIME_DIR/gcr/ssh}} に設定しておく。環境変数を設定する方法は[[環境変数#変数の定義|たくさんあります]]。使用するべき方法は、あなたのセットアップと好みに依ります。 |
||
− | export SSH_AUTH_SOCK |
||
− | </nowiki>}} |
||
+ | === 使用する === |
||
− | スケルトンの {{ic|.xinitrc}} では D-Bus セッションが起動します。詳しくは {{bug|13986}} を参照。 |
||
+ | 以下を実行することで、実行中のエージェントにロードされている SSH 鍵をリストアップできます: |
||
− | {{Note|{{ic|GNOME_KEYRING_PID}} は削除されました。{{ic|XDG_RUNTIME_DIR}} が設定されている場合 {{ic|GNOME_KEYRING_CONTROL}} は書き込まれません。[http://ftp.gnome.org/pub/GNOME/sources/gnome-keyring/3.11/gnome-keyring-3.11.92.changes] を参照。}} |
||
+ | $ ssh-add -L |
||
− | キーリングからの情報の取得に問題が発生する場合、問題の環境で {{ic|DBUS_SESSION_BUS_ADDRESS}} がエクスポートされていることを確認してください ({{ic|DBUS_SESSION_BUS_PID}} はエクスポートされません)。 |
||
+ | これにより、適切なサービスが起動されていて、{{ic|SSH_AUTH_SOCK}} が適切に設定されていることを確認することができます。 |
||
− | Xfce で使う場合 [[Xfce#SSH_エージェント|SSH エージェント]]を参照。 |
||
+ | パスフレーズをキーリングに永続的に保存するには、{{pkg|seahorse}} パッケージの ssh-askpass を使用してください: |
||
− | === ディスプレイマネージャを使う === |
||
− | ディスプレイマネージャを使う場合、ほとんどの場合、何も設定しなくてもキーリングは動作します。以下のディスプレイマネージャはログイン時にキーリングのロックを自動的に解除します: |
||
− | * [[GDM]] |
||
− | * [[SLiM]] |
||
− | * [[LightDM]] |
||
− | * [[LXDM]] |
||
− | {{Note|{{pkg|libgnome-keyring}} をインストールする必要があるかもしれません。}} |
||
− | KDM については、[[KDM#KDM と Gnome-keyring]] を見て下さい。 |
||
+ | $ /usr/lib/seahorse/ssh-askpass ''my_key'' |
||
− | [[SDDM]] の場合、KDM のガイドラインに従ってください。ただし {{ic|/etc/pam.d/kde}} は {{ic|/etc/pam.d/sddm}} に変更してください。 |
||
+ | 他のディレクトリから SSH 鍵を手動で追加するには: |
||
− | SSH などのターミナルから動作させるアプリケーションからキーリングを使えるようにするには、以下を {{ic|~/.bash_profile}} や {{ic|~/.zshenv}} に追加してください: |
||
+ | $ ssh-add ~/.private/id_rsa |
||
− | {{hc|~/.zshenv|<nowiki> |
||
+ | Enter passphrase for ~/.private/id_rsa: |
||
− | if [ -n "$DESKTOP_SESSION" ];then |
||
− | eval $(gnome-keyring-daemon --start) |
||
− | export SSH_AUTH_SOCK |
||
− | fi</nowiki>}} |
||
+ | {{Note|秘密鍵と同じディレクトリ (上記の例では {{ic|~/.ssh/id_rsa.pub}}) に対応する ''.pub'' ファイルが必要です。また、公開鍵のファイル名が秘密鍵に ''.pub'' を付けた名前になっていることを確認してください (例: {{ic|my_key.pub}})。}} |
||
− | {{Note|1=GNOME Keyring デーモンは {{ic|GNOME_KEYRING_PID}} をもはや使いません。[https://mail.gnome.org/archives/commits-list/2014-March/msg03864.html] を参照。}} |
||
+ | 手動で追加した鍵をすべて無効化するには: |
||
− | == SSH 鍵 == |
||
− | SSH 鍵を追加するには: |
||
− | $ ssh-add |
+ | $ ssh-add -D |
− | Enter passphrase for /home/mith/.ssh/id_dsa: |
||
+ | === 無効化する === |
||
− | 自動でロードされている鍵を確認するには: |
||
+ | 別の SSH エージェントを実行したい場合 (例: [[SSH 鍵#ssh-agent|ssh-agent]] や [[gpg-agent]])、GNOME Keyring の ssh-agent ラッパを無効化するのは良い考えです。各エージェントは異なるソケットをリッスンし、{{ic|SSH_AUTH_SOCK}} を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。 |
||
− | $ ssh-add -L |
||
+ | gcr-ssh-agent を無効化するには、{{ic|gcr-ssh-agent.socket}} と {{ic|gcr-ssh-agent.service}} を両方とも systemd で無効化・停止してください。 |
||
− | 全ての鍵を無効化するには: |
||
+ | == ヒントとテクニック == |
||
− | $ ssh-add -D |
||
+ | === アプリケーションとの統合 === |
||
− | サーバーに接続するときに、鍵が使われてパスフレーズの入力を求めるダイアログがポップアップするようになります。ログイン時に自動的にロックを解除するオプションもあります。このオプションにチェックを入れている場合、もうパスフレーズを入力する必要はなくなります。 |
||
+ | * [[Chromium#特定のパスワードストアを強制する|Chromium]] |
||
− | もしくは、キーリングにパスフレーズを永続的に保存したい場合、{{pkg|seahorse}} パッケージの seahorse-ssh-askpass を使います: |
||
+ | === パスフレーズの消去 === |
||
− | /usr/lib/seahorse/seahorse-ssh-askpass my_key |
||
+ | $ gnome-keyring-daemon -r -d |
||
− | {{Note|秘密鍵と同じディレクトリ (上記の例では {{ic|~/.ssh/id_dsa.pub}}) に対応する {{ic|.pub}} ファイルが必要です。また、公開鍵のファイル名が秘密鍵に {{ic|.pub}} を付けた名前になっていることを確認してください (例: {{ic|my_key.pub}})。}} |
||
+ | このコマンドは、gnome-keyring-daemon を開始し、以前の実行中のインスタンスを終了します。 |
||
− | === キーリングデーモンの無効化 === |
||
− | 別の SSH エージェントを使いたい場合 (例: [[SSH 鍵#ssh-agent|ssh-agent]])、GNOME Keyring デーモンの SSH コンポーネントを無効化する必要があります: |
||
− | # ln -sf /dev/null /etc/xdg/autostart/gnome-keyring-ssh.desktop |
||
− | ログアウトすることで変更が適用されます。 |
||
+ | === Git 統合 === |
||
− | == ヒントとテクニック == |
||
+ | GNOME Keyring は、HTTPS 経由でプッシュするときに [[Git]] と一緒に使うと便利です。この機能を使用するには、{{Pkg|libsecret}} パッケージが[[#インストール|インストールされている必要があります]]。 |
||
− | === アプリケーションとの統合 === |
||
+ | ''libsecret'' ヘルパーを使うように Git を設定してください: |
||
− | * [[Firefox#GNOME キーリングの統合]] |
||
+ | $ git config --global credential.helper /usr/lib/git-core/git-credential-libsecret |
||
− | === パスフレーズの消去 === |
||
+ | これで、次回 {{ic|git push}} を実行したときに、キーリングがまだ解除されていない場合に解除するよう要求されます。 |
||
− | $ gnome-keyring-daemon -r -d |
||
+ | === GnuPG 統合 === |
||
− | 上記のコマンドで、実行中のインスタンスが終了して、新しい gnome-keyring-daemon が起動します。 |
||
+ | GnuPG を使用するいくつかのアプリケーションは、{{ic|pinentry-program}} が設定されていることを要求します。GNOME 3 pinentry for GNOME Keyring を使用してパスフレーズのプロンプトを管理するようにするには、以下を設定してください: |
||
− | === GNOME Keyring と Git === |
||
− | HTTPS でプッシュするときに [[Git]] と GNOME Keyring を組み合わせると便利です。 |
||
+ | {{hc|~/.gnupg/gpg-agent.conf| |
||
− | まず[[公式リポジトリ]]から {{pkg|libgnome-keyring}} パッケージをインストールしてください。 |
||
+ | pinentry-program /usr/bin/pinentry-gnome3 |
||
+ | }} |
||
+ | もう一つのオプションは、[[GnuPG#無人のパスフレーズ|GPG のループバックを強制する]]ことで、アプリケーションでパスフレーズを入力できるようにすることです。 |
||
− | そしてヘルパーをコンパイルします: |
||
+ | |||
− | $ cd /usr/share/git/credential/gnome-keyring |
||
+ | === キーリングの名前変更 === |
||
− | # make |
||
+ | |||
− | ヘルパーを使うように Git を設定: |
||
+ | キーリングの表示名 (つまり、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'' という拡張子が付けられて保存されています。 |
||
− | $ git config --global credential.helper /usr/lib/git-core/git-credential-gnome-keyring |
||
+ | |||
− | これで ''git push'' を実行したときに、キーリングのロックが解除されていなかった場合、解除するように要求されます。 |
||
+ | === キーリングのパスワードをユーザのパスワードへ自動的に変更する === |
||
+ | |||
+ | {{Note|これは、デフォルトのキーリングにしか影響しません。}} |
||
+ | |||
+ | {{ic|/etc/pam.d/passwd}} の末尾に {{ic|password optional pam_gnome_keyring.so}} を[[追加]]してください: |
||
+ | |||
+ | {{hc|/etc/pam.d/passwd|2= |
||
+ | ... |
||
+ | password optional pam_gnome_keyring.so |
||
+ | }} |
||
+ | |||
+ | === デスクトップ環境 (KDE、GNOME、XFCE など) の外で gnome-keyring-daemon を使う === |
||
+ | |||
+ | ==== 起動する ==== |
||
+ | |||
+ | {{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 デスクトップ ポータル#バックエンド]] を参照してください。 |
||
== トラブルシューティング == |
== トラブルシューティング == |
||
148行目: | 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] を参照してください。 |
+ | |||
+ | === キーリングのリセット === |
||
+ | |||
+ | "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}} ファイルを削除することもできます。これらのファイルを削除すると、保存されている全鍵が永久に削除されるので注意してください。これらの削除したら、一旦ログアウトし、ログインし直してください。 |
||
+ | |||
+ | === Unable to locate daemon control file === |
||
+ | |||
+ | ログイン後に以下のエラーが [[journal]] に表示される場合: |
||
+ | |||
+ | gkr-pam: unable to locate daemon control file |
||
+ | |||
+ | 関連する他の問題が発生していないのであれば、このメッセージは「安全に無視することができます」[https://bbs.archlinux.org/viewtopic.php?pid=1940190#p1940190]。 |
||
+ | |||
+ | === No such secret collection at path: / === |
||
+ | |||
+ | カスタムの {{ic|~/.xinitrc}} を使用していて、Seahorse で新しいキーリングを作成使用したときにこのエラーが発生する場合は、以下の行を追加することで解決できる可能性があります[https://bbs.archlinux.org/viewtopic.php?pid=1640822#p1640822]: |
||
+ | |||
+ | {{hc|~/.xinitrc| |
||
+ | 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}} [[ユーザーユニット]]を[[無効化]]することもできます。 |
||
− | {{pkg|seahorse}} パッケージをインストールして、システム設定から "パスワードと秘密鍵" を開いて ''View'' > ''By Keyring'' を選択してください。左カラムにキーリングが存在しない場合 (鍵のアイコン)、''File'' > ''New'' > ''Password Keyring'' とたどって名前を付けて下さい。パスワードの入力を求められます。パスワードを入力しないと自動的にパスワード解除されるようになります (自動ログインを使っている場合も)、ただしパスワードは安全に保存されません。最後に、作成したキーリングを右クリックして "Set as default" を選択してください。 |
||
+ | == 参照 == |
||
− | === キーリングデーモンの SSH と Secrets コンポーネントの起動 === |
||
+ | * https://help.gnome.org/users/seahorse/stable/ |
||
− | ディスプレイマネージャや上に書かれている PAM で GNOME Keyring を起動していて、デスクトップに GNOME や Unity、MATE を使っていない場合、SSH と Secrets コンポーネントが自動的に起動しない場合があります。{{ic|/etc/xdg/autostart/}} にあるデスクトップファイル {{ic|gnome-keyring-ssh.desktop}} と {{ic|gnome-keyring-secrets.desktop}} を {{ic|~/.config/autostart/}} にコピーして OnlyShowIn という行を削除すれば問題は解決します。 |
||
+ | * [https://wiki.gnome.org/action/show/Projects/GnomeKeyring GNOME Wiki ページ] |
||
+ | {{TranslationStatus|GNOME/Keyring|2024-02-25|801104}} |
||
− | $ 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 |
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
ユーザーユニットを無効化することもできます。