Удаленный доступ к серверу линукс

SSH для новичков

Программистов, сисадминов, devops’ов, тестировщиков часто объединяет использование некоторых общих технологий. Например, возможность иметь удалённый доступ к серверу пригодилось бы любому из указанной выше анекдотичной компании. Поэтому в этой статье мы рассмотрим основы работы с протоколом SSH на базовом уровня (без генерации ключей, подписей, мам, пап и кредитов). «Продвинутое» использование посмотрим уже отдельно, в следующий раз. Материал подготовил Макс, автор YouTube-канала PyLounge. Поехали!

Введение

SSH (Secure SHell — защищенная оболочка) — сетевой протокол прикладного уровня, предназначенный для безопасного удаленного доступа к различным системам (Linux, Windows, Mac).

Данный протокол шифрует всю передаваемую информацию по сети. По умолчанию, используется 22-й порт. В основном он нужен для удаленного управления данными пользователя на сервере, запуска служебных команд, работы в консольном режиме с базами данных.

Эта служба была создана в качестве замены не зашифрованному Telnet и использует криптографические техники, чтобы обеспечить, что всё сообщение между сервером и пользователем было зашифровано.

Чтобы установить SSH-соединение, необходимы два компонента: SSH-сервер и SSH-клиент. Сервер прослушивает определенный порт (по умолчанию это порт 22) и при успешной аутентификации дает доступ пользователю. Все команды, которые используются на SSH-клиенте, отправляются через защищенный канал связи на SSH-сервер, на котором они выполняются и откуда отправляют результат работы обратно клиенту.

SSH-сервер

Устанавливается на управляемой операционной системе и принимает входящие подключения от клиентских машин, проверяя соединение одним из способов:

  • по IP-адресу клиента, что не слишком безопасно из-за риска подмены;
  • по публичному ключу клиента и имени пользователя. Нужно создать приватный (закрытый) и публичный (открытый) ключ. Зашифровав информацию одним ключом, можно расшифровать ее только другим;
  • по паролю клиента, который передается в зашифрованном виде. Это один из наиболее распространенных вариантов. Вводить его нужно при каждом подключении.

Платные и бесплатные SSH-серверы есть для всех распространенных ОС:

  • BSD — OpenSSH;
  • Linux — dropbear, lsh-server, openssh-server;
  • Windows — freeSSHd, copssh, WinSSHD, OpenSSH и т. д.

SSH-клиент

Используется для входа на удаленный сервер и выполнения команд. Через клиент выполняется управление удаленным компьютером.

SSH-клиенты разработаны для всех ОС. Имеют платные и бесплатные версии:

  • Linux/BSD — openssh-client, putty, ssh, Vinagre;
  • Windows — PuTTY, SecureCRT, ShellGuard;
  • Android — connectBot.
Читайте также:  Linux search installed packages

Встроенный SSH-клиент Windows, основанный на OpenSSH, предустановлен в ОС, начиная с Windows 10 1809.

Установка OpenSSH на Ubuntu

Установка с помощью менеджера пакетов apt-get:

sudo apt-get install openssh-server

Проверка SELinux

Security Enhanced Linux, или SELinux – это усовершенствованный механизм контроля доступа, встроенный в большинство современных дистрибутивов Linux. Первоначально он был разработан Агентством национальной безопасности США для защиты компьютерных систем от вторжения злоумышленников и взлома. SELinux также может помешать работе с ssh. Поэтому необходимо убедиться, что он отключен, либо отключить его.

Устанавливаем доп. инструменты для работы с сетью и настройками безопасности:

sudo apt-get install policycoreutils sudo apt-get install net-tools

Проверяем статус SELinux. Состояние должно быть disable .

Подключение к виртуальной машине с типом подключения NAT

Если виртуальная машина использует тип сетевого подключения NAT, то первоначально необходимо настроить проброс портов. Пробросим порт хоста 2222 (или любой свободный) на гостевой порт виртуальной машины номер 22 (порт ssh по умолчанию).

После этого мы можем подключиться из Windows к нашей виртуальной машине.

Подключение по ssh через PuTTY

Т.к. в качестве сетевого подключения у виртуальной машины используется NAT, при подключении мы будем указывать петлевой адрес localhost (127.0.0.1) c портом, на который был назначен проброс.

После этого вводим имя пользователя (пользователь должен существовать в linux. ) и пароль от этого пользователя.

Подключение по ssh через Командную строку Windows (cmd)

Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.

В общем видео подключение по ssh имеет вид:

ssh имя_пользователя@ip_адрес_компьютера_к_которому_подключаемся -p порт

Если для подключения используется стандартный порт ssh — 22, то порт можно не указывать.

В открывшемся окне вводим команду:

Вводим пароль пользователя. Всё. Вы великолепны!

Подключение к виртуальной машине с типом подключение Сетевой мост

С типом подключения Сетевой мост необходимо выдать статический ip для Linux системы. Дальнейшее подключение будет уже по этому, выданному ip, а не через localhost.

Установка статического ip

Начиная с выпуска Ubuntu 17.10 NetPlan теперь это инструмент настройки сети по умолчанию для управления настройками сети, заменяющий файл конфигурации /etc/network/interfaces , который использовался в предыдущих версиях.

Файлы конфигурации для Netplan находятся в каталоге /etc/netplan и написаны на языке YAML. В этом каталоге вы найдете файлы конфигурации YAML.

Откроем конфигурационный файл:

Отредактируем конфигурационный файл:

network: version: 2 renderer: NetworkManager ethernets: enp0s3: dhcp4: false addresses: [10.40.0.224/24] gateway4: 10.40.0.1 nameservers: addresses: [10.2.0.8, 10.2.0.3] 
  • ethernets — указывает на проводное Ethernet подключение;
  • enp0s3 — имя сетевого интерфейса (можно узнать командой ifconfig);
  • dhcp4 — автоматическая выдача ipv4-адреса с помощью службы dhcp (для ipv6 указывать dhcp6);
  • addresses — ip-адрес и маска сети, которые назначаются компьютеру;
  • gateway4 — шлюз по умолчанию;
  • nameservers — список dns-серверов.

Посмотреть настройки можно с хостовой машины на Windows с помощью команды ipconfig /all.

Чтобы применить изменения и перезагрузить сеть, вводим команду:

Читайте также:  Установка шрифтов linux ubuntu

Подключение по ssh

Запускаем командную строку сочетанием клавиш Win + R . В открывшемся окне указываем cmd. Нажимаем OK.

В открывшемся окне вводим команду:

Вводим пароль пользователя. Всё. Вы великолепны (2)!

Заключение

Несмотря на высокую защиту протокола, использование стандартного порта значительно повышает риск взлома сервера. Например, это можно сделать при помощи brute-force (атака полным перебором). Порт 22 — открытый, поэтому злоумышленнику нужно только подобрать логин и пароль к серверу. Это сложно, но возможно. Чтобы максимально ограничить доступ к серверу для злоумышленников (настроить брандмауэр, iptables), можно сменить SSH-порты.

Ресурсы, которые использовал

  1. Как включить SSH в Ubuntu 20.04 (Routerus):https://routerus.com/how-to-enable-ssh-on-ubuntu-20-04/
  2. Коротко об SSH / Хабр: https://habr.com/ru/sandbox/166705/
  3. Что такое SSH (блог REG.RU): https://help.reg.ru/support/hosting/dostupy-i-podklyucheniye-panel-upravleniya-ftp-ssh/chto-takoye-ssh

Источник

Не только VNC и RDP. Удаленный рабочий стол Linux с X2Go

Однажды мне потребовалось организовать удаленный доступ к графическому интерфейсу Ubuntu. При этом необходимо было найти решение on-premise, поскольку использовать его предполагалось в корпоративной сети, где доступ к чувствительной информации исключал облачные решения вроде TeamViewer. Кроме того, канал связи с удаленной машиной обладал низкой пропускной способностью.

Сначала я перебрал несколько вариантов знакомых мне решений:

  • VNC (Virtual Network Computing) — старый протокол, который основан на передаче массивов пикселей по протоколу RFB (Remote Framebuffer) для организации удаленного соединения. Он оказался слишком медленным и требовательным к пропускной способности каналов передачи данных. Особенно это критично для корпоративных сетей, подключенных через VPN, которые хостятся в другой части света;
  • RDP (Remote Desktop Protocol) — протокол, который позволяет отправлять более сложные графические примитивы и высокоуровневые команды. Обычно используется для организации служб удаленных рабочих столов в Windows, но серверы для Linux также доступны, например xRDP. К минусам можно отнести сложность настройки/конфигурации на стороне хоста.

Я продолжил поиски и открыл для себя еще один способ организации удаленного рабочего стола — протокол NX.

Что такое NX?

В Linux для работы с графическими интерфейсами (GUI) используется X-сервер. Обычно окружения рабочего стола вроде GNOME, KDE или LXDE запускаются поверх Х-сервера, что позволяет запускать другие программы.

Компания NoMachine решила оптимизировать подключение к X-серверу по сети. Так появился протокол NX, который значительно снизил нагрузку на сеть.

NX — это не просто протокол доставки картинки, а, по сути, терминальный сервер для Linux. Он позволяет в удаленной операционной системе авторизовать пользователя, организовать для него полноценный сеанс и запустить в нем графическое окружение. Тот же VNC так не умеет.

Читайте также:  Linux mint kodi install

На протяжении нескольких лет NoMachine развивала протокол как одноименный коммерческий продукт — NoMachine — и как community-проект FreeNX. Выпуская четвертую версию продукта, NoMachine решила больше не развивать FreeNX. Но сообщество осталось, и от основного репозитория отделилось много форков. Многие были уверены, что лучше знают, как надо. И некоторые из них оказались правы. Так, кроме FreeNX появились X2Go, QVD, RX, Neatx (от Google). Все эти протоколы друг с другом несовместимы, а некоторые уже “умерли”. Я выбрал X2Go.

Преимущества X2Go

Главные преимущества open-source реализации протокола NX X2Go перед аналогами — это:

  • Высокая скорость в условиях низкой пропускной способности канала передачи данных;
  • Простота настройки на стороне хоста. Т.к. X2Go работает через SSH, то все, что нужно сделать, — это убедиться, что SSH работает и порт 22 открыт в настройках файервола;
  • Безопасность — протокол работает поверх SSH (пользователю доступны безопасные механизмы аутентификации, в том числе с ключами). Нет необходимости открывать дополнительный порт в настройках файервола.

Кроме того, X2Go позволяет запускать отдельное приложение на удаленном компьютере, например среду разработки; дает возможность подключаться к запущенной сессии пользователя; имеет свой брокер соединений (полезно для автоматизации рабочих мест).

Также доступны трансляция клиенту звука и видео с сервера, печать на локальном принтере и общие каталоги.

Как установить X2Go

Установка сервера на примере Ubuntu

Стабильные версии сервера и клиента X2Go можно установить из штатных репозиториев актуальных релизов Ubuntu. Необходимо инсталлировать два пакета:

sudo apt-get install x2goserver x2goserver-xsession

Проверяем, что сервер запущен:

sudo systemctl status x2goserver

Если вы используете не Xfce, возможно, потребуется установить дополнительные пакеты для графических оболочек. Например, при использовании Lubuntu подключаем поддержку LFCE:

sudo apt-get install x2golxdebindings

Также может потребоваться создать нового пользователя, если нужен доступ с нескольких рабочих мест.

Установка клиента

Клиентское ПО X2Go для Windows, Linux и OS X можно скачать на сайте проекта. Большой минус — нет поддержки мобильных клиентов, при том что NoMachine поддерживает и Android и iOS. Но клиенты NoMachine с сервером X2Go несовместимы.

Если на локальном компьютере установлена Ubuntu, достаточно добавить пакет x2goclient:

sudo apt-get install x2goclient

А так выглядит клиент X2Go для Windows:

В случае если возникли проблемы с основным клиентом, написанным на Qt, можно использовать альтернативный клиент, написанный на wxPython.

Таким образом я решил свою задачу. Благодарю сообщество и всех, кто работает над этой темой. Буду рад, если мой опыт кому-то поможет.

Источник

Оцените статью
Adblock
detector