GNOME/Keyring - Arch Linux 中文维基

跳至內容

# GNOME/Keyring

出自 Arch Linux 中文维基
< GNOME
翻譯狀態：

- 本文（或部分內容）譯自 GNOME Keyring，最近一次同步於 2020-04-28，若英文版本有所更改，則您可以幫助同步與翻譯更改的內容。
- 您可以在 ArchWiki 的對應頁面找到本文翻譯的原始修訂歷史。
- 本文可能與英文原文存在出入。

GNOME Keyring 是 GNOME 提供的一組工具，能夠存儲秘密、密碼、密鑰、認證並提供給其它程序使用。

## 安裝

如果使用的是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[損壞的連結：package not found], gkeyring-gitAUR[損壞的連結：package not found]

## 用GUI管理

你可以通過Seahorse來管理GNOME Keyring的內容。安裝 seahorse包 包。

留空或者更改GNOME keyring的密碼是允許的。在seahorse裡，在 "View" 下拉菜單裡，選擇 "By Keyring"。在Passwords標籤頁裡，右鍵單擊 "Passwords: login" 然後選擇 "Change password." 輸入舊密碼然後留空新密碼，你會收到警告說正在使用未加密的儲存方式，如果確定請點擊"Use Unsafe Storage."

## 在GNOME外部使用鑰匙環

### 沒有可視化管理軟體的情況下

#### 自動登錄

如果你在用自動登錄，則需要把 login keyring 的密碼設成空。

注意：所有密碼會明文保存。

#### 控制台登錄

用控制台（tty）登錄的時候，可以用 PAM 或 xinitrc 啟動密鑰環守護進程。如果用 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。

### 使用顯示管理器

如果用顯示管理器（display manager），基本上不需要進行配置。下面這些顯示管理器會在登錄時自動解鎖密鑰環：

- GDM
- LightDM
- LXDM
- SDDM

對於 GDM 和 LightDM, 密鑰環必須被命名為 login 來實現自動解鎖。

如果要讓在終端運行的程序也能訪問密鑰環（比如SSH），請添加下面的內容到 `~/.bash_profile`、`~/.zshenv`或者類似的環境變量聲明文件裡:

    ~/.bash_profile

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

    ~/.config/fish/config.fish

    if test -n "$DESKTOP_SESSION"
        set (gnome-keyring-daemon --start | string split "=")
    end

## 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.desktop` 和 `gnome-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-agent、gpg-agent，你需要禁用 GNOME Keyring的 `ssh` 組件。如果只想對某個用戶做這種更改，複製 `/etc/xdg/autostart/gnome-keyring-ssh.desktop` 到 `~/.config/autostart` 然後往 `~/.config/autostart/gnome-keyring-ssh.desktop`裡面添加 `Hidden=true`。然後重新登錄。

注意：如果你用的是基於 Wayland 的 GNOME 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`。

## 提示與小技巧

### 軟體中的插件

- Chromium

### 去除密碼

    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", 可能要重置密鑰環。在 seahorse 中右鍵點擊 「默認密鑰」，並選擇修改密碼。

也可以刪除 `~/.local/share/keyrings/` 中的 "login.keyring" and "user.keystore"，密鑰環裡的所有密碼都會丟失，刪除後重新登錄。

## 參見

- GNOME wiki

分類：​

- GNOME
- 包含損壞的軟體包連結的頁面

GNOME/Keyring
新增話題