Зручне дистанційне керування консоллю linux з-під Windows
.collapse">Зміст
UPD:У мене часто запитують, навіщо все, описане в статті, треба. Все просто: 1. Збереження підключення під час обриву зв'язку. Цей пункт для мене найважливіший і відіграв вирішальну роль у тому, щоб взятися за налаштування такої системи. Справа в тому, що я живу в гуртожитку з дуже нестабільним інтернетом, і обриви зв'язку у мене (погані дні) можуть відбуватися щохвилини. А putty вимагає послідовності дій, щоб перепідключитися щоразу 2. Збереження сесії. Найчастіше, єдиним завданням при підключенні до сервера варто: зайти в ту саму директорію і написати git pull. Щоб щоразу не згадувати шлях до цієї директорії, потрібне збереження сесії 3. Термінал підтримує вкладки. Найголовніше, що цей термінал можна використовувати і для cmd, і для PS, і для git bash консолі. Тому не доведеться тримати кілька різних терміналів відкритими. 4. Плюси tmux: багатовіконність в одній сесії та split Не сперечаюся, частину з цього можна вирішити іншими засобами Як же отримати комфортний remote access до bash з-під Windows?

- Термінал - ConEmu code.google.com/p/conemu-maximus5;
- Менеджер сесій - tmux tmux.sourceforge.net;
- Конектор між клієнтом та сервером - mosh mosh.mit.edu;
- Запуск *nix додатків під windows - cygwin www.cygwin.com;
Також для проведення всіх маніпуляцій нам також знадобиться подібний набір софту:
- Putty або інший клієнт ssh;
- Видалений сервер (я використовую ubuntu на aws, хоча це не має суттєвого значення).
Щоми отримаємо в результаті?
Тепер поїхали докладно.
Конфігурація
Налаштовувати нашу систему ми поетапно, почнемо з віддаленого сервера. Підключаємось до нього по ssh та ставимо…
Tmux— менеджер сесій, як кажуть, screen на стероїдах. До мого дистрибутиву tmux вже йшов у комплекті, а якщо ні, то ставимо його:
Або збираємо з вихідних:
Дуже хороший спосіб запустити tmux: tmux attach tmux new - роблячи так, ви спочатку намагаєтеся підключитися до вже існуючого сервера tmux, якщо він існує; якщо такого ще немає - створюєте новий.
Після цього ви потрапляєте у повноцінну консоль. Ctrl+b d — вимкнутись. (Так само ви відключитеся, якщо перерветься з'єднання. Як підключитися назад і продовжити роботу - див. вище.)
В одній сесії може бути скільки завгодно віконців: Ctrl+b c — створити віконце; Ctrl+b 0. 9 — перейти в таке віконце; Ctrl+b p — перейти до попереднього віконця; Ctrl+b n — перейти до наступного віконця; Ctrl+b l - перейти в попереднє активне віконце (з якого ви переключилися в поточне); Ctrl+b & - Закрити вікно (а можна просто набрати exit в терміналі).
В одному вікні може бути багато панелей: Ctrl+b % — розділити поточну панель на дві, по вертикалі; Ctrl+b " — розділити поточну панель на дві, по горизонталі (це лапка, яка біля Enter, а не Shift+2); Ctrl+b →←↑↓ — переходити між панелями; Ctrl +b x - Закрити панель (а можна просто набрати exit в терміналі).
Недолік — незвичним стає скролінг: Ctrl+b PgUp — вхід до «режиму копіювання», після чого: PgUp, PgDown — скролінг; q — вихід із «режиму копіювання».
У конфіг, який знаходиться в
/.tmux.conf, додаємо наступне:
new-session set-window-option -g mode-mouse on set -g history-limit 25000
У першому рядку значиться, що з спробі підключення, якщо немає активної сесії, створюється нова. Другий рядок включає підтримку миші, а третій визначає розмір історії.
Moshу нашій зв'язці - це система, яка забезпечує безперебійність з'єднання. При обриві з'єднання програма чекає, поки connectivity відновиться і продовжує роботу з місця зупинки. Також допомагає і при повільному/нестабільному з'єднанні.
Встановлюємо з вихідних джерел, щоб отримати версію, яка підтримує всі потрібні фічі:
Спеціальна конфігурація не потрібна.
Тепер переходимо до клієнтської частини.
Cygwin- альтернативна реалізація linux api, яка дозволяє використовувати linux утиліти з-під windows. Ставиться із офіційного сайту (https://cygwin.com/install.html). У мене стоїть версія x86_64. Завантажуємо, ставимо. При виборі пакетів (крім основних) слід зазначити mosh і ssh:

Конфігурація не потрібна.
Останній пункт -ConEmu. Чудовий термінал під windows. Підтримує купу можливостей, таких як:
- вкладки та split-scren'и;
- робота з консольними програмами, що використовують консольне API;
- гнучке налаштування та управління;
- робота із квітами;
- … та багато іншого, докладно про цей термінал можна почитати у статті розробника.
Ось як виглядає завдання запуску cygwin:

Створіть такий пункт у себе, при цьому вам,можливо, доведеться замінити шлях на ваш шлях встановлення:
Зберігаємо, закриваємо налаштування, вибираємо наш cygwin у меню, що випадає, поряд з плюсиком у правому верхньому кутку. Тепер нам потрібно домогтися підключення по ssh до нашого сервера.
У мене команда виглядає так:
key2014.pem- мій ssh приватний ключ доступу до інстансу в aws. Можливо, його варто скопіювати з windows диска (який монтується в /cygdrive) в кореневу папку.
Наступний етап – підключення через Mosh:
55505— UDP порт, який я попередньо відкрив для вхідних з'єднань у правилах безпеки в адмінці aws. Тепер усі з'єднання вестимуться лише через нього (крім початкового встановлення зв'язку – воно йде через 22 порти).tmux a- команда, яка виконується при підключенні до сервера (attach до працюючої сесії tmux). Перевіряємо. Чи працює? Чудово! Остання задача – створити новий Task у ConEmu.

Думаю, все зрозуміло. Зверніть увагу на сліші перед лапками. Вони відрізняють ступінь вкладеності лапок.
Ну от, мабуть, і все. Тепер, коли ми хочемо підключитися до сервера, запускаємо ConEmu, тикаємо по стрілочці поруч із плюсиком та вибираємо наш Task.
Доповнення
Ще одне спрощення, яке я використовую - я додав всі необхідні мені Task'і для виклику безпосередньо з Totcmd:
Підключення до aws:
P. S.Пропоную всім, хто дочитав цю статтю, висловлювати пропозиції, що ще такого можна включити до цієї схеми. Дякую за увагу.