Shell-Script

從命令行解鎖 Gnome Keyring Daemon

  • November 8, 2021

我正在嘗試通過直接向其傳遞密碼來從命令行解鎖 Gnome Keyring Daemon。我嘗試了一些 –daemonize、–login、–start 的變體,但我無法讓它工作。

echo $password | gnome-keyring-daemon --unlock返回SSH_AUTH_SOCK=/run/user/1000/keyring/ssh但不解鎖任何東西。

基本上我想要一些類似的東西:

gnome-keyring-daemon unlock --pw $password

不確定它是否有任何區別,但我使用的是 Manjaro i3wm 版本,所以不使用桌面環境。

背景:

我正在使用 KeePassXC 來管理我的密鑰環。這樣做的一個缺點是,我無法在登錄時自動解鎖密鑰環。由於我不想輸入兩個長密碼,因此我想出了以下腳本作為解決方法:

  • 登錄自動解鎖 Gnome Keyring Daemon
  • Gnome Keyring Daemon 包含(一部分)到 KeePassXC 的 PW 作為唯一條目
  • 在提示符中輸入密碼的最後一個字元
  • 殺死 Gnome 鑰匙圈守護程序
  • 使用組合密碼解鎖 KeePassXC

現在我想做相反的事情來再次鎖定 KeePassXC:

  • 從 KeePassXC 獲取 Gnome Keyring Daemon 的 PW
  • 殺死 KeePassXC
  • 解鎖 GnomeKeyringDaemon <- 這是我無法開始工作的部分

這是一種非常殘酷、骯髒且可能非常錯誤的方法,但在努力通過 SSH 解鎖我的密鑰環一段時間後,我想出了這個小腳本:

echo 'NOTE: This script will only work if launched via source or .' &gt;&2
echo -n 'Login password: ' &gt;&2
read -s _UNLOCK_PASSWORD || return
killall -q -u "$(whoami)" gnome-keyring-daemon
eval $(echo -n "${_UNLOCK_PASSWORD}" \
          | gnome-keyring-daemon --daemonize --login \
          | sed -e 's/^/export /')
unset _UNLOCK_PASSWORD
echo '' &gt;&2

是的,當我打電話. ~/bin/unlock-gnome-keyring並輸入我的登錄密碼時,它會解鎖我的登錄密鑰環,我可以seahorse通過遠端 X 執行查看它並通過 libsecret 應用程序使用它。

不過請注意,我不是安全專家,這樣做可能會帶來嚴重的安全隱患。我沒有檢查密碼是否在記憶體等中正確清除,這可能會使您更容易受到攻擊。

引用自:https://unix.stackexchange.com/questions/602313