
Я хочу иметь возможность удаленного доступа к своему рабочему столу GNOME. Проблема в том, что общий доступ к экрану GNOME использует связку ключей для хранения своего пароля. В результате для работы общего доступа вошедший в систему пользователь должен разблокировать связку ключей GNOME.
Моя проблема в том, что у меня включен автоматический вход в систему, и поэтому мой брелок остается заблокированным при запуске системы и отображении рабочего стола. Я могу начать демонстрацию экрана из CLI, используя соединение SSH с помощью:
# 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 не может получить доступ к связке ключей. Я попытался установить пароль от SSH на что-то новое с помощью secret-tool, но получаю ту же ошибку:
$ 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
Я все еще не могу получить доступ к keyring с помощью 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
Подводя итог, мой вопрос: как разблокировать связку ключей пользователя, который автоматически вошел в систему при загрузке, используя только оболочку SSH, созданную через VPN-соединение?
EDIT: Забыл упомянуть кое-что важное. Удаление пароля связки ключей (чтобы он был незащищен) решает проблему, но суть здесь в том, чтобы сохранить пароль связки ключей.
решение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