Постоянные сессии PuTTY для нескольких окон

4390
Tgr

Я работаю в различных средах Linux через соединения PuTTY, которые время от времени обрываются. Я ищу решение для сохранения окон PuTTY (например, если я редактировал файл, то после повторного подключения я должен быть в том же редакторе с тем же файлом, открытым в том же месте), со следующими требованиями:

  • это не должно требовать какой-либо ручной настройки в начале сеанса или после переподключения (я не хочу вводить screenили что-то в этом роде)
  • У меня есть несколько окон, открытых на одной машине с одним и тем же пользователем, которые имеют тенденцию отключаться одновременно
  • количество / роль окон не постоянна (это не значит, что у меня есть mcокно, mysqlокно и окно «скрипт-бегун»; иногда я использую одно окно для поиска или для команд SVN, а иногда мне нужно несколько одновременно)
  • иногда мне нужно изменить свойства окон для задачи (большое окно для просмотра / редактирования, маленькие окна, потому что мне нужно видеть два из них одновременно, красный фон, потому что я изменяю живую базу данных в MySQL и т. д.), поэтому мне нужно вернуть ту же консоль обратно в том же окне после переподключения

Есть ли способ добиться этого? Я полагаю, что я должен использовать screenили что-то подобное, но как он узнает, из какого окна я подключаюсь? Есть ли способ передать уникальный идентификатор окна в оболочку из PuTTY?

2
Screen или Tmux действительно будут работать, но я думаю, что это будет работать вокруг симптомов. Настоящая проблема заключается в том, что ваши сетевые соединения как-то умирают, забирая с собой ваши замазки. Реальная цель должна заключаться в том, чтобы исправить это, а не найти способ обойти перезапуск сеансов ssh (это также повлияет на другие программы, которые будут страдать от таких же обрывов соединения). Hennes 11 лет назад 0
Вам нужен собственный скрипт, работающий в фоновом режиме, отслеживающий ваши текущие действия (запущенные команды) и регистрирующий их, периодически обновляя файл - назовем его current.com. Этот файл содержит все активные на данный момент задания, запущенные конкретным пользователем. После отключения и повторного подключения, profile.rc запустит скрипт, который запустит все команды, найденные в файле «current.com». Скрипт может использовать команду `screen`, чтобы вы могли иметь разделенный экран, если хотите. Сценарий, отслеживающий активные команды, потенциально может отличить запущенные задания на основе идентификатора tty. Tbc mnmnc 11 лет назад 0
... и помещать задания в отдельные файлы current.com1 current.com2 и т. д. Затем после повторного подключения сценария, запущенного с помощью profile.rc, будет повторно подключена первая неактивная группа команд к вашему повторно подключенному сеансу. Если вы подключите параллельный сеанс, он перезапустит вторую группу неактивных заданий и т. Д. Я не думаю, что существует инструмент для ваших требований, но сценарий не должен быть таким сложным для написания. mnmnc 11 лет назад 0
@Hennes время ожидания неактивных сессий не является ошибкой - это особенность и очень важная с точки зрения безопасности, которую я мог бы добавить. Это не то, что вы должны обойти. Вы можете настроить параметры времени ожидания на стороне сервера в sshd.conf, но никогда не устанавливайте его так, чтобы сеанс сохранялся бесконечно. mnmnc 11 лет назад 0
Я не согласен. Тайм-аут не заменяет функции безопасности. - Если я зайду на свой сервер, сделаю перерыв на кофе (с заблокированным рабочим столом. В Windows просто win-L), вернусь после перерыва и разблокирую свой рабочий стол, тогда я не ожидаю, что мои сеансы замазки умрут. Hennes 11 лет назад 0
@Hennes Есть разница между перерывом на кофе и выходным. Например, вы можете настроить время ожидания до 30 минут. Но сеанс, который будет длиться часами, представляет собой угрозу безопасности, нравится вам это или нет. Не имеет значения, заблокировали ли вы компьютер или нет. Вы ограничиваете безопасность от доступа с двумя паролями к доступу с одним паролем. Случаются несчастные случаи, вы можете покинуть офис в спешке, сеанс будет зависать. Ваш коллега, который знает ваш пароль (не говорите, что не знает - не главное), будет иметь доступ не только к вашему ПК, но и к удаленному ПК, и его действия будут зависеть от вашей учетной записи. mnmnc 11 лет назад 0
На самом деле проблема не в сети, например, пропадают сеансы, когда я беру ноутбук с собой на встречу, и он не подключается во время перемещения между точками доступа. Разрыв соединения происходит только в ожидаемых случаях, и большинство моих приложений просто автоматически переподключаются; Я хочу настроить то же самое для PuTTY. Tgr 11 лет назад 0
@mnmnc: автоматическое переиздание команд, которые я использовал, звучит страшно и, в любом случае, не решает проблему возврата одного и того же сеанса в одно и то же окно. Если я просто хочу вернуть один из существующих сеансов случайным образом, я, вероятно, могу добиться этого, вызвав `screen` с правильными параметрами в` .bashrc`. Tgr 11 лет назад 0

3 ответа на вопрос

2
Time Sheep

The quick and clean solution

Edit your ~/.bashrc to run screen -r. Then you will be reattached to a running screen session automatically when you log in.

The fulfilling solution

  • Create a user for each screen session (Windows-window/PuTTY session) you intend to have open as a maximum.
  • Connect to the server using each of the newly created users and run "screen -S username" to start a session named with their username.
  • Append "screen -r $(whoami)" to each user's ~/.bashrc
  • Save a putty session for each of the users on your desktop or in PuTTY to add them to your superbar's jumplist or wherever you want your shortcuts, and use them to start up each session. This will also enable you to

EDIT: I would preferrably focus on fixing the timeout issue. It's a security feature, I know, but it shouldn't disconnect you while you are sending input.

Это будет работать только в том случае, если у вас есть одноэкранный сеанс на стороне сервера, и будет только переподключение одного экрана. ОП говорит, что он часто использует несколько сеансов. mnmnc 11 лет назад 0
Эту проблему можно решить, используя параллельные окна на экране вместо нескольких сессий SSH. Time Sheep 11 лет назад 0
Да, но только если вы используете один сеанс бок о бок. Если вы используете текстовый редактор в одном сеансе Putty, а в другом сеансе Putty вы используете экран с разделенным рабочим пространством - как бы вы подключились ко всем из них? mnmnc 11 лет назад 0
Я имел в виду не это, я имел в виду, что вы можете держать текстовый редактор в разделенном рабочем пространстве. В любом случае, это скорее обходной путь, чем решение. Вы также можете использовать фиксированные имена сеансов экрана. Например, вы создаете пользователя по имени Стив, Стив начинает сеанс экрана с «screen -S steve». Вы также создаете пользователя с именем greg, затем greg начинает его сеанс с "screen -S greg". Отредактируйте .bashrc каждого пользователя, чтобы присоединить его к соответствующему сеансу с помощью «screen -r steve», и создайте сохраненный сеанс PuTTY для каждого пользователя. Time Sheep 11 лет назад 0
Да. Это хорошее решение - я согласен. Однако я думаю, что я не решил бы сделать это, потому что мне нужно было бы потенциально столько пользователей, сколько комбинаций экранов, с которыми я работаю. Это означает, что если я хочу изменить некоторые настройки для своего профиля в глобальном масштабе, мне нужно будет распространить эти настройки на все файлы .profilerc - я прав? mnmnc 11 лет назад 0
Поскольку вы никогда не закрываете сеанс экрана, а просто присоединяете его, все ваши настройки будут сохранены. Если вам нужно что-то изменить, вы можете просто сделать это в течение сеанса экрана. О каких настройках ты думаешь? Time Sheep 11 лет назад 0
Разные пользователи на самом деле не нужны, у меня может быть несколько разных конфигураций PuTTY для одного и того же пользователя с разными переменными среды. Но я надеюсь на более удачное решение, в котором PuTTY каким-то образом передает идентификатор в оболочку (например, идентификатор процесса Windows), и я могу использовать его в качестве имени для сеанса экрана имен. Таким образом, мне не нужно загрязнять мой список хостов PuTTY, и мне не нужно думать, какой пользователь / конфигурацию использовать, если мне нужно новое окно. Tgr 11 лет назад 0
Что касается мульти-окон на экране, я привык к способу работы с окнами в Windows и не хочу изучать совершенно другой подход только из-за этого. И вообще, эмуляция текстового окна - большая помощь, когда вы находитесь на немом терминале, но плохая замена для реальных окон (например, я использую двойные мониторы, я не могу воспользоваться этим с многооконными экранами). У меня также есть некоторые относящиеся к окну удобные настройки (например, [мигать имя окна на панели инструментов, когда длинная задача выполнена] (http://superuser.com/q/474068/34937)), которые мне придется решать по-другому , Tgr 11 лет назад 0
Я знаю сделку с мультимониторами, как и я сам. Я никогда не чувствовал необходимость нескольких сеансов на одном сервере, хотя. Я прекрасно справляюсь с ^ A + 0, ^ A + 1 и т. Д. Вернемся к теме, хотя идея заключается в том, что вы можете создавать ярлыки или ярлыки на рабочем столе для каждого сеанса экрана, что эффективно решает его проблему, но быстро - грязный манера. Но опять же, SSH-соединение должно оставаться активным, пока вы его используете, и эту проблему я бы попытался исправить в первую очередь. Time Sheep 11 лет назад 0
1
P.T.

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

Благодарю. Я слышал о `mosh`, но, насколько я понимаю, он в основном заменяет SSH собственным протоколом, который, вероятно, недостаточно зрел для серьезного использования. Tgr 11 лет назад 0
1
leighghunt

Старый пост, который я знаю, но просто подумал, что упомяну seconds between Keepalivesнастройку на вкладке «Параметры подключения » - установите ненулевое значение, чтобы посмотреть, поможет ли это, - см. Http://the.earth.li/~sgtatham/putty /0.63/htmldoc/Chapter4.html#config-keepalive для получения дополнительной информации.

Похожие вопросы