Де встановлюється 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.