На сервере Linux, как вы используете несколько терминалов через одно соединение SSH?

15

Я часто открываю несколько соединений ssh, чтобы просматривать несколько файлов журнала одновременно tail -f.

Это не проблема, когда я дома, потому что я использую шифрование с открытым ключом для входа без пароля. Тем не менее, я часто буду использовать компьютер в своем университете, чтобы у меня не было возможности использовать свой закрытый ключ. Раздражает необходимость вводить мой пароль 4 или 5 раз, чтобы получить несколько окон терминала.

Как я могу получить несколько терминалов через одно соединение?

epochwolf
источник

Ответы:

38

Просто используйте экран GNU , это здорово, так как вы можете запускать удаленные сеансы и восстанавливать их, если ваше соединение обрывается. Он доступен в виде пакета для большинства дистрибутивов и даже может быть уже установлен в вашей университетской системе.

Руководство даст вам все , что вам нужно , чтобы начать работу, по умолчанию все команды предваряется Ctrl+A. Например, чтобы вызвать экранную справку, просто нажмите, Ctrl+Aзатем нажмите?

saschabeaumont
источник
Я был администратором Linux в течение нескольких лет и использую экран много, много раз в день.
Ни один сервер не обходится без экрана.
Герт М
2
После использования экрана в течение последних нескольких часов я не могу поверить, что я жил без него! Я провел 5 лет, делая это неправильно.
эпохальный волк
11

Экран позволяет вам иметь несколько терминалов и многое другое (например, возможность отсоединения и повторного подключения к сеансу).

Некоторые заметки, чтобы вы начали:

Ctrl-a c   create
Ctrl-a d   detach
screen -r  reattach
Ctrl-a a   toggle
Ctrl-a "   list

И некоторые рекомендованные к прочтению:

Филипп Дурбин
источник
4

Взгляните на следующие две статьи о совместном использовании SSH-соединения:

http://fermiparadox.wordpress.com/2008/06/19/ssh-connection-sharing/
http://protempore.net/~calvins/howto/ssh-connection-sharing/

По сути, сделайте поиск в Google по обмену ssh-соединением, и вы найдете кучу других статей о нем.

Evan
источник
1
Интересный. Одна проблема состоит в том, что, если бы мое интернет-соединение оборвалось, я не смог бы восстановить соединение без удаления сокета. Если я не могу подключиться, как мне попасть на сервер, чтобы удалить сокет?
эпохальный волк
Вам не нужно удалять сокет на сервере, это только совместное использование на стороне клиента. Итак, вы запускаете `ssh foo 'один раз, и он создает сокет на той же машине, на которой вы запускали команду ssh foo. Сервер видит несколько входов в систему на разных ttys, поэтому он не знает ничего отличного от «обычных» отдельных входов.
Дэвид Гарднер
3

Возможно, вы могли бы использовать перенаправление X, чтобы открыть несколько удаленных xterms на вашем локальном рабочем столе.

Джон Фухи
источник
На сервере не установлен X11. Кроме того, не работает в системе Windows, на которой я не могу установить X-сервер.
эпохальный волк
Сервер Linux не должен иметь X11 для запуска графических приложений, которые отображаются на вашем локальном рабочем столе. Кроме того, Cygwin X-Server отлично работает для запуска таких вещей, как Firefox из моего домашнего Linux-бокса (без запуска X на моем домашнем компьютере), и они прекрасно отображаются на моем локальном ноутбуке с Windows.
Шапр
2

У вас нет веских причин, по которым вы не можете использовать закрытые ключи из других систем. Сгенерируйте их для каждой машины и добавьте соответствующие ключи для author_hosts

Тем не менее, используйте экран.

ironfroggy
источник
Является ли использование закрытого ключа на общедоступном компьютере хорошей идеей? Особенно учитывая, что я не ставил ключевую фразу на ключ?
эпохальный волк
1
Вы не будете использовать тот же ключ, который вы используете в другом месте - вы сгенерируете новый ключ (с парольной фразой) и добавите его открытый ключ в файл авторизованные ключи на вашем сервере. Назовите это как «portablekey» и извлеките его из authorized_keys, если вы думаете, что это могло быть скомпрометировано.
Neall
2

Вы также можете посмотреть на Бёбу . Это улучшенная версия Screen, и я считаю, что это проект Ubuntu. Но это стандартно с Ubuntu 9.10 и новее.

Я по-прежнему склонен использовать Screen по привычке, но хотел бы упомянуть эту более новую альтернативу.

3dinfluence
источник
1

Если все, что вы используете, - это отслеживание нескольких файлов, вас также может заинтересовать мультитейл .

Evan
источник
Интересная ссылка. Я только что упомянул мое наиболее распространенное использование. Мне также нужно переключаться между vim и bash, чтобы искать пути для вещей.
эпохальный волк
1

Одной из не упомянутых функций экрана является «отсоединение» экрана, и он будет продолжать выполнять любые команды, которые вы выполняете на этом наборе экранов. После того, как экран отсоединен, вы можете выйти из системы, и все это продолжается, даже после выхода из системы. Я запустлю экран, а затем выполню несколько команд c, чтобы создать новые «подэкраны». Я могу переключаться между ними и запускать какую-то длительную компиляцию или обработку данных и быть уверенным, что мое дрянное VPN-соединение победит, потому что с ним все умрет.

После выхода из системы вы можете снова войти в систему и использовать 'screen -R', который снова присоединит вас к имеющимся экранным сессоинам.

Пол Леклерк
источник
0

Для использования screenс ssh, типа

ssh -t <user>@<server> screen -r

( источник ). man ssh:

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

Ярослав Никитенко
источник