Овладение командами SSH в Linux для администраторов Windows

Линукс и Windows когда-то были смертельными врагами, но в наши дни они начали лучше ладить. На самом деле, теперь вы можете использовать SSH нативно в Windows: как клиент и сервер. Что делать, если вы администратор Windows, но вам также нужно управлять Linux-серверами? Вы привыкаете к команде SSH в Linux!

Это часть IV в серии блог-постов “Windows-человек в мире Linux”. Если вы хотите узнать больше о популярных концепциях Linux, обязательно ознакомьтесь с частью I, частью II и частью III.

В этом посте вы узнаете все о том, как включить SSH в Linux и настроить клиент SSH в Windows для подключения к удаленным Linux-серверам.

Примечание: все примеры будут использовать OpenSUSE Linux.

Переход от рабочего окружения

В первом посте этой серии уроков рекомендовалось использовать рабочее окружение KDE. При настройке OpenSUSE вы, возможно, увидели еще один заманчивый вариант: серверную версию OpenSUSE.

Server Edition of OpenSUSE

Если вы установили серверное издание большинства дистрибутивов Linux (включая OpenSUSE), вы могли заметить полное отсутствие рабочего стола. Серверное издание большинства популярных дистрибутивов (таких как OpenSUSE, а также Ubuntu Server и CentOS) похоже на Windows Server Core: здесь нет рабочего стола.

Чтобы понять, почему рабочий стол обычно не используется в культуре Linux, нужно понять командную строку и SSH.

SSH: золотой стандарт удаленного управления

SSH, как и многие другие протоколы удаленного управления, основан на клиент-серверной системе. Клиент удаленно подключается к серверу по сети и позволяет выполнять команды (или даже передавать файлы). SSH является фактическим стандартом в области удаленного управления Linux.

Поскольку SSH существует уже долгое время и глубоко интегрирован в экосистему Linux, утилиты администрирования через командную строку доминируют в среде серверов Linux. Большинство дистрибутивов сервера Linux не имеют графического интерфейса.

Использование команд SSH в Linux

Хватит слов. Давайте посмотрим, что может делать SSH, сначала включив его в OpenSUSE Linux. Для этого воспользуйтесь менеджером пакетов YaST. Чтобы включить SSH с помощью YaST в OpenSUSE:

  1. Нажмите на меню “Пуск”, наберите terminal и выберите Konsole, предполагая, что вы установили менеджер рабочего стола KDE при установке OpenSUSE.
  2. В терминале откройте YaST, запустив sudo yast.
  3. После входа в YaST, перейдите вниз к системе, затем перейдите вправо к менеджеру сервисов и нажмите Enter для продолжения.
  4. Перейдите вниз к sshd и нажмите alt+s, чтобы запустить службу SSH.
  5. Нажмите alt+r, чтобы изменить режим запуска с ручного на автоматический. Это обеспечит запуск службы SSH сервера даже после перезагрузки.
  6. Нажмите alt+o, чтобы подтвердить изменения и применить их.

Вы можете увидеть эти шаги в действии ниже.

Using YaST from the command line to enable SSH

Разрешение SSH через брандмауэр

Практически каждый дистрибутив Linux поставляется с неким типом брандмауэра для защиты, как и в Windows. Вы можете прочитать о брандмауэре OpenSUSE здесь. Чтобы обеспечить удаленный доступ к службе SSH из окна, вам необходимо разрешить ее через брандмауэр. Для этого:

  1. В терминале снова запустите YaST с помощью sudo yast.
  2. Перейдите вниз к Безопасность и пользователи, затем перейдите вправо к Брандмауэру и нажмите Enter для продолжения.
  3. Перейдите в Зоны –> Общедоступные и перейдите в панель Службы—Порты справа.
  4. Перейдите вниз, чтобы найти ssh в службах.
  5. Выберите ssh пробелом и нажмите alt+d, чтобы добавить выбор.
  6. Нажмите alt+a, чтобы принять изменения.

Вы можете видеть все эти шаги выше, представленные визуально ниже.

Using YaST from the command line to let SSH through the firewall

Как и в Windows, в Linux существуют различные уровни доверия для применения правил брандмауэра. Эти уровни называются зонами. По умолчанию в Windows есть общедоступные, рабочие и частные зоны. В Linux их гораздо больше, но по умолчанию используется общедоступная зона.

Подключение к Linux с Windows

К счастью, в наши дни в Windows 10 есть встроенный клиент SSH. Чтобы подключиться к хосту Linux, откройте командную строку (cmd) или консоль PowerShell и укажите имя пользователя для подключения и IP-адрес или имя хоста.

> ssh <username>@<ip address>

Если все пройдет успешно, клиент SSH запросит подтверждение отпечатка. Отпечаток – это идентификатор, чтобы убедиться, что кто-то не захватил IP-адрес цели.

Если у вас установлена Windows 7, вы все равно можете использовать SSH для подключения к хосту Linux. Вам просто нужно загрузить клиент SSH от Microsoft отсюда здесь. Этот клиент SSH такой же, как используется в Windows 10.

Как только вы введете yes и введете пароль, вы подключены к своему серверу! Теперь вы можете использовать командную строку так, как если бы открывали терминал непосредственно на компьютере.

Не размещайте SSH (стандартный порт 22) в Интернете через ваш маршрутизатор. Боты постоянно сканируют Интернет постоянно, ища открытые порты SSH. Как только бот обнаружит открытый порт, он начнет спамить паролями, пытаясь взломать его.

Включение поддержки мыши в SSH с Windows

Одним из больших недостатков использования встроенного клиента SSH в Windows 10 (по крайней мере, на момент написания этого) является отсутствие поддержки мыши. Это означает, что вы не можете использовать мышь в midnight commander, как вы узнали из предыдущего поста в блоге.

К счастью, начиная с версии восьми клиента OpenSSH для Windows, поддержка мыши доступна! Давайте установим этот клиент.

  1. Скачайте последний выпуск OpenSSH-Win64 отсюда и извлеките полученный zip-файл. В этом руководстве предполагается, что вы извлекли его в ~\Downloads\OpenSSH-Win64.
  2. Откройте консоль PowerShell и перейдите в ~\Downloads\OpenSSH-Win64 с помощью cd ~\Downloads\OpenSSH-Win64.
  3. Проверьте версию клиента SSH, запустив .\\ssh -V. На момент написания этого руководства версия должна быть 8.1.0.0-p1.
  4. Подключитесь к своему серверу Linux, используя .\ssh <пользователь>@<ip-адрес>.
  5. После входа в систему проверьте поддержку мыши, запустив mc для запуска midnight commander, чтобы убедиться, что вы можете использовать мышь.

Вы можете видеть все эти шаги визуально ниже.

Переопределение клиента SSH по умолчанию

Если вы хотите использовать новую версию на постоянной основе, вы можете; но вам нужно переопределить клиент SSH по умолчанию в Windows 10. Это гарантирует, что при запуске ssh в командной строке будет использоваться более новая версия (с поддержкой мыши).

Предполагая, что у вас есть клиент, извлеченный в папку ~\Downloads\OpenSSH-Win64

  1. , переместите извлеченную папку OpenSSH-Win64 в постоянную папку по вашему выбору. В этом руководстве будет использоваться C:\users\public\OpenSSH-Win64.
  2. Перейдите к Пуск, затем к Выполнить и введите sysdm.cpl или откройте Систему в панели управления.
  3. На вкладке Дополнительно нажмите Переменные среды.
  4. Под Системные переменные нажмите на Path.
  5. Нажмите Добавить, чтобы добавить новый путь и укажите путь к клиенту SSH (C:\users\public\OpenSSH-Win64 в данном случае).
  6. Нажмите Переместить вверх, пока он не окажется выше папки %SystemRoot%\system32. Это гарантирует, что при вводе ssh в командной строке Windows будет сначала искать здесь.
  7. Откройте консоль PowerShell и выполните ssh -V. Вы должны увидеть версию 8.1.0.0-p.

Эти шаги кратко описаны ниже.

Overriding the Default SSH Client

Приоритет папки перед %SystemRoot%\system32 может быть риском для безопасности. Если кто-то имеет доступ к вашему компьютеру, он может решить вставить вирус в папку OpenSSH-Win64 и назвать его как утилиту Windows, например, cd.exe.

Вы должны ограничить доступ к папке OpenSSH-Win64 только для чтения для всех, кроме администраторов.

  1. Щелкните правой кнопкой мыши на папке OpenSSH-Win64 и выберите Свойства.
  2. На вкладке Безопасность нажмите кнопку Дополнительно.
  3. Нажмите Отключить наследование, чтобы разрешить настраиваемые разрешения для папки и предотвратить переопределение разрешений родительских папок в папке OpenSSH-Win64.
  4. Выберите Добавить, найдите группу Администраторы и предоставьте им полные права.
  5. Нажмите Добавить, найдите группу Все и предоставьте им разрешения только на чтение.
  6. Установите флажок Заменить все разрешения для дочерних объектов, чтобы распространить эти настройки на все файлы в папке OpenSSH-Win64; нажмите Применить.
  7. Теперь проверьте эти разрешения, создав новый файл в папке OpenSSH-Win64. Windows должна запросить подтверждение от администратора.

Вы можете видеть все эти шаги выше визуально ниже.

restrict the OpenSSH-Win64 folder

Управление отключенными сеансами с Tmux

Ах, какая беда! Вы на полпути выполнения долго выполняющейся команды через SSH, и ваш Интернет пропадает. Теперь у вас нет понятия, в каком состоянии находится сервер Linux! Завершена ли эта команда? Как ее вернуть?

Отключенные сеансы – это законная проблема с SSH, и, к счастью, у нее есть простое решение. Вам нужен терминальный мультиплексор (tmux).

Tmux означает как сокращение от терминального мультиплексора, так и имя самой программы.

Tmux – это менеджер сеансов для SSH. Он “удерживает” сеанс в случае разрыва соединения и продолжает его выполнение в фоновом режиме. Вы можете восстановить подключение к этому сеансу позже или даже создать несколько сеансов и переключаться между ними.

Для управления отключенными сеансами с помощью tmux:

  1. В терминале Linux загрузите и установите утилиту tmux, выполнив команду sudo zypper install -y tmux, как показано ниже:

Вы также можете использовать YaST для загрузки утилиты tmux.

Tmux Utility

Большинство дистрибутивов Linux имеют различные пакетные менеджеры командной строки. OpenSUSE использует zypper. Arch использует pacman. Ubuntu использует apt. Red Hat использует dnf и yum. К счастью, синтаксис этих менеджеров пакетов довольно похож по всему спектру.

2. На вашем компьютере с Windows откройте консоль PowerShell и подключитесь по SSH к вашему серверу Linux. В этом учебнике используется имя пользователя homelab и IP-адрес Linux-сервера 192.168.134.169.

ssh <username>@<ip address>

3. Запустите tmux, выполнив tmux, как только вы подключитесь. Внизу должна появиться зеленая полоса

4. Выполните команду, которая выводит какой-то текст. Неважно что. В этом учебнике используется neofetch. Вы также можете выполнить ls.

5. Отключите сеанс, закрыв PowerShell. Это действие эмулирует потерю связи.

6. Подключитесь к своему серверу Linux снова, используя SSH.

7. Теперь повторно подключитесь к старой сессии, выполнив tmux a. Вы должны по-прежнему видеть вывод предыдущей команды ls. Ура, никаких потерь данных после разрыва соединения!

Вы можете увидеть все эти шаги выше визуально на рисунке ниже.

Managing Disconnected Sessions with a Tmux

Если вы попробуете запустить утилиту Midnight Commander внутри tmux, вы можете заметить, что у вас нет поддержки мыши. Вы можете исправить это, запустив mc -x.

Включение tmux при входе

По умолчанию tmux не будет доступен во всех SSH-сессиях. Вы можете изменить это, заставив tmux подключаться к вашей SSH-сессии каждый раз при входе.

Предположим, вы подключены по SSH к вашему серверу Linux:

  1. Откройте утилиту midnight commander, используя mc.

2. Выделите файл .bashrc и нажмите edit.

Файл .bashrc – это скрипт оболочки (пакетный), который запускается каждый раз при входе через командную строку.

3. Добавьте следующий код скрипта оболочки в конец текстового файла.

if [ -z "$TMUX" ]; then tmux attach -t default || tmux new -s default fi

4. Нажмите quit и сохраните при запросе.

5. Проверьте автоматическое подключение tmux, отключившись от вашей SSH-сессии и повторно подключившись. Вы должны автоматически получить зеленую полосу внизу, указывающую на то, что вы подключены к сессии tmux!

Это действительно только малая часть того, что может сделать tmux, это довольно мощная программа для многозадачности. Если спросить любого администратора Linux, какая команда у него наиболее используемая, вероятно, это будет tmux.

Заключение

Это завершает последний пост в серии блог-постов A Windows Guy in a Linux World. Следите за блогом ATA для следующей установки!

Source:
https://adamtheautomator.com/ssh-command-in-linux/