「GNOME/Keyring」の版間の差分
細 (→gcr をセットアップする: 修正) |
|||
(7人の利用者による、間の102版が非表示) | |||
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 のパスワードを空にしたり変更することが可能です。Seahorse を開いて、ドロップダウンメニューの "View" から "By Keyring" を選択してください。Passwords タブを開いて、"Passwords: login" を右クリックして "Change password" を選択してください。旧パスワードを入力してから新しいパスワードを入力します。暗号化されていないストレージを使用しているという警告が表示されるので "Use Unsafe Storage" を押して下さい。 |
||
+ | 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 やディスプレイマネージャを使用しない == |
||
− | === 自動ログイン === |
||
− | 自動ログインを使っている場合、ログインキーリングに空のパスワードを設定することでキーリングマネージャを無効化することができます。 |
||
− | {{Note|この場合はパスワードは暗号化されていない状態で保存されます。}} |
||
+ | GNOME/Keyring のセキュリティモデルによれば、信頼されないアプリケーションはユーザーのセッションバスソケットへのアクセスを許可されないであろうことから、GNOME プロジェクトはこの脆弱性レポートに[https://gitlab.gnome.org/GNOME/gnome-keyring/-/issues/5#note_1876550 同意していません]。 |
||
− | === コンソールログイン === |
||
− | コンソールによるログインを使っている場合、[[Wikipedia:Pluggable authentication module|PAM]] か [[xinitrc]] を使ってキーリングデーモンを起動することができます。PAM ではログイン時に自動的にキーリングのロックを解除することもできます。 |
||
+ | Flatpak によってサンドボックス化されているアプリケーションは、この影響を受けません。 |
||
− | ==== PAM を使う ==== |
||
− | {{ic|/etc/pam.d/login}} から gnome-keyring-daemon を起動: |
||
+ | == インストール == |
||
− | {{ic|auth}} セクションの最後に {{ic|auth optional pam_gnome_keyring.so}} を追加して {{ic|session}} セクションの最後に {{ic|session optional pam_gnome_keyring.so auto_start}} を追加してください。 |
||
+ | {{Pkg|gnome-keyring}} は {{Grp|gnome}} グループの一部なので、GNOME を使用しているのであればすでにインストールされています。また、このパッケージは単独でインストールすることもできます。他のアプリケーションにキーリングへのアクセス権を与えるために {{Pkg|libsecret}} もインストールする必要があります。{{Pkg|libgnome-keyring}} は非推奨になりました (後継は ''libsecret'' です) が、それでも特定のアプリケーションで必要になる場合があります。 |
||
− | {{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}} |
||
+ | gnome-keyring-daemon は、ログイン時に systemd ユーザーサービスを介して自動的に開始されます。また、ソケットを介して要求に応じて開始させることもできます。 |
||
− | 次に、{{ic|/etc/pam.d/passwd}} の最後に {{ic|password optional pam_gnome_keyring.so}} を追加してください。 |
||
− | {{hc|/etc/pam.d/passwd| |
||
− | <nowiki>#%PAM-1.0 |
||
+ | GNOME Keyring に関する追加のユーティリティは次の通りです: |
||
− | #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>}} |
||
+ | * {{App|secret-tool|コマンドラインから GNOME Keyring (や [https://specifications.freedesktop.org/secret-service/ DBus Secret Service API] を実装する他のサービス) にアクセスします。|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}} |
||
− | {{Note|自動でロックを解除したい場合、ユーザーアカウントとキーリングに同一のパスワードを設定する必要があります。}} |
||
+ | * {{App|lssecret|''libsecret'' を使用してすべてのシークレットアイテム (例えば、GNOME Keyring) を一覧表示します。|https://gitlab.com/GrantMoyer/lssecret|{{AUR|lssecret-git}}}} |
||
+ | == GUI で管理する == |
||
− | {{Note|You will still need the code in {{ic|~/.xinitrc}} below in order to export the environment variables required.}} |
||
+ | GNOME Keyring は Seahorse を使って管理することができます。{{Pkg|seahorse}} パッケージを[[インストール]]してください。 |
||
− | ==== xinitrc を使う ==== |
||
+ | キーリング (例えば、デフォルトキーリングである "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] を参照してください。 |
||
− | [[xinitrc]] から gnome-keyring-daemon を起動: |
||
+ | == キーリングを使用する == |
||
− | {{hc|~/.xinitrc|<nowiki> |
||
− | eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh) |
||
− | export SSH_AUTH_SOCK |
||
− | </nowiki>}} |
||
+ | [[PAM]] モジュール ''pam_gnome_keyring.so'' は、GNOME キーリングを部分的に初期化し、その過程でデフォルトの ''login'' キーリングのロックを解除します。gnome-keyring-daemon は systemd ユーザサービスによって自動的に開始されます。 |
||
− | スケルトンの {{ic|.xinitrc}} では D-Bus セッションが起動します。詳しくは {{bug|13986}} を参照。 |
||
+ | === PAM の手順 === |
||
− | {{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] を参照。}} |
||
+ | {{Note|'''自動ログインを使用しない場合に'''キーリングのロックを自動的にアンロックしたい場合、ユーザアカウントのパスワードとデフォルトのキーリングのパスワードを同じにする必要があります。[[#キーリングのパスワードをユーザのパスワードへ自動的に変更する]] を参照してください。}} |
||
− | キーリングからの情報の取得に問題が発生する場合、問題の環境で {{ic|DBUS_SESSION_BUS_ADDRESS}} がエクスポートされていることを確認してください ({{ic|DBUS_SESSION_BUS_PID}} はエクスポートされません)。 |
||
+ | {{Tip| |
||
− | Xfce で使う場合 [[Xfce#SSH_エージェント|SSH エージェント]]を参照。 |
||
+ | * 自動ログインを使用している場合にキーリングを自動的にアンロックするには、デフォルトのキーリングのパスワードを空白に設定すればよいです。この場合、キーリングの内容は暗号化されずに保存されることに注意してください。 |
||
+ | * あるいは、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}} 以外の適切なファイルを適切に編集してください。 |
||
− | == GNOME は使わないがディスプレイマネージャは使用する == |
||
− | ディスプレイマネージャを使う場合、ほとんどの場合、何も設定しなくてもキーリングは動作します。以下のディスプレイマネージャはログイン時にキーリングのロックを自動的に解除します: |
||
− | * GNOME のログインマネージャ {{pkg|gdm}} |
||
− | * Slim {{pkg|slim}} |
||
− | * LightDM {{pkg|lightdm}} |
||
− | {{Note| You may need to install {{pkg|libgnome-keyring}} }} |
||
− | KDM についは、[[KDM#KDM と Gnome-keyring]] を見て下さい。 |
||
− | + | コンソールベースのログインを行う場合は、{{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|~/.zshenv|<nowiki> |
||
− | if [ -n "$DESKTOP_SESSION" ];then |
||
− | eval $(gnome-keyring-daemon --start) |
||
− | export SSH_AUTH_SOCK |
||
− | fi</nowiki>}} |
||
+ | {{hc|/etc/pam.d/login| |
||
− | {{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].}} |
||
+ | #%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-agent|ssh-agent]])、GNOME Keyring デーモンの SSH コンポーネントを無効化する必要があります: |
||
− | # ln -sf /dev/null /etc/xdg/autostart/gnome-keyring-ssh.desktop |
||
− | ログアウトすることで変更が適用されます。 |
||
== 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 移動されています]。gnome-keyring-daemon の SSH 実装は完全に削除されることが[https://fedoraproject.org/wiki/Changes/ModularGnomeKeyring 計画されています]。 |
||
− | 自動でロードされている鍵を確認するには: |
||
+ | |||
+ | === gcr をセットアップする === |
||
+ | |||
+ | やるべきことは: |
||
+ | # {{ic|gcr-ssh-agent.socket}} systemd [[ユーザーユニット]]を[[有効化]]する。 |
||
+ | # SSH コマンドを実行する際に {{ic|SSH_AUTH_SOCK}} 環境変数を {{ic|$XDG_RUNTIME_DIR/gcr/ssh}} に設定しておく。環境変数を設定する方法は[[環境変数#変数の定義|たくさんあります]]。使用するべき方法は、あなたのセットアップと好みに依ります。 |
||
+ | |||
+ | === 使用する === |
||
+ | |||
+ | 以下を実行することで、実行中のエージェントにロードされている 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}} を使ってエージェントを選ぶことができるので、厳密には必須ではありませんが、デバッグの問題を簡単にできます。 |
||
− | 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 キーリングの統合]] |
||
− | == パスフレーズの消去 == |
+ | === パスフレーズの消去 === |
$ 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|これは、デフォルトのキーリングにしか影響しません。}} |
||
+ | |||
+ | {{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: / === |
||
+ | |||
+ | カスタムの {{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 と Git == |
||
− | The GNOME keyring is useful in conjuction with [[Git]] when you are pushing over HTTPS. |
||
+ | これは ''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|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 ページ] |
||
− | ({{pkg|libsecret}} パッケージに含まれている) {{ic|secret-tool}} はコマンドラインから GNOME Keyring (やその他の [http://standards.freedesktop.org/secret-service/ DBus Secret Service API] を実装しているサービス) にアクセスすることができます。 |
||
+ | {{TranslationStatus|GNOME/Keyring|2024-02-25|801104}} |
||
− | AUR の {{AUR|gnome-keyring-query}} は GNOME Keyring からパスワードを問い合わせのに使うシンプルなコマンドラインツールです。 |
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
ユーザーユニットを無効化することもできます。