「GNOME/Keyring」の版間の差分
(同期) |
|||
| (7人の利用者による、間の103版が非表示) | |||
| 1行目: | 1行目: | ||
[[Category:GNOME]] |
[[Category:GNOME]] |
||
| + | [[Category:OpenPGP]] |
||
| − | [[en:GNOME Keyring]] |
||
| + | [[en:GNOME/Keyring]] |
||
| − | [https://live.gnome.org/GnomeKeyring/ GnomeKeyring] より: |
||
| + | [[es:GNOME (Español)/Keyring]] |
||
| − | :''GNOME Keyring はパスワード・鍵・証明書などを保存してアプリケーションから利用できるようにする GNOME のコンポーネントです。'' |
||
| + | [[zh-hans:GNOME/Keyring]] |
||
| − | {{Note|1=2015年7月10日現在、GNOME Keyring は ECDSA[https://bugzilla.gnome.org/show_bug.cgi?id=641082] と Ed25519[https://bugzilla.gnome.org/show_bug.cgi?id=723274] 鍵を扱うことができません。これらの鍵を使う必要がある場合は他の [[SSH 鍵#SSH_エージェント|SSH エージェント]]を使用して下さい。}} |
||
| + | {{Related articles start}} |
||
| − | == インストール == |
||
| + | {{Related|GnuPG}} |
||
| − | GNOME を使用している場合、{{Pkg|gnome-keyring}} は {{grp|gnome}} グループの一つとして自動的にインストールされます。GNOME を使っていない場合は、[[公式リポジトリ]]か {{Pkg|gnome-keyring}} をインストールしてください。 |
||
| + | {{Related|OpenPGP}} |
||
| + | {{Related articles end}} |
||
| + | [https://wiki.gnome.org/Projects/GnomeKeyring GNOME Keyring] は「シークレット・パスワード・鍵・証明書を保存し、それらをアプリケーションから利用できるようにする GNOME のコンポーネントのコレクション」です。 |
||
| − | == GUI で管理 == |
||
| − | GNOME Keyring は Seahorse を使って管理することができます。公式リポジトリから {{Pkg|seahorse}} パッケージをインストールしてください。 |
||
| + | GNOME Keyring は [https://www.freedesktop.org/wiki/Specifications/secret-storage-spec/ org.freedesktop.secrets] API を提供しています。これは、クライアントアプリケーションがユーザーのログインセッション内で実行中のサービスを利用してシークレットをセキュアに保管できるようにする API です。 |
||
| − | GNOME Keyring のパスワードを空にしたり変更することが可能です。Seahorse を開いて、ドロップダウンメニューの "View" から "By Keyring" を選択してください。Passwords タブを開いて、"Passwords: login" を右クリックして "Change password" を選択してください。旧パスワードを入力してから新しいパスワードを入力します。暗号化されていないストレージを使用しているという警告が表示されるので "Use Unsafe Storage" を押して下さい。 |
||
| + | == セキュリティ == |
||
| − | == GNOME やディスプレイマネージャを使用しない == |
||
| − | === 自動ログイン === |
||
| − | 自動ログインを使っている場合、ログインキーリングに空のパスワードを設定することでキーリングマネージャを無効化することができます。 |
||
| − | {{Note|この場合はパスワードは暗号化されていない状態で保存されます。}} |
||
| − | === |
+ | === 悪意のあるアプリケーションからの保護 === |
| − | コンソールによるログインを使っている場合、[[Wikipedia:Pluggable authentication module|PAM]] か [[xinitrc]] を使ってキーリングデーモンを起動することができます。PAM ではログイン時に自動的にキーリングのロックを解除することもできます。 |
||
| + | 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 エレメントを含む) はデフォルトで使用されておらず、いずれにせよ、これも簡単にバイパスできてしまいます。 |
||
| − | ==== PAM を使う ==== |
||
| − | {{ic|/etc/pam.d/login}} から gnome-keyring-daemon を起動: |
||
| + | GNOME/Keyring のセキュリティモデルによれば、信頼されないアプリケーションはユーザーのセッションバスソケットへのアクセスを許可されないであろうことから、GNOME プロジェクトはこの脆弱性レポートに[https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/5#note_1876550 同意していません]。 |
||
| − | {{ic|auth}} セクションの最後に {{ic|auth optional pam_gnome_keyring.so}} を追加して {{ic|session}} セクションの最後に {{ic|session optional pam_gnome_keyring.so auto_start}} を追加してください。 |
||
| + | Flatpak によってサンドボックス化されているアプリケーションは、セッションバスへのアクセスがフィルタリングされています。 |
||
| − | {{hc|/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}} |
||
| + | === セッションがロックされてもキーリングはロックされません === |
||
| − | 次に、{{ic|/etc/pam.d/passwd}} の最後に {{ic|password optional pam_gnome_keyring.so}} を追加してください。 |
||
| − | {{hc|/etc/pam.d/passwd| |
||
| − | <nowiki>#%PAM-1.0 |
||
| + | セッションがロックされても、キーリングは自動的にロックされません。[https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/62] これはつまり、パスワードがメモリ内に残り続け、[[Wikipedia:DMA attack|DMA 攻撃]]に対して脆弱になることを意味します。 |
||
| − | #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</nowiki>}} |
||
| + | == インストール == |
||
| − | {{Note|自動でロックを解除したい場合、ユーザーアカウントとキーリングに同一のパスワードを設定する必要があります。}} |
||
| + | {{Pkg|gnome-keyring}} は {{Grp|gnome}} グループの一部なので、GNOME を使用しているのであればすでにインストールされています。また、このパッケージは単独でインストールすることもできます。他のアプリケーションにキーリングへのアクセス権を与えるために {{Pkg|libsecret}} もインストールする必要があります。{{Pkg|libgnome-keyring}} は非推奨になりました (後継は ''libsecret'' です) が、それでも特定のアプリケーションで必要になる場合があります。 |
||
| − | {{Note|You will still need the code in {{ic|~/.xinitrc}} below in order to export the environment variables required.}} |
||
| + | gnome-keyring-daemon は、ログイン時に systemd ユーザーサービスを介して自動的に開始されます。また、ソケットを介して要求に応じて開始させることもできます。 |
||
| − | ==== xinitrc を使う ==== |
||
| + | GNOME Keyring に関する追加のユーティリティは次の通りです: |
||
| − | [[xinitrc]] から gnome-keyring-daemon を起動: |
||
| + | * {{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}}}} |
||
| − | {{hc|~/.xinitrc|<nowiki> |
||
| + | * {{App|lssecret|''libsecret'' を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。|https://gitlab.com/GrantMoyer/lssecret|{{AUR|lssecret-git}}}} |
||
| − | eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) |
||
| − | export SSH_AUTH_SOCK |
||
| − | </nowiki>}} |
||
| + | == GUI で管理する == |
||
| − | スケルトンの {{ic|.xinitrc}} では D-Bus セッションが起動します。詳しくは {{bug|13986}} を参照。 |
||
| + | GNOME Keyring は Seahorse を使って管理することができます。{{Pkg|seahorse}} パッケージを[[インストール]]してください。 |
||
| − | {{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] を参照。}} |
||
| + | キーリング (例えば、デフォルトキーリングである "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] を参照してください。 |
||
| − | キーリングからの情報の取得に問題が発生する場合、問題の環境で {{ic|DBUS_SESSION_BUS_ADDRESS}} がエクスポートされていることを確認してください ({{ic|DBUS_SESSION_BUS_PID}} はエクスポートされません)。 |
||
| + | == キーリングを使用する == |
||
| − | Xfce で使う場合 [[Xfce#SSH_エージェント|SSH エージェント]]を参照。 |
||
| + | [[PAM]] モジュール ''pam_gnome_keyring.so'' は、GNOME キーリングを部分的に初期化し、その過程で ''login'' キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。 |
||
| − | == GNOME は使わないがディスプレイマネージャは使用する == |
||
| − | ディスプレイマネージャを使う場合、ほとんどの場合、何も設定しなくてもキーリングは動作します。以下のディスプレイマネージャはログイン時にキーリングのロックを自動的に解除します: |
||
| − | * GNOME のログインマネージャ {{pkg|gdm}} |
||
| − | * Slim {{pkg|slim}} |
||
| − | * LightDM {{pkg|lightdm}} |
||
| − | {{Note| You may need to install {{pkg|libgnome-keyring}} }} |
||
| − | KDM についは、[[KDM#KDM と Gnome-keyring]] を見て下さい。 |
||
| + | === PAM の手順 === |
||
| − | SSH などのターミナルから動作させるアプリケーションからキーリングを使えるようにするには、以下を {{ic|~/.bash_profile}} や {{ic|~/.zshenv}} に追加してください: |
||
| + | {{Note|'''自動ログインを使用しない場合に'''キーリングのロックを自動的にアンロックしたい場合、ユーザアカウントのパスワードと ''login'' キーリングのパスワードを同じにする必要があります。[[#キーリングのパスワードをユーザのパスワードへ自動的に変更する]] を参照してください。}} |
||
| − | {{hc|~/.zshenv|<nowiki> |
||
| − | if [ -n "$DESKTOP_SESSION" ];then |
||
| − | eval $(gnome-keyring-daemon --start) |
||
| − | export SSH_AUTH_SOCK |
||
| − | fi</nowiki>}} |
||
| + | {{Tip| |
||
| − | {{Note| 1=The GNOME Keyring Daemon no longer exposes {{ic|GNOME_KEYRING_PID}}. See [https://mail.gnome.org/archives/commits-list/2014-March/msg03864.html commit].}} |
||
| + | * 自動ログインを使用している場合にキーリングを自動的にアンロックするには、''login'' キーリングのパスワードを空白に設定すればよいです。この場合、キーリングの内容は暗号化されずに保存されることに注意してください。 |
||
| + | * あるいは、GDM と LUKS を使用している場合、キーリングのパスワードが LUKS のパスワードと一致すれば、GDM はキーリングをアンロックすることができます。そうするには、[[mkinitcpio#通常のフック|mkinitcpio.conf で systemd init]] を使用し、かつ[[Dm-crypt/システム設定#systemd-cryptsetup-generator を使う|適切なカーネルパラメータ]]を使用する必要があります。詳細は [https://reddit.com/r/Fedora/comments/jwnqq5/] を参照してください。 |
||
| + | * 以下の PAM の手順をスキップしたい場合は、''login'' キーリングを手動で、あるいは他の方法によってアンロックしなければなりません。[[#デスクトップ環境 (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}} 以外の適切なファイルを適切に編集してください。 |
||
| − | == キーリングデーモンの無効化 == |
||
| + | |||
| − | 別の SSH エージェントを使いたい場合 (例: [[SSH 鍵#ssh-agent|ssh-agent]])、GNOME Keyring デーモンの SSH コンポーネントを無効化する必要があります: |
||
| + | コンソールベースのログインを行う場合は、{{ic|/etc/pam.d/login}} を編集してください: |
||
| − | # ln -sf /dev/null /etc/xdg/autostart/gnome-keyring-ssh.desktop |
||
| + | |||
| − | ログアウトすることで変更が適用されます。 |
||
| + | {{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| |
||
| + | #%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''' |
||
| + | }} |
||
| + | |||
| + | {{Note|[[greetd]] ログインマネージャを使用している場合、変更する必要のあるファイルは {{ic|/etc/pam.d/login}} ではなく {{ic|/etc/pam.d/greetd}} です。}} |
||
== SSH 鍵 == |
== SSH 鍵 == |
||
| − | SSH 鍵を追加するには: |
||
| + | GNOME Keyring は、[[SSH 鍵#ssh-agent|ssh-agent]] のラッパとして振る舞うことができます。このモードでは、SSH 鍵をアンロックする必要が生じた度に GUI パスワード入力ダイアログを表示します。このダイアログには、入力したパスワードを記憶するかどうか尋ねるチェックボックスが含まれています。このチェックボックスを選択すると、ログインキーリングがアンロックされている限り、今後そのキーを使用する際にパスワードを入力する必要が無くなります。 |
||
| − | $ ssh-add ~/.ssh/id_dsa |
||
| − | Enter passphrase for /home/mith/.ssh/id_dsa: |
||
| + | バージョン [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 移動されています]。 |
||
| − | 自動でロードされている鍵を確認するには: |
||
| + | |||
| + | === gcr をセットアップする === |
||
| + | |||
| + | やるべきことは: |
||
| + | |||
| + | # {{ic|gcr-ssh-agent.socket}} systemd [[ユーザーユニット]]を[[有効化]]する。 |
||
| + | # {{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}} をデフォルトシェルとして使用した場合に動作することが確認されています。 |
||
| + | |||
| + | 環境変数を設定する方法は[[環境変数#変数の定義|たくさんあります]]。使用するべき方法は、あなたのセットアップと好みに依ります。 |
||
| + | |||
| + | === 使用する === |
||
| + | |||
| + | 以下を実行することで、実行中のエージェントにロードされている SSH 鍵をリストアップできます: |
||
$ ssh-add -L |
$ ssh-add -L |
||
| + | これにより、適切なサービスが起動されていて、{{ic|SSH_AUTH_SOCK}} が適切に設定されていることを確認することができます。 |
||
| − | 全ての鍵を無効化するには: |
||
| + | |||
| + | パスフレーズをキーリングに永続的に保存するには、{{pkg|seahorse}} パッケージの ssh-askpass を使用してください: |
||
| + | |||
| + | $ /usr/lib/seahorse/ssh-askpass ''my_key'' |
||
| + | |||
| + | 他のディレクトリから SSH 鍵を手動で追加するには: |
||
| + | |||
| + | $ ssh-add ~/.private/id_rsa |
||
| + | Enter passphrase for ~/.private/id_rsa: |
||
| + | |||
| + | {{Note|秘密鍵と同じディレクトリ (上記の例では {{ic|~/.ssh/id_rsa.pub}}) に対応する ''.pub'' ファイルが必要です。また、公開鍵のファイル名が秘密鍵に ''.pub'' を付けた名前になっていることを確認してください (例: {{ic|my_key.pub}})。}} |
||
| + | |||
| + | 手動で追加した鍵をすべて無効化するには: |
||
$ ssh-add -D |
$ ssh-add -D |
||
| + | === 無効化する === |
||
| − | Now when you connect to a server, the key will be found and a dialog will popup asking you for the passphrase. It has an option to automatically unlock the key when you log in. If you check this, you will not need to enter your passphrase again! |
||
| + | 別の 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]。 |
||
| − | Alternatively, to permanently save the a passphrase in the keyring, use seahorse-ssh-askpass from package {{pkg|seahorse}}: |
||
| + | gcr-ssh-agent を無効化するには、{{ic|gcr-ssh-agent.socket}} と {{ic|gcr-ssh-agent.service}} を両方とも systemd で無効化・停止してください。 |
||
| − | /usr/lib/seahorse/seahorse-ssh-askpass my_key |
||
| + | == ヒントとテクニック == |
||
| − | {{Note|You have to have a have the corresponding {{ic|.pub}} file in the same directory as the private key ({{ic|~/.ssh/id_dsa.pub}} in the example). Also, make sure that the public key is the file name of the private key plus {{ic|.pub}} (for example, {{ic|my_key.pub}}).}} |
||
| − | == アプリケーションとの統合 == |
+ | === アプリケーションとの統合 === |
| + | * [[Chromium#特定のパスワードストアを強制する|Chromium]] |
||
| − | * [[Firefox#GNOME キーリングの統合]] |
||
| + | === キーリングをロックする === |
||
| − | == パスフレーズの消去 == |
||
| + | |||
| + | $ 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 -r -d |
||
| + | このコマンドは、gnome-keyring-daemon を開始し、以前の実行中のインスタンスを終了します。 |
||
| − | This command starts gnome-keyring-daemon, shutting down previously running instances. |
||
| + | |||
| + | === Git 統合 === |
||
| + | |||
| + | GNOME Keyring は、HTTPS 経由でプッシュするときに [[Git]] と一緒に使うと便利です。この機能を使用するには、{{Pkg|libsecret}} パッケージが[[#インストール|インストールされている必要があります]]。 |
||
| + | |||
| + | ''libsecret'' ヘルパーを使うように Git を設定してください: |
||
| + | |||
| + | $ git config --global credential.helper /usr/lib/git-core/git-credential-libsecret |
||
| + | |||
| + | これで、次回 {{ic|git push}} を実行したときに、キーリングがまだ解除されていない場合に解除するよう要求されます。 |
||
| + | |||
| + | === GnuPG 統合 === |
||
| + | |||
| + | GnuPG を使用するいくつかのアプリケーションは、{{ic|pinentry-program}} が設定されていることを要求します。GNOME 3 pinentry for GNOME Keyring を使用してパスフレーズのプロンプトを管理するようにするには、以下を設定してください: |
||
| + | |||
| + | {{hc|~/.gnupg/gpg-agent.conf| |
||
| + | pinentry-program /usr/bin/pinentry-gnome3 |
||
| + | }} |
||
| + | |||
| + | もう一つのオプションは、[[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'' という拡張子が付けられて保存されています。 |
||
| + | |||
| + | === キーリングのパスワードをユーザのパスワードへ自動的に変更する === |
||
| + | |||
| + | {{Note|これは、''login'' キーリングにしか影響しません。}} |
||
| + | |||
| + | {{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 デスクトップ ポータル#バックエンド]] を参照してください。 |
||
| + | |||
| + | == トラブルシューティング == |
||
| + | |||
| + | === パスワードが保存されない === |
||
| + | |||
| + | ログインするたびにパスワードプロンプトが表示され、パスワードが保存されない場合は、デフォルトのキーリングを作成/設定する必要がある場合があります。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: / === |
||
| + | |||
| + | Seahorse で新しいキーリングを追加しようとすると、以下の理由によりこのエラーが発生することがあります: |
||
| + | |||
| + | * {{ic|~/.local/share/keyrings/}} ディレクトリが存在しない。この場合、このディレクトリを作成してください。 |
||
| + | * カスタムの {{ic|~/.xinitrc}} が使用されている。これは以下の行を追加することで解決します[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}} [[ユーザーユニット]]を[[無効化]]することもできます。 |
||
| + | |||
| + | === キーリングの不適切な初期化 === |
||
| + | |||
| + | これによる症状としては: |
||
| + | |||
| + | * 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'' キーリングが適切に初期化されるはずです。 |
||
| − | == GNOME Keyring と Git == |
||
| + | * {{ic|gcr-ssh-agent.service}} systemd [[ユーザーユニット]]を、使用しているのであれば、[[再起動]]する。他のエージェントも再起動する必要があるかもしれません。 |
||
| − | The GNOME keyring is useful in conjuction with [[Git]] when you are pushing over HTTPS. |
||
| + | これで治らない場合は、[[#トラブルシューティング|キーリングを再設定する]]ことを検討してください。 |
||
| − | まず[[公式リポジトリ]]から {{pkg|libgnome-keyring}} パッケージをインストールしてください。 |
||
| + | == 参照 == |
||
| − | そしてヘルパーをコンパイルします: |
||
| − | $ cd /usr/share/git/credential/gnome-keyring |
||
| − | # make |
||
| − | ヘルパーを使うように Git を設定: |
||
| − | $ git config --global credential.helper /usr/lib/git-core/git-credential-gnome-keyring |
||
| − | Next time you do a ''git push'', you are asked to unlock your keyring, if not unlocked already. |
||
| + | * https://help.gnome.org/users/seahorse/stable/ |
||
| − | == 便利なツール == |
||
| + | * [https://wiki.gnome.org/action/show/Projects/GnomeKeyring GNOME Wiki ページ]{{Dead link|2024|11|05|status=403}} |
||
| − | ({{pkg|libsecret}} パッケージに含まれている) {{ic|secret-tool}} はコマンドラインから GNOME Keyring (やその他の [http://standards.freedesktop.org/secret-service/ DBus Secret Service API] を実装しているサービス) にアクセスすることができます。 |
||
| + | * [https://archlinux.org/packages/?q=org.freedesktop.secrets org.freedesktop.secrets を提供しているパッケージ] |
||
| + | {{TranslationStatus|GNOME/Keyring|2024-11-30|821751}} |
||
| − | AUR の {{AUR|gnome-keyring-query}} は GNOME Keyring からパスワードを問い合わせのに使うシンプルなコマンドラインツールです。 |
||
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-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 パッケージに含まれています) へと移動されています。
gcr をセットアップする
やるべきことは:
gcr-ssh-agent.socketsystemd ユーザーユニットを有効化する。gcr-ssh-agent.socketsystemd ユーザーユニットを一度開始する。これにより、ソケットファイル$XDG_RUNTIME_DIR/gcr/sshが作成されます。ファイルが作成されれば、最初のステップでソケットユニットが自動的に開始されるようになります。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-add -D
無効化する
別の SSH エージェントを実行したい場合 (例: ssh-agent や gpg-agent)、GNOME Keyring の ssh-agent ラッパを無効化するのは良い考えです。各エージェントは異なるソケットをリッスンし、SSH_AUTH_SOCK を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。ただし、GNOME の実装は BatchMode を含む多くのスクリプト機能を実装していないことに注意してください[3]。
gcr-ssh-agent を無効化するには、gcr-ssh-agent.socket と gcr-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 という拡張子が付けられて保存されています。
キーリングのパスワードをユーザのパスワードへ自動的に変更する
/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
関連する他の問題が発生していないのであれば、このメッセージは「安全に無視することができます」[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、.xinitrc、config.fish、その他の似たような場所から gnome-keyring-daemon を起動するコマンドを削除してください。あるいは、gnome-keyring-daemon.service と gnome-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.servicesystemd ユーザーユニットを再起動する。これにより、login キーリングが適切に初期化されるはずです。gcr-ssh-agent.servicesystemd ユーザーユニットを、使用しているのであれば、再起動する。他のエージェントも再起動する必要があるかもしれません。
これで治らない場合は、キーリングを再設定することを検討してください。