Де встановлюється gnome-keyring $ SSH_AUTH_SOCK?


10

Я в процесі позбавлення від gnome-keyringагента SSH.

Те, що я зробив

  • Шукали в Інтернеті годинами.
  • Часто змінювали речі та перезапускали.
  • Нарешті, просто rm-повторили всі речі про автозапуск, пов'язані з SSH.

Останнє, що магічно спрацювало, оскільки там більше немає розетки для агента:

/run/user/[uid]/keyring/ssh

Проблема

Частина, що залишилася проблема в тому , що , не дивлячись на моє отримання прекрасний результат вищезазначеного, що - то в по- gnome-keyring, як і раніше наполягає на встановлення SSH_AUTH_SOCKв даний неіснуючої гніздо вище. Це як зомбі, ці речі ніколи не вмирають.

Питання

Що встановлює цю змінну і де це робиться?

Підводні камені

  • Я не запитую, як я можу скинути цю змінну до іншого значення.
  • Я не запитую, як я можу встановити це значення в масштабі системи або у файлі конфігурації оболонки.
  • Я не прошу, щоб якісь заклики вуду для init-script заморожували, встановлювали, скидали, скидали або замінювали що-небудь.
  • Я не прошу поради, як видалити річ: мені все одно потрібні для моїх паролів, і, здається, це найбільш інтегрований та відшліфований менеджер паролів у Gnome.

Я хочу, щоб ця річ була відключена, як і повинна бути.


2
Видалити gnome-keyring?
— rudimeier

1
@rudimeier: Мені все ще потрібен gnome-keyring для моїх паролів, і наскільки я знаю, у Gnome немає нічого більш відшліфованого та інтегрованого.
— JohnW

@rudimeier навіть це, здається, не допомагає. Я спробував це.
— Андре Борі

Відповіді:


8

Дозвольте здогадатися - ви використовуєте Wayland. Я зіткнувся з цією проблемою сьогодні і подумав, що поділюсь її рішенням.

Gnome-Session SSH_AUTH_SOCKз якихось причин має чітко кодовану переопрацювання під землею. Дивіться наступний комітет: https://github.com/GNOME/gnome-session/commit/a8896ccad65583885735a04205351f48a42f29ae

Вирішення проблеми? Встановити змінну оточення , щоб відключити цю поведінку: GSM_SKIP_SSH_AGENT_WORKAROUND=1. Це коротке замикання коду настройки середовища.

Для людей, які виявляють це, які також намагаються налаштувати ssh-агент: У моєму файлі системного блоку для ssh-агента я маю такий рядок:

ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

Повний файл виглядає приблизно так:

[Unit]
Description=SSH Agent
IgnoreOnIsolate=true

[Service]
Type=forking
Environment=SSH_AUTH_SOCK=%t/ssh-agent.socket
ExecStart=/usr/bin/ssh-agent -a $SSH_AUTH_SOCK
ExecStartPost=/usr/bin/bash -c "/usr/bin/systemctl --user set-environment SSH_AUTH_SOCK=$SSH_AUTH_SOCK GSM_SKIP_SSH_AGENT_WORKAROUND=1"

[Install]
WantedBy=default.target

Дякую! На Ubuntu v17.10 Artful Aardvark, просто додавши export GSM_SKIP_SSH_AGENT_WORKAROUND=1до мого ~ / .profile та перезавантаживши, виправили мою конфігурацію, яка раніше працювала на v17.04.
— Stephen Niedzielski

Це, здається, впливає більше, ніж просто Wayland, я зіткнувся з цим при спробі використання gnome-flashback + i3.
— dragon788

Зауважте, що цей хак працює до Gnome 3.24 або старшого віку ( wiki.archlinux.org/index.php/GNOME/… )
— Пабло Олмос де Агілера C.

5

(Навколишнє середовище OP невідоме, тому наведені тут шляхи знайдені на моїй машині Ubuntu)

Де gnome-keyring встановлює SSH_AUTH_SOCK?

Щоб відповісти на головне запитання в заголовку, SSH_AUTH_SOCK встановлюється за допомогою gnome-keyring у /usr/share/upstart/sessions/gnome-keyring-ssh.confтакій команді:

initctl set-env --global SSH_AUTH_SOCK=$SSH_AUTH_SOCK

Цитуючи initctlпосібник:

initctl set-env VARIABLE[=VALUE]

Додає або оновить змінну в таблиці середовища роботи. Змінені таким чином змінні застосовуватимуться до всіх згодом запущених процесів для роботи.

-g, --global

Працюйте над глобальною таблицею робочого середовища та всіма існуючими таблицями середовища роботи.

Звідки в першу чергу береться SSH_AUTH_SOCK?

initctlВище команда обумовлена тим , що змінна оточення SSH_AUTH_SOCK вже існує. Отже, це ситуація з куркою та яйцями? Що це встановлює?

SSH_AUTH_SOCK спочатку встановлюється оригінальним ssh-агентом, який запускається на самому початку X сеансу. Цитуючи посібник:

Створюється сокет UNIX-домену, а ім'я цього сокета зберігається в SSH_AUTH_SOCKзмінній середовища. Сокет доступний лише поточному користувачеві.

АЛЕ, що ssh компонент gnome-keyring робить підстановку себе на існуючий ssh-агент. Тому він перезаписує SSH_AUTH_SOCK з власним сокетом, /run/user/.../keyring-.../sshщоб додатки спілкувалися з ним, а не з ssh-агентом.

Як відключити

Тепер давайте відповімо на останнє речення "Я хочу, щоб ця річ була відключена". Оперативна програма хоче відключити перезапис SSH_AUTH_SOCK компонентом ssh в gnome-keyring. Вони хочуть повернути "справжню" змінну SSH_AUTH_SOCK, спочатку встановлену ssh-агентом.

Компонент ssh запускається тим самим сценарієм запуску, згаданим вище ( /usr/share/upstart/sessions/gnome-keyring-ssh.conf), але за однієї умови: рядок X-GNOME-Autostart-enabled=falseне повинен знаходитися в жодному з цих файлів:

  • (загальносистемний конф) /etc/xdg/autostart/gnome-keyring-ssh.desktop
  • (конфіденція користувача) ~/.config/autostart/gnome-keyring-ssh.desktop

Тому, якщо ви хочете відключити його, все, що вам потрібно зробити, - це додати рядок X-GNOME-Autostart-enabled=falseдо одного з цих файлів, бажано, до того, який є у вашому домі HOME.


Я намагався вимкнути записи автозапуску для ключів Gnome, і здається, що змінна все ще є, але вказує на неіснуючий сокет (тому відключення керування ключем працювало, але змінна встановлена ​​десь в іншому місці). Я запускаю машину Archlinux, тому немає запуску, і немає нічого очевидного в systemd, який би встановив змінну ..
— André Borie

@ AndréBorie Я не знаю ні Арки, ні системної. Яке нове значення шляху сокета? Що стосується мого macihne, ssh-агент зазвичай встановлює його /tmp/ssh-XXX/agent.PID. Чи є ssh-агент ще у вашому списку процесів?
— xhienne

Шлях так само, як і в оригінальному питанні. Не працює SSH-агентів, ані брелоків.
— Андре Борі

Ця відповідь справді стара, але я сподіваюся, що ви можете мені також допомогти unix.stackexchange.com/questions/422574/…
— Ojs

3

https://wiki.archlinux.org/index.php/GNOME/Keyring#Disable_keyring_daemon_components

Якщо ви хочете запустити альтернативний агент SSH (наприклад, ssh-агент або gpg-агент, вам потрібно відключити компонент ssh GNOME Keyring. Для цього потрібно зробити локальний обліковий запис:

mkdir ~/.config/autostart
cp /etc/xdg/autostart/gnome-keyring-ssh.desktop ~/.config/autostart/ &&
echo 'Hidden=true' >> ~/.config/autostart/gnome-keyring-ssh.desktop

Потім вийдіть із системи.

Легко відредагувавши, видаляючи, мабуть, марне використання printf


Це також працює для мене на Ubuntu 14.04.
— пт

Це справедливо для 3,24 та новіших.
— Пабло Олмос де Агілера C.

0

Станом на Gnome 3.18, здається, сокет зберігається в ~/.cache/keyring-(some random string)/ssh

Як здогадується, його встановлює gnome-keyring-демон.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.