vitus_wagner: My photo 2005 (Default)
[personal profile] vitus_wagner

Наткнулся на засаду в своей технологии подцепления свежего ssh-agent-а при коннекте к скрину, которая у меня тут обсуждалась. Пока сидел на удаленке в деревне, проблем не было.

А как приехал домой и рядом с десктопом открыл ноутбук, тут-то оно и вылезло.

Как оказалось, предлагаемое мной решение перебивает агента от предыдуших сессий агентом от последней сессии. И если эта сессия закрылась раньше предыдущих, агент пропадает совсем.

Когда речь идет о нескольких ssh-сессиях внутрь одного screen проблемы нет - ну открыл еще одну, новую ssh-сессию. Десктопная-то сессия, к которой у тебя привязан агент, одна и та же все равно.

А тут есть две десктопные сессии - на ноутбуке и на десктопе, и если зачем-то заходишь на десктоп с ноутбука (ну скажем посмотреть куда оттуда файлы копировать) то после закрытия этой сессии, всем ssh открытым на десктопе, становится плохо. Вплоть до того, что закрытие лоскального скрина не помогает заново прицепиться к локальному агенту. А вот десктопную сессию целиком закрывать и переоткрывать жалко. Там кроме скрина с удаленными ssh-сессиями еще браузер с вкладками, мессенджеры всякие и т.д.

Уточняю постановку задачи - некоторое время назад мне удалось добиться, чтобы по умолчанию любая консольная программа у меня запускалась внутри мультиплексора терминалов, независимо от того, локально или по ssh я ее запускаю.

То есть для того чтобы открыть xterm, который тут же при старте не приаттачится к запущенному screen, нужно было специально об этом задуматься и залезть глубоко в меню. Ну а чтобы по ssh зайти и не приаттачиться к тамошнему скрину - такой вариант вообще не предусмотрен. Потому что связь может оборваться в любой момент, и обрыв связи - не повод прерывать компиляцию или тесты.

При этом предусмотрено то, что далеко не на все машины куда я могу зайти по ssh, я могу зайти снаружи, не зайдя предварительно на какую-нибудь другую из машин в той же локальной сети. Ну и scp или rsync я постоянно пользуюсь, поэтому в любой сессии должен быть доступен ssh-agent. То что агент не доступен, если меня нет за экраном - это не баг а фича. Но если я зашел на машину, мой агент должен быть со всех уже работющих на ней консольных сессий доступен.

Поэтому когда я захожу на машину по ssh, последняя вновь созданная сессия перенаправляет симлинк, на который указывает SSH_AUTH_SOCK всех сессий в скрине этой машины, на свой сокет. В случае пока я в каждый конкретный момент хожу с одного компьютера - это работает. Еслип вдруг у меня оказывается несколько одновременных сессий с разными работающими агентами, начинаются чудеса. Еще чудеса начинаются если организовать цикл из ssh-соединений. Но это пока не уперлось.

Пока приходит в голову следующее решение - прежде чем переназначать общий для всех сессий на данной машине симлинк, проверить, а слушает ли тот сокет, на который он сейчас указывает, какой-то агент, и переназначать к себе, только если агента там нет. (причем, естественно, в GUI-шных сессиях этого не делать).

Date: 2020-10-07 09:46 am (UTC)
filin: (Default)
From: [personal profile] filin

Зайди на десктопе по ssh на него же самого.

Date: 2020-10-07 06:42 pm (UTC)
filin: (Default)
From: [personal profile] filin
Да, фигню сказал. То есть поможет, но придётся держать сессию открытой. И зачем нам лишние тормоза, которые при этом образуются.

Date: 2020-10-07 01:32 pm (UTC)
From: [personal profile] greenkrokodilla
Перестаньте использовать 'screen', громоздкий и древний,
и поэкспериментируйте с другими (кстати, более лёгкими и
более простыми) программами, вроде 'dvtm' с дополнениями
к ней (напр, 'dtach' и 'abduco') - были живы несколько
лет назад, не проверял с 2016го.

Date: 2020-10-07 08:07 pm (UTC)
From: [personal profile] greenkrokodilla
по описанию abduco может сообщать список живых сессий

Date: 2020-10-08 02:42 am (UTC)
From: [personal profile] fhunter
dvtm адски косячил при умеренно экзотичных терминальных настройках. Возможно было что-то ещё, я уже не очень помню (но может я его готовить тогда не умел). Я его потыкал примерно тогда же или чуть позже и забил.
Если есть где-то руководство по приготовлению - будет интересно посмотреть.

PS. screen это не только ценный мех, но и возможность потыкать последовательные устройства. (Да, я знаю про minicom).
PPS. Разница в размере - 80кб против 450кб (не считая библиотек), имхо, на современных устройствах (если это не роутер) - не критично. А с учётом использования не только у себя, но и на машинах где доступ есть, а админских прав может не быть - всё равно двойной набор навыков держать в голове придётся. Но надо будет посмотреть ещё раз.

Profile

vitus_wagner: My photo 2005 (Default)
vitus_wagner

June 2025

S M T W T F S
1 234567
891011121314
15161718192021
22232425262728
2930     

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jun. 3rd, 2025 10:19 am
Powered by Dreamwidth Studios
OSZAR »