Выполнение команд на удалённом компьютере — обычное дело для многих системных администраторов, контролирующих большой парк устройств на Linux. Опытные пользователи знают, что SSH — прекрасная утилита, которая решает 99% задач. Но существуют и другие приложения, заточенные под разные задачи и обладающие разными возможностями. Давайте о них и поговорим.
Tmux — подключение к серверу
Tmux — это терминальный мультиплексор, то есть утилита, позволяющая запустить несколько терминальных сессий в одном терминале. И переключаться между ними, работая со всеми в одном окне. При необходимости можно отключиться от сессии, оставив её в фоновом режиме, а затем вернуться, чтобы посмотреть результат.
Например, если вы работаете в Vim, можете использовать окно терминала с открытыми файлами, процессами в офисе, а затем подключиться к этой сессии из дома, получив те же окна с запущенными процессами. Можно продолжить работу с того момента, где остановились. Это удобно и при разрыве связи, и при одновременной работе нескольких сотрудников в терминале. Все видят, что делают другие.
Tmux имеет удобный формат написания строки статуса, которая автоматически активируется после запуска утилиты. Важной опцией являются возможность вертикального разделения экрана и прокрутка истории мышью при работе в режиме mouse-mode on. Команды можно вводить с помощью клавиатурных комбинаций или с терминала.
Базовые команды Tmux
- attach-session (attach). Подключение к существующей сессии. В параметре указывайте опцию -t и идентификатор сессии.
- detach-session (detach). Отключение всех (или указанного в -t) клиентов от сессии, переданной в –s.
- has-session. Отправка идентификатора сессии для проверки её существования.
- kill-server. Прекращение всех сессий, которые запущены.
- kill-session. Завершение указанной в -t сессии.
- list-clients. Вывод списка клиентов, которые подключены к сессии -t.
- list-sessions (ls). Просмотр списка запущенных сессий.
- new-session. Создание новой сессии. Опционально можно задать ей имя в -s и стартовую директорию в -c.
- rename-session. Задать другое имя сессии. Укажите идентификатор сессии и новое имя.
Screen
Ещё один мультиплексор, удобный при запуске программ на удаленном сервере, а также при работе с утилитами, запущенными из командной строки. Поддерживает работу с несколькими сессиями одновременно. Можно начать сессию, выполнить команду Ctrl+A D
для отключения, заняться другой — а потом без проблем вернуться к первой, используя ключ ‘r’. Текущая сессия сохраняется на сервере, поэтому продолжать работу можно с любого компьютера.
Можно выделить функцию наблюдения за выбранным окном. После ввода команды
будут контролироваться все изменения, происходящие в выбранном окне, даже если вы работаете в другом окне. Удобна и возможность создать клавиатурные комбинации на своё усмотрение. Например, для вызова часто используемых приложений. Для этого используется bind в конфиге.
Также стоит выделить следующие флаги:
- -A. Подгонка размера окна screen под размер терминала
- -ls. Вывод списка отключенных окон.
- -d. Отключение сессии screen.
- -D. Отключение сессии screen, с игнорированием ошибок на невозможность отключения
-
-r [pid.tty.host]. Подключение к первой найденной сессии или подключение к определённой сессии, код которой узнали после использования флага -ls.
- -R. Подключение к первой найденной сессии или создание новой, если сессий нет. Можно подключаться к определённой сессии.
Остальные возможности можно узнать командой:
man screen
Mosh — защита от разрывов
Допустим, вам нужно обеспечить всегда активное непрерывное соединение с терминальным сервером. Даже если вы закрыли ноутбук на пару дней, а затем подключились к Wi-Fi в другом месте, соединение должно восстанавливаться само. Тут и пригодится Mosh.
Это надстройка над обычным OpenSSH сервером, которая позволяет забыть о разрывах соединения. Авторизуясь по обычному SSH, Mosh поднимает отдельный UDP-канал который мгновенно восстанавливается после разрыва даже при смене внешнего IP-адреса. Чтобы держать постоянное подключение к терминальному серверу, нужно установить Mosh только на сервер и на рабочее устройство. Mosh обычно не требует дополнительной настройки и работает прямо из коробки. Достаточно вместо команды SSHнаписать mosh: mosh ser@my-server.com
Для нестандартных конфигураций команда выглядит чуть сложнее. Например, если нужно указать порт и путь к ключу: mosh --ssh="ssh -p 2222 -i /path/to/ssh.key" user@my-server.com
В чем удобство утилиты?
- Возможность роуминга SSH-соединений. Переключайтесь между wi-fi сетями, меняйте IP в мобильных сетях — соединение не разорвется.
- Уменьшение лагов за счёт использования UDP и умного predictive echo.
- Оптимизация использования сети — протокол Mosh позволяет передавать только то, что должно быть отображено. Сtrl-C работает мгновенно, даже если принести в консоль содержимое файла на 500 ГБ.
- Обратная совместимость. Чтобы начать работать с Mosh, пользователю нужно выполнить минимум телодвижений.
до 40% от каждого клиентаСтать партнёром
Remmina
Часто можно услышать, что Remmina — лучший клиент RDP для Linux. У этого приложения есть удобный графический интерфейс, большое количество настроек, функция ярлыков для быстрого подключения к удалённым узлам с заданными настройками. Правда, ярлыки не сохраняются автоматически, это нужно делать самостоятельно. Кроме протокола RDP поддерживается VNC и SSH. Программа разрабатывается в рамках проекта FreeRDP, с использованием библиотеки GTK. Есть порт на Qt. Для установки достаточно выполнить команду: sudo apt install remmina
Основные поддерживаемые плагины:
- RDP Plugin. Используется для подключения к RDP-серверу на Windows/Linux;
- VNC Plugin. Удалённое подключение к рабочему столу компьютера по протоколу RFB;
- SSH Plugin. Используется для запуска команд оболочки на удаленной машине через SSH;
- SFTP Plugin. Протокол прикладного уровня для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения;
- SPICE Plugin. Протокол удаленного рабочего стола с открытым исходным кодом;
- Simple Terminal Plugin st. Простой эмулятор терминала;
- EXEC Plugin. Используется для выполнения системных и Java-программ;
- NX Plugin. Пакеты npm, содержащие генераторы и исполнители для расширения рабочей области Nx;
- XDMCP Plugin. Позволяет компьютеру A, работающему под управлением X11, подключаться к компьютеру Б, работающему под управлением X11, и взаимодействовать с компьютером Б так, будто он физически находится на компьютере Б.
XFreeRDP
RDP-клиент для Linux, использующий консольный интерфейс. Поддерживает только протокол RDP. У программы XFreeRDPмножество опций, что делает утилиту удобной в работе. Для подключения к серверу используется опция /v. Например: xfreerdp /v:ip_server:port /u:username
Для установки программы в Ubuntu используйте команду sudo apt install freerdp2-x11
Команды XFreeRDP
-
/f Полноэкранный режим (
+ + переключает полноэкранный режим) -
/port:
Порт сервера - /size:... Размер экрана
- /monitor-list Вывести список обнаруженных мониторов
-
/monitors:
[, [,...]] Выбрать мониторы для использования - -grab-keyboard Отключить захват клавиатуры
- -mouse-motion Отключить отправку движений мыши
- /log-level:... Установить уровень журналирования по умолчанию
- +home-drive Сделать домашнюю папку пользователя совместной с удалённым столом
- /drive:<ИМЯ>,<ПУТЬ> Подключить директорию <ПУТЬ> как шару с именем <ИМЯ>
- +drives Включить перенаправление всех точек монтирования как совместных папок
- /ipv6 Предпочитать IPv6 AAAA запись, а не IPv4 A запись
-
/t:<ЗАГОЛОВОК> Заголовок окна
-
/kbd:0x
или <ИМЯ> Раскладка клавиатуры - /kbd-fn-key:<ЗНАЧЕНИЕ> Значение функциональной клавиши
- /kbd-list Вывести список раскладок клавиатуры
-
/kbd-subtype:
Подтип клавиатуры -
/kbd-type:
Тип клавиатуры