Зручне дистанційне керування консоллю linux з-під Windows

.collapse">Зміст

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

керування
Рецепт успіху включатиме кілька пунктів:
  1. Термінал - ConEmu code.google.com/p/conemu-maximus5;
  2. Менеджер сесій - tmux tmux.sourceforge.net;
  3. Конектор між клієнтом та сервером - mosh mosh.mit.edu;
  4. Запуск *nix додатків під windows - cygwin www.cygwin.com;

Також для проведення всіх маніпуляцій нам також знадобиться подібний набір софту:

  1. Putty або інший клієнт ssh;
  2. Видалений сервер (я використовую 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. Підтримує купу можливостей, таких як:

  1. вкладки та split-scren'и;
  2. робота з консольними програмами, що використовують консольне API;
  3. гнучке налаштування та управління;
  4. робота із квітами;
  5. … та багато іншого, докладно про цей термінал можна почитати у статті розробника.
ConEmu ставиться з офіційного сайту. Завантажуємо, ставимо (або розпаковуємо), запускаємо. При першому запуску залишаємо галочки стояти на місцях. Відкриваємо налаштування по Win+Alt+P. Нас цікавить пункт Tasks.

Ось як виглядає завдання запуску 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.Пропоную всім, хто дочитав цю статтю, висловлювати пропозиції, що ще такого можна включити до цієї схеми. Дякую за увагу.