自動ログインしたユーザーのキーリングのロックを解除する

自動ログインしたユーザーのキーリングのロックを解除する

GNOME デスクトップにリモートでアクセスできるようにしたいのですが、問題は、GNOME の画面共有がパスワードを保存するためにキーリングを使用していることです。その結果、共有を機能させるには、ログインしているユーザーが GNOME キーリングのロックを解除する必要があります。

私の問題は、自動ログインが有効になっているため、システムが起動してデスクトップが表示されてもキーリングがロックされたままになることです。次の SSH 接続を使用して CLI から画面共有を開始できます。

# allow screen control
gsettings set org.gnome.desktop.remote-desktop.vnc view-only false
# use password authentication for VNC
gsettings set org.gnome.desktop.remote-desktop.vnc auth-method 'password'
# start sharing service
systemctl --user start gnome-remote-desktop 

残念ながら、接続しようとすると、gnome-remote-desktop がキーリングにアクセスできないため、パスワード交換は失敗します。secret-tool を使用して SSH から新しいパスワードを設定しようとしましたが、同じエラーが発生します。

$ echo -n "random_pass" | secret-tool store --label="GNOME Remote Desktop VNC password" "xdg:schema" "org.gnome.RemoteDesktop.VncPassword"
secret-tool: Cannot create an item in a locked collection

コマンドラインからキーリングのロックを解除しようとしましたが、うまくいかないようです:

$ read -p "Enter your password: " -s pw && ( echo $pw | gnome-keyring-daemon --unlock )
Enter your password: SSH_AUTH_SOCK=/run/user/1000/keyring/ssh

まだ secret-tool でキーリングにアクセスできません。というパッケージもインストールしましたdnf install python3-keyringが、ロック解除に失敗します:

[user@fedora ~]$ keyring set "xdg:schema" "org.gnome.RemoteDesktop.VncPassword"
Password for 'org.gnome.RemoteDesktop.VncPassword' in 'xdg:schema':
Traceback (most recent call last):
  File "/usr/bin/keyring", line 33, in <module>
    sys.exit(load_entry_point('keyring==21.8.0', 'console_scripts', 'keyring')())
  File "/usr/lib/python3.10/site-packages/keyring/cli.py", line 133, in main
    return cli.run(argv)
  File "/usr/lib/python3.10/site-packages/keyring/cli.py", line 88, in run
    set_password(service, username, password)
  File "/usr/lib/python3.10/site-packages/keyring/core.py", line 60, in set_password
    get_keyring().set_password(service_name, username, password)
  File "/usr/lib/python3.10/site-packages/keyring/backends/SecretService.py", line 87, in set_password
    collection = self.get_preferred_collection()
  File "/usr/lib/python3.10/site-packages/keyring/backends/SecretService.py", line 67, in get_preferred_collection
    raise KeyringLocked("Failed to unlock the collection!")
keyring.errors.KeyringLocked: Failed to unlock the collection!

注: これらはすべて Fedora 35 上で実行されています

要約すると、私の質問は次のとおりです。VPN 接続経由で作成された SSH シェルのみを使用して、起動時に自動的にログインしたユーザーのキーリングのロックを解除するにはどうすればよいですか?

編集: 重要なことを忘れていました。キーリングのパスワードを削除すると (保護が解除されるように) 問題は解決しますが、ここでのポイントはキーリングのパスワードを保持することです。

答え1

ついに実用的な解決策を見つけましたUNIX StackExchangeからのこの投稿基本的にはスクリプトを作成する調達する必要があるSSH リモート ログイン セッションから:

echo 'NOTE: This script will only work if launched via source or .' >&2
echo -n 'Login password: ' >&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 '' >&2

関連情報