Difference between revisions of "GNOME Keyring (简体中文)"

From ArchWiki
Jump to navigation Jump to search
(Add translation status.)
(update interlanguage links)
Tag: wiki-scripts
 
(14 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
[[Category:GNOME (简体中文)]]
 
[[Category:GNOME (简体中文)]]
 
[[en:GNOME/Keyring]]
 
[[en:GNOME/Keyring]]
[[es:GNOME/Keyring]]
+
[[es:GNOME (Español)/Keyring]]
 
[[ja:GNOME Keyring]]
 
[[ja:GNOME Keyring]]
 
{{TranslationStatus (简体中文)|GNOME Keyring|2019-01-31|565099}}
 
{{TranslationStatus (简体中文)|GNOME Keyring|2019-01-31|565099}}
Line 8: Line 8:
 
== 安装 ==
 
== 安装 ==
  
When using GNOME, {{Pkg|gnome-keyring}} is installed automatically as a part of the {{grp|gnome}} group. Otherwise [[install]] the {{Pkg|gnome-keyring}} package. Install {{Pkg|libsecret}} to allow applications to use your keyrings. {{Pkg|libgnome-keyring}} is deprecated, however, some applications may require it.
+
如果使用的是GNOME, {{Pkg|gnome-keyring}} 作为 {{grp|gnome}} 组的一个包自动安装。在其他情况下,请[[安装]] {{Pkg|gnome-keyring}} 包。安装{{Pkg|libsecret}}来让应用程序使用 keyrings。不推荐安装{{Pkg|libgnome-keyring}},除非有一些应用程序一定要用它。
  
Extra utilities related to GNOME keyring include:
+
与GNOME keyring相关的其他工具包括:
* {{App|secret-tool|Access the GNOME keyring (and any other service implementing the [http://standards.freedesktop.org/secret-service/ DBus Secret Service API]) from the command line.|https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}}
+
* {{App|secret-tool|通过命令行访问GNOME keyring (以及其他任何实现了[http://standards.freedesktop.org/secret-service/ DBus Secret Service API]的服务) |https://wiki.gnome.org/Projects/Libsecret|{{Pkg|libsecret}}}}
* {{App|gnome-keyring-query|Provides a simple command-line tool for querying passwords from the password store of the GNOME Keyring. (uses the deprecated {{Pkg|libgnome-keyring}})||{{AUR|gnome-keyring-query}}}}
+
* {{App|gnome-keyring-query|提供一个用于从GNOME Keyring的密码库查询密码的命令行工具, 但是用的是不推荐的{{Pkg|libgnome-keyring}}包。||{{AUR|gnome-keyring-query}}}}
* {{App|gkeyring|Query passwords from the command line. (uses the deprecated {{Pkg|libgnome-keyring}})|https://github.com/kparal/gkeyring|{{AUR|gkeyring}}, {{AUR|gkeyring-git}}}}
+
* {{App|gkeyring|从命令行查询密码,用的是不推荐的{{Pkg|libgnome-keyring}}包。|https://github.com/kparal/gkeyring|{{AUR|gkeyring}}, {{AUR|gkeyring-git}}}}
  
 
== 用GUI管理 ==
 
== 用GUI管理 ==
  
You can manage the contents of GNOME Keyring using Seahorse. [[Install]] it with the package {{Pkg|seahorse}}.
+
你可以通过Seahorse来管理GNOME Keyring的内容。[[安装]] {{Pkg|seahorse}} 包。
  
It is possible to leave the GNOME keyring password blank or change it. In seahorse, in the "View" drop-down menu, select "By Keyring". On the Passwords tab, right click on "Passwords: login" and pick "Change password." Enter the old password and leave empty the new password. You will be warned about using unencrypted storage; continue by pushing "Use Unsafe Storage."
+
留空或者更改GNOME keyring的密码是允许的。在seahorse里,在 "View" 下拉菜单里,选择 "By Keyring"。在Passwords标签页里,右键单击 "Passwords: login" 然后选择 "Change password." 输入旧密码然后留空新密码,你会收到警告说正在使用未加密的储存方式,如果确定请点击"Use Unsafe Storage."
  
 
== 在GNOME外部使用钥匙环 ==
 
== 在GNOME外部使用钥匙环 ==
Line 27: Line 27:
 
==== 自动登陆 ====
 
==== 自动登陆 ====
  
If you are using automatic login, then you can disable the keyring manager by setting a blank password on the login keyring.
+
如果你在用自动登陆,则需要把 login keyring 的密码设成空。
{{Note| The passwords are stored unencrypted in this case.}}
+
{{注意 | 所有密码会明文保存。}}
  
 
==== 控制台登陆 ====
 
==== 控制台登陆 ====
  
When using console-based login, the keyring daemon can be started by either [[PAM]] or [[xinitrc]]. PAM can also unlock the keyring automatically at login.
+
用控制台(tty)登陆的时候,可以用 [[PAM]] [[xinitrc]] 启动密钥环守护进程。如果用 PAM 的话它会在登陆时自动解锁密钥环。
  
 
===== 用PAM的方法 =====
 
===== 用PAM的方法 =====
  
Start the gnome-keyring-daemon from {{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}}
 
 
Add {{ic|auth optional pam_gnome_keyring.so}} at the end of the {{ic|auth}} section and {{ic|session optional pam_gnome_keyring.so auto_start}} at the end of the {{ic|session}} section.
 
  
 
{{hc|/etc/pam.d/login|
 
{{hc|/etc/pam.d/login|
Line 46: Line 44:
 
auth      requisite    pam_nologin.so
 
auth      requisite    pam_nologin.so
 
auth      include      system-local-login
 
auth      include      system-local-login
auth      optional    pam_gnome_keyring.so'''
+
'''auth      optional    pam_gnome_keyring.so'''
 
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 auto_start'''}}
+
'''session    optional    pam_gnome_keyring.so auto_start'''}}
  
For [[SDDM]], edit instead the configuration file {{ic|/etc/pam.d/sddm}}.
+
如果用的是 [[SDDM]], 编辑 {{ic|/etc/pam.d/sddm}}.
  
Next, for [[GDM]], add {{ic|password optional pam_gnome_keyring.so}} to the end of {{ic|/etc/pam.d/passwd}}.
+
[[GDM]], {{ic|/etc/pam.d/passwd}} 文件的最后添加 {{ic|password optional pam_gnome_keyring.so}}:
 
{{hc|/etc/pam.d/passwd|2=
 
{{hc|/etc/pam.d/passwd|2=
 
#%PAM-1.0
 
#%PAM-1.0
Line 60: Line 58:
 
#password required pam_unix.so sha512 shadow use_authtok
 
#password required pam_unix.so sha512 shadow use_authtok
 
password required pam_unix.so sha512 shadow nullok
 
password required pam_unix.so sha512 shadow nullok
password optional pam_gnome_keyring.so'''}}
+
'''password optional pam_gnome_keyring.so'''}}
  
{{Note|
+
{{注意|
* To use automatic unlocking, the same password for the user account and the keyring have to be set.
+
* 为了自动解锁,密钥环的密码需要和帐户登录密码一样。
* You will still need the code in {{ic|~/.xinitrc}} below in order to export the environment variables required.}}
+
* 依然需要按下面的章节的指示用 {{ic|~/.xinitrc}} 设置环境变量。}}
  
===== 用xinitrc的方法 =====
+
===== 用xinitrc启动 =====
  
Start the gnome-keyring-daemon from [[xinitrc]]:
+
把下面的代码添加到 {{ic|~/.xinitrc}} 里:
  
{{hc|~/.xinitrc|<nowiki>
+
{{hc|1=~/.xinitrc|2=
 
eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
 
eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
 
export SSH_AUTH_SOCK
 
export SSH_AUTH_SOCK
</nowiki>}}
+
}}
  
See [[Xfce#SSH agents]] for use in Xfce.
+
如果用的是 Xfce,参考 [[Xfce#SSH agents]]
  
If using [[i3]] and ssh is not showing the password prompt, giving the following error:
+
如果用 [[i3]] 而且 ssh 没有弹出输入密码的提示框而且报错:
  
 
  sign_and_send_pubkey: signing failed: agent refused operation
 
  sign_and_send_pubkey: signing failed: agent refused operation
 
  Permission denied (publickey).
 
  Permission denied (publickey).
  
then you need to add the DISPLAY environment variable to dbus-daemon via the .xinitrc:
+
那你需要在 {{ic|~/.xinitrc}} 里添加下面的代码来给 dbus-daemon 设置 DISPLAY 环境变量:
  
{{hc|~/.xinitrc|<nowiki>
+
{{hc|1=~/.xinitrc|2=
 
dbus-update-activation-environment --systemd DISPLAY
 
dbus-update-activation-environment --systemd DISPLAY
 
eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
 
eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
Line 91: Line 89:
 
...
 
...
 
exec i3
 
exec i3
</nowiki>}}
+
}}
  
{{note|If you use a different location for {{ic|~/.Xauthority}} ({{ic|XAUTHORITY}}) then you will have to also include this environment variable in the aforementioned {{ic|dbus-update-activation-environment}} command.}}
+
{{注意|如果你的 {{ic|.Xauthority}} 不在默认位置 {{ic|~/.Xauthority}},那你还得在 {{ic|dbus-update-activation-environment}} 的 {{ic|DISPLAY}} 后面添上 {{ic|XAUTHORITY}}。}}
  
=== 有可视化管理软件的情况下 ===
+
=== 使用显示管理器 ===
  
When using a display manager, the keyring works out of the box for most cases. The following display managers automatically unlock the keyring once you log in:
+
如果用显示管理器(display manager),基本上不需要进行配置。下面这些显示管理器会在登录时自动解锁密钥环:
* [[GDM]]
+
* [[GDM (简体中文)]]
* [[LightDM]]
+
* [[LightDM (简体中文)]]
* [[LXDM]]
+
* [[LXDM (简体中文)]]
* [[SDDM]]
+
* [[SDDM (简体中文)]]
  
For GDM and LightDM, note the keyring [https://wiki.gnome.org/Projects/GnomeKeyring/Pam must be] named ''login'' to be automatically unlocked.
+
对于 GDM LightDM, 密钥环 [https://wiki.gnome.org/Projects/GnomeKeyring/Pam 必须] 被命名为 ''login'' 来实现自动解锁。
  
To enable the keyring for applications run through the terminal, such as SSH, add the following to your {{ic|~/.bash_profile}}, {{ic|~/.zshenv}}, or similar:
+
如果要让在终端运行的程序也能访问密钥环(比如SSH),请添加下面的内容到 {{ic|~/.bash_profile}}{{ic|~/.zshenv}}或者类似的环境变量声明文件里:
  
 
{{hc|~/.bash_profile|<nowiki>
 
{{hc|~/.bash_profile|<nowiki>
Line 113: Line 111:
 
fi</nowiki>}}
 
fi</nowiki>}}
  
== SSH钥匙 ==
+
== SSH密钥 ==
  
To add your SSH key:
+
添加密钥:
  
 
  $ ssh-add ~/.ssh/id_rsa
 
  $ ssh-add ~/.ssh/id_rsa
 
  Enter passphrase for /home/mith/.ssh/id_rsa:
 
  Enter passphrase for /home/mith/.ssh/id_rsa:
  
To list automatically loaded keys:
+
列出自动加载的密钥:
  
 
  $ ssh-add -L
 
  $ ssh-add -L
  
To disable all keys:
+
禁用全部密钥:
  
 
  $ 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用密钥的时候就不需要再输密码。
  
Alternatively, to permanently save the a passphrase in the keyring, use ssh-askpass from package {{pkg|seahorse}}:
+
或者如果要永久储存密码到密钥环里的话,用 {{pkg|seahorse}} 提供的 {{ic|ssh-askpass}} 命令:
  
  /usr/lib/seahorse/ssh-askpass my_key
+
  /usr/lib/seahorse/ssh-askpass ''my_key''
 +
 
 +
{{注意|你需要把对应的 {{ic|.pub}} (公钥文件)放到和私钥相同的目录里 (例子里公钥是{{ic|~/.ssh/id_rsa.pub}}),而且公钥文件的全名应该是私钥文件的名字加上扩展名 {{ic|.pub}}。}}
  
{{Note|You have to have the corresponding {{ic|.pub}} file in the same directory as the private key ({{ic|~/.ssh/id_rsa.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}}).}}
 
 
=== Start SSH and Secrets components of keyring daemon ===
 
=== Start SSH and Secrets components of keyring daemon ===
  
If you are starting Gnome Keyring with a display manager or the Pam method described above and you are NOT using Gnome, Unity or Mate as your desktop you may find that the SSH and Secrets components are not being started automatically.
+
如果你用显示管理器或者PAM启动了 Gnome Keyring 但是你的桌面不是 Gnome, Unity or Mate,SSH 和 Secrets 组件可能不会自动启动。所以你需要把 {{ic|gnome-keyring-ssh.desktop}} 和 {{ic|gnome-keyring-secrets.desktop}} 从 {{ic|/etc/xdg/autostart/}} 里复制到 {{ic|~/.config/autostart/}},而且删除文件里面的 {{ic|OnlyShowIn}}。下面是例子
You can fix this by copying the desktop files gnome-keyring-ssh.desktop and gnome-keyring-secrets.desktop from /etc/xdg/autostart/ to ~/.config/autostart/ and deleting the OnlyShowIn line.
 
  
 
  $ cp /etc/xdg/autostart/{gnome-keyring-secrets.desktop,gnome-keyring-ssh.desktop} ~/.config/autostart/
 
  $ cp /etc/xdg/autostart/{gnome-keyring-secrets.desktop,gnome-keyring-ssh.desktop} ~/.config/autostart/
Line 144: Line 142:
 
  $ sed -i '/^OnlyShowIn.*$/d' ~/.config/autostart/gnome-keyring-ssh.desktop
 
  $ sed -i '/^OnlyShowIn.*$/d' ~/.config/autostart/gnome-keyring-ssh.desktop
  
=== 禁止钥匙环的守护进程组件 ===
+
=== 禁用钥匙环的守护进程组件 ===
  
If you wish to run an alternative SSH agent (e.g. [[SSH keys#ssh-agent|ssh-agent]] or [[GnuPG#gpg-agent|gpg-agent]], you need to disable the {{ic|ssh}} component of GNOME Keyring.
+
如果你想要用别的 SSH 客户端,比如[[SSH keys#ssh-agent|ssh-agent]][[GnuPG#gpg-agent|gpg-agent]],你需要禁用 GNOME Keyring的 {{ic|ssh}} 组件。如果只想对某个用户做这种更改,复制 {{ic|/etc/xdg/autostart/gnome-keyring-ssh.desktop}} {{ic|~/.config/autostart}} 然后往 {{ic|~/.config/autostart/gnome-keyring-ssh.desktop}}里面添加 {{ic|1=Hidden=true}}。然后重新登录。
To do so in an account-local way, copy {{ic|/etc/xdg/autostart/gnome-keyring-ssh.desktop}} to {{ic|~/.config/autostart}} and then append the line {{ic|1=Hidden=true}} to the copied file. Then log out.
 
  
{{Note|In case you use [[GNOME]] 3.24 or older on [[Wayland]], gnome-shell will overwrite {{ic|SSH_AUTH_SOCK}} to point to gnome-keyring regardless if it is running or not. To prevent this, you need to set the environment variable GSM_SKIP_SSH_AGENT_WORKAROUND before gnome-shell is started. One way to do this is to add the line {{ic|1=GSM_SKIP_SSH_AGENT_WORKAROUND DEFAULT=1}} to {{ic|~/.pam_environment}}.}}
+
{{注意|如果你用的是基于 [[Wayland]] 的 [[GNOME]] 3.24 或者更老的版本,gnome-shell 会让 {{ic|SSH_AUTH_SOCK}} 指向 gnome-keyring(无论它有没有运行)。为了阻止这个,你需要在 gnome-shell 启动之前设置 {{ic|GSM_SKIP_SSH_AGENT_WORKAROUND}} 环境变量,比如把 {{ic|1=GSM_SKIP_SSH_AGENT_WORKAROUND DEFAULT=1}} 添加到 {{ic|~/.pam_environment}}}}
  
 
== 提示与小技巧 ==
 
== 提示与小技巧 ==
Line 161: Line 158:
 
  gnome-keyring-daemon -r -d
 
  gnome-keyring-daemon -r -d
  
This command starts gnome-keyring-daemon, shutting down previously running instances.
+
这个命令会启动新的 gnome keyring 守护进程并把之前运行的 gnome keyring 都关掉。
  
 
=== Git的插件 ===
 
=== Git的插件 ===
  
The GNOME keyring is useful in conjuction with [[Git]] when you are pushing over HTTPS.
+
如果你用 HTTPS 来 push [[Git]],GNOME keyring 很有用。
  
[[Install]] the {{Pkg|libsecret}} package.
+
[[安装]] {{Pkg|libsecret}}
  
Set Git up to use the helper:
+
配置 Git 使用 gnome kerying:
 
  $ git config --global credential.helper /usr/lib/git-core/git-credential-libsecret
 
  $ git config --global credential.helper /usr/lib/git-core/git-credential-libsecret
  
Next time you do a ''git push'', you are asked to unlock your keyring, if not unlocked already.
+
下一次 ''git push'' 的时候如果你没有解锁密钥环,它会提示你解锁。
  
 
=== GnuPG的插件 ===
 
=== GnuPG的插件 ===
  
Several applications which use GnuPG require a {{ic|pinentry-program}} to be set. Set the following to use Gnome 3 pinentry for Gnome Keyring to manage passphrase prompts.
+
某些使用 GnuPG 的程序要求指定 {{ic|pinentry-program}}。 在 {{ic|~/.gnupg/gpg-agent.conf}} 里添加以下内容来让 Gnome 3 pinentry for Gnome Keyring 去管理密码弹窗(passphrase prompts)。
  
{{hc|~/.gnupg/gpg-agent.conf|<nowiki>
+
{{hc|1=~/.gnupg/gpg-agent.conf|2=
 
pinentry-program /usr/bin/pinentry-gnome3
 
pinentry-program /usr/bin/pinentry-gnome3
</nowiki>}}
+
}}
  
Another option is to [[GnuPG#Unattended_passphrase|force loopback for GPG]] which should allow the passphrase to be entered in the application.
+
或者可以使用 [[GnuPG#Unattended_passphrase|force loopback for GPG]] 来实现在应用内输入密码。
  
 
== 故障排除 ==
 
== 故障排除 ==
Line 193: Line 190:
 
如果在左边的一竖排中没看到钥匙环 (一个锁一样的图标), 打开“文件” > “新建” > “密码钥匙环”,然后取一个名字,你可能会被要求输入一个密码。如果你没有给钥匙环密码,钥匙环将会自动解锁,即使使用自动登陆,密码也不会被安全保存。最后,右键你创建的钥匙环并选择“设为默认”。
 
如果在左边的一竖排中没看到钥匙环 (一个锁一样的图标), 打开“文件” > “新建” > “密码钥匙环”,然后取一个名字,你可能会被要求输入一个密码。如果你没有给钥匙环密码,钥匙环将会自动解锁,即使使用自动登陆,密码也不会被安全保存。最后,右键你创建的钥匙环并选择“设为默认”。
  
=== 重置钥匙环 ===
+
=== 重置密钥环 ===
 
 
If you get the error "The password you use to login to your computer no longer matches that of your login keyring", you can simply reset your gnome keyring.
 
  
Remove "login.keyring" and "user.keystore" from ''/home/{username}/.local/share/keyrings/''. After removing the files, simply log out and log in again. Obviously, this will remove your saved keys.
+
如果报错 "The password you use to login to your computer no longer matches that of your login keyring", 你可能要重置密钥环。
 +
{{警告|密钥环里的所有密码都会丢失。}}
 +
删掉 {{ic|~/.local/share/keyrings/}} 里的 "login.keyring" and "user.keystore",然后重新登录。
  
 
== 参见 ==
 
== 参见 ==
 
* [https://wiki.gnome.org/action/show/Projects/GnomeKeyring  GNOME wiki]
 
* [https://wiki.gnome.org/action/show/Projects/GnomeKeyring  GNOME wiki]

Latest revision as of 06:56, 20 September 2019

翻译状态: 本文是英文页面 GNOME Keyring翻译,最后翻译时间:2019-01-31,点击这里可以查看翻译后英文页面的改动。

GNOME Keyring is "a collection of components in GNOME that store secrets, passwords, keys, certificates and make them available to applications."

安装

如果使用的是GNOME, gnome-keyring 作为 gnome 组的一个包自动安装。在其他情况下,请安装 gnome-keyring 包。安装libsecret来让应用程序使用 keyrings。不推荐安装libgnome-keyring,除非有一些应用程序一定要用它。

与GNOME keyring相关的其他工具包括:

  • secret-tool — 通过命令行访问GNOME keyring (以及其他任何实现了DBus Secret Service API的服务) 。
https://wiki.gnome.org/Projects/Libsecret || libsecret
  • gnome-keyring-query — 提供一个用于从GNOME Keyring的密码库查询密码的命令行工具, 但是用的是不推荐的libgnome-keyring包。
|| gnome-keyring-queryAUR
  • gkeyring — 从命令行查询密码,用的是不推荐的libgnome-keyring包。
https://github.com/kparal/gkeyring || gkeyringAUR, gkeyring-gitAUR

用GUI管理

你可以通过Seahorse来管理GNOME Keyring的内容。安装 seahorse 包。

留空或者更改GNOME keyring的密码是允许的。在seahorse里,在 "View" 下拉菜单里,选择 "By Keyring"。在Passwords标签页里,右键单击 "Passwords: login" 然后选择 "Change password." 输入旧密码然后留空新密码,你会收到警告说正在使用未加密的储存方式,如果确定请点击"Use Unsafe Storage."

在GNOME外部使用钥匙环

没有可视化管理软件的情况下

自动登陆

如果你在用自动登陆,则需要把 login keyring 的密码设成空。

注意: 所有密码会明文保存。

控制台登陆

用控制台(tty)登陆的时候,可以用 PAMxinitrc 启动密钥环守护进程。如果用 PAM 的话它会在登陆时自动解锁密钥环。

用PAM的方法

编辑 /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

如果用的是 SDDM, 编辑 /etc/pam.d/sddm.

GDM, 在 /etc/pam.d/passwd 文件的最后添加 password optional pam_gnome_keyring.so

/etc/pam.d/passwd
#%PAM-1.0

#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
注意:
  • 为了自动解锁,密钥环的密码需要和帐户登录密码一样。
  • 依然需要按下面的章节的指示用 ~/.xinitrc 设置环境变量。
用xinitrc启动

把下面的代码添加到 ~/.xinitrc 里:

~/.xinitrc
eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
export SSH_AUTH_SOCK

如果用的是 Xfce,参考 Xfce#SSH agents

如果用 i3 而且 ssh 没有弹出输入密码的提示框而且报错:

sign_and_send_pubkey: signing failed: agent refused operation
Permission denied (publickey).

那你需要在 ~/.xinitrc 里添加下面的代码来给 dbus-daemon 设置 DISPLAY 环境变量:

~/.xinitrc
dbus-update-activation-environment --systemd DISPLAY
eval $(/usr/bin/gnome-keyring-daemon --start --components=pkcs11,secrets,ssh)
export SSH_AUTH_SOCK

...
exec i3
注意: 如果你的 .Xauthority 不在默认位置 ~/.Xauthority,那你还得在 dbus-update-activation-environmentDISPLAY 后面添上 XAUTHORITY

使用显示管理器

如果用显示管理器(display manager),基本上不需要进行配置。下面这些显示管理器会在登录时自动解锁密钥环:

对于 GDM 和 LightDM, 密钥环 必须 被命名为 login 来实现自动解锁。

如果要让在终端运行的程序也能访问密钥环(比如SSH),请添加下面的内容到 ~/.bash_profile~/.zshenv或者类似的环境变量声明文件里:

~/.bash_profile
if [ -n "$DESKTOP_SESSION" ];then
    eval $(gnome-keyring-daemon --start)
    export SSH_AUTH_SOCK
fi

SSH密钥

添加密钥:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/mith/.ssh/id_rsa:

列出自动加载的密钥:

$ ssh-add -L

禁用全部密钥:

$ ssh-add -D

导入密钥之后,ssh连接远程服务器的时候,会弹出一个对话框要你输入这个密钥的密码。如果你勾上登录时自动解锁密钥,那以后ssh用密钥的时候就不需要再输密码。

或者如果要永久储存密码到密钥环里的话,用 seahorse 提供的 ssh-askpass 命令:

/usr/lib/seahorse/ssh-askpass my_key
注意: 你需要把对应的 .pub (公钥文件)放到和私钥相同的目录里 (例子里公钥是~/.ssh/id_rsa.pub),而且公钥文件的全名应该是私钥文件的名字加上扩展名 .pub

Start SSH and Secrets components of keyring daemon

如果你用显示管理器或者PAM启动了 Gnome Keyring 但是你的桌面不是 Gnome, Unity or Mate,SSH 和 Secrets 组件可能不会自动启动。所以你需要把 gnome-keyring-ssh.desktopgnome-keyring-secrets.desktop/etc/xdg/autostart/ 里复制到 ~/.config/autostart/,而且删除文件里面的 OnlyShowIn。下面是例子

$ 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

禁用钥匙环的守护进程组件

如果你想要用别的 SSH 客户端,比如ssh-agentgpg-agent,你需要禁用 GNOME Keyring的 ssh 组件。如果只想对某个用户做这种更改,复制 /etc/xdg/autostart/gnome-keyring-ssh.desktop~/.config/autostart 然后往 ~/.config/autostart/gnome-keyring-ssh.desktop里面添加 Hidden=true。然后重新登录。

注意: 如果你用的是基于 WaylandGNOME 3.24 或者更老的版本,gnome-shell 会让 SSH_AUTH_SOCK 指向 gnome-keyring(无论它有没有运行)。为了阻止这个,你需要在 gnome-shell 启动之前设置 GSM_SKIP_SSH_AGENT_WORKAROUND 环境变量,比如把 GSM_SKIP_SSH_AGENT_WORKAROUND DEFAULT=1 添加到 ~/.pam_environment

提示与小技巧

软件中的插件

去除密码

gnome-keyring-daemon -r -d

这个命令会启动新的 gnome keyring 守护进程并把之前运行的 gnome keyring 都关掉。

Git的插件

如果你用 HTTPS 来 push Git,GNOME keyring 很有用。

安装 libsecret

配置 Git 使用 gnome kerying:

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

下一次 git push 的时候如果你没有解锁密钥环,它会提示你解锁。

GnuPG的插件

某些使用 GnuPG 的程序要求指定 pinentry-program。 在 ~/.gnupg/gpg-agent.conf 里添加以下内容来让 Gnome 3 pinentry for Gnome Keyring 去管理密码弹窗(passphrase prompts)。

~/.gnupg/gpg-agent.conf
pinentry-program /usr/bin/pinentry-gnome3

或者可以使用 force loopback for GPG 来实现在应用内输入密码。

故障排除

密码没被记住

如果你每次登陆的时候都收到密码提示框,并且你发现你的密码没有被自动保持你可能需要创建或设置一个默认钥匙环

确保 seahorse 包已经 安装了, 打开它 (系统设置中的"密码和密钥") 并且选中“视图” > “根据钥匙环”。 如果在左边的一竖排中没看到钥匙环 (一个锁一样的图标), 打开“文件” > “新建” > “密码钥匙环”,然后取一个名字,你可能会被要求输入一个密码。如果你没有给钥匙环密码,钥匙环将会自动解锁,即使使用自动登陆,密码也不会被安全保存。最后,右键你创建的钥匙环并选择“设为默认”。

重置密钥环

如果报错 "The password you use to login to your computer no longer matches that of your login keyring", 你可能要重置密钥环。

警告: 密钥环里的所有密码都会丢失。

删掉 ~/.local/share/keyrings/ 里的 "login.keyring" and "user.keystore",然后重新登录。

参见