Настройка ssh ubuntu wsl

Обновлено: 06.07.2024

В наши дни SSH стал методом по умолчанию для доступа к удаленному серверу Linux.

SSH расшифровывается как Secure Shell и представляет собой мощный, эффективный и популярный сетевой протокол, используемый для удаленной связи между двумя компьютерами. И давайте не будем забывать о защищенной части его имени; SSH шифрует весь трафик для предотвращения таких атак, как угон и подслушивание, предлагая различные методы аутентификации и множество вариантов конфигурации.

В этом руководстве для начинающих вы узнаете:

  • Основная концепция SSH
  • Настройка SSH-сервера (в системе, к которой вы хотите получить удаленный доступ)
  • Подключение к удаленному серверу через SSH с клиентской машины (вашего персонального компьютера)

Основы SSH

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

Протокол SSH основан на архитектуре сервер-клиент. «Сервер» позволяет «клиенту» подключаться по каналу связи. Этот канал зашифрован, и обмен регулируется использованием открытых и закрытых ключей SSH.

OpenSSH - один из самых популярных инструментов с открытым исходным кодом, который обеспечивает функциональность SSH в Linux, BSD и Windows.

Для успешной настройки SSH вам необходимо:

  • Установите компоненты сервера SSH на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.
  • Установите клиентский компонент SSH на машину, с которой вы хотите подключиться к удаленному серверу. Это обеспечивается пакетом openssh-client, и с ним предустановлено большинство дистрибутивов Linux и BSD.

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

Как правило, у вас есть выделенная система, работающая в качестве сервера. Например, Raspberry Pi с сервером Ubuntu. Вы включаете SSH на Raspberry Pi, чтобы вы могли контролировать и управлять устройством со своего основного персонального компьютера, используя SSH в терминале.

Обладая этой информацией, давайте посмотрим, как настроить SSH-сервер в Ubuntu.

Настройка SSH-сервера в Ubuntu

Настроить SSH не сложно, для этого нужно всего несколько шагов:

  • Пользователь с привилегиями sudo на серверной машине
  • Подключение к Интернету для загрузки необходимых пакетов.

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

Шаг 1. Установите необходимые пакеты

Начнем с открытия окна терминала и ввода необходимых команд.

Не забудьте обновить свою систему Ubuntu перед установкой новых пакетов или программного обеспечения, чтобы убедиться, что вы используете последние версии.

Пакет, необходимый для запуска SSH-сервера, предоставляется компонентом openssh-server из OpenSSH:


Шаг 2: Проверка статуса сервера

После завершения загрузки и установки пакета служба SSH должна быть уже запущена, но для уверенности мы проверим ее с помощью:

Вы также можете использовать команды systemd:

Вы должны увидеть что-то подобное с выделенным словом Active. Нажмите q, чтобы вернуться в командную строку.


Если в вашем случае сервис не работает, вам нужно будет активировать его следующим образом:

Шаг 3. Разрешение SSH через брандмауэр

Ubuntu поставляется с утилитой межсетевого экрана под названием UFW (UncomplicatedFirewall), которая представляет собой интерфейс для iptables, который, в свою очередь, управляет сетевыми правилами. Если брандмауэр активен, он может помешать подключению к вашему SSH-серверу.

Чтобы настроить UFW так, чтобы он разрешал требуемый доступ, вам необходимо выполнить следующую команду:

Статус UFW можно проверить, запустив sudo ufw status.

На данном этапе наш SSH-сервер запущен и просто ожидает соединения от клиента.

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

В вашей локальной системе Linux уже должен быть установлен клиент SSH. Если нет, вы всегда можете установить его, используя следующую команду в Ubuntu:

Чтобы подключиться к вашей системе Ubuntu, вам необходимо знать IP-адрес компьютера и использовать команду ssh, например:

Измените username на своего фактического пользователя в системе и address на IP-адрес вашего сервера Ubuntu.

Если вы не знаете IP-адрес своего компьютера, вы можете ввести ip a в терминале сервера и проверить вывод. У вас должно получиться что-то вроде этого:

Использование «ip a» для поиска IP-адреса

Использование «ip a» для поиска IP-адреса

Как видно здесь, мой IP-адрес 192.168.2.54. Давайте попробуем подключиться, используя формат имя username@adress.

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

Первое подключение к серверу

Первое подключение к серверу

Сразу же SSH сообщает вам, что хост был добавлен навсегда, а затем запрашивает пароль, назначенный для имени пользователя. Введите пароль и еще раз нажмите Enter.

Хост добавлен, теперь введите пароль

Хост добавлен, теперь введите пароль

И вуаля! Вы войдете в свою систему Ubuntu удаленно!


Теперь вы можете работать в терминале удаленной системы в обычном режиме.

Закрытие SSH-соединения

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

Закрытие соединения

Закрытие соединения

Остановка и отключение SSH в Ubuntu

Если вы хотите остановить службу SSH, вам понадобится эта команда:

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

Теперь, если вы хотите отключить его запуск во время загрузки системы, используйте это:

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

Другие клиенты SSH

Инструмент ssh включен в большинство систем * nix, от Linux до macOS, но это не единственные существующие варианты, вот пара клиентов, которые можно использовать из других операционных систем:

    - это бесплатный SSH-клиент для Windows с открытым исходным кодом. Он полон функций и очень прост в использовании. Если вы подключаетесь к своей машине Ubuntu со станции Windows, PuTTY - отличный вариант. - потрясающий инструмент для пользователей Android. Если вы в пути и вам нужен мобильный клиент для подключения к вашей системе Ubuntu, я настоятельно рекомендую попробовать JuiceSSH. Он существует уже почти 10 лет, и его можно использовать бесплатно.
  • И, наконец, Termius доступен для Linux, Windows, macOS, iOS и Android. У него есть бесплатная версия, а также несколько дополнительных опций. Если у вас много серверов и вы работаете с командами, использующими общие соединения, Termius - хороший вариант для вас.

Заключение

С помощью этих инструкций вы можете настроить SSH в качестве серверной службы в системе Ubuntu, чтобы иметь возможность удаленно и безопасно подключаться к вашему компьютеру для работы с командной строкой и выполнения любых необходимых задач.

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

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

Что такое SSH?

SSH или Secure Shell - это протокол безопасного доступа из одного компьютера к другому по сети. У протокола SSH очень много возможностей. Вы можете создавать защищенные соединения между компьютерами, открывать командную строку на удаленном компьютере, запускать графические программы, передавать файлы и организовывать частные сети.

За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.

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

Установить SSH на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве её нет, но зато она есть в официальных репозиториях.

Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

sudo apt install openssh-server

ssh

Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu 20.04 выполните:

sudo systemctl enable sshd

ssh1

Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:

sudo systemctl disable sshd

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

ssh3

В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:

ssh2

Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

$ ssh имя_пользователя @ ip_адрес

Настройка SSH в Ubuntu

С параметрами по умолчанию сервер SSH не очень безопасен поэтому перед тем, как программа будет готова к полноценному использованию ее нужно немного настроить. Все настройки сервера SSH хранятся в конфигурационном файле sshd_config, который находится в папке /etc/ssh.

Перед тем как вносить изменения в этот конфигурационный файл рекомендуется сделать его резервную копию, для этого можете использовать такую команду:

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

Дальше вы можете перейти к настройке конфигурационного файла:

sudo vi /etc/ssh/sshd_config

Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:

ssh4

По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

ssh5

Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.

ssh6

Как настроить авторизацию по ключу в SSH читайте здесь. После того как все настройки будут завершены, сохраните изменения нажав :w и перезапустите службу SSH:

sudo systemctl restart ssh

Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.

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

ssh -p 2222 localhost

К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:

sudo ufw allow 2222

Даже если служба ssh находится на порту по умолчанию, его тоже нужно открыть в брандмауэре если вы собираетесь подключаться к компьютеру через интернет:

sudo ufw allow 22

Настройка ssh Ubuntu 20.04 полностью завершена.

Выводы

Теперь, когда установка SSH в Ubuntu 20.04 завершена, вы можете получить удаленный доступ к своему компьютеру через интернет и быть уверенными что он находится в безопасности. Если у вас остались вопросы, спрашивайте в комментариях.

На завершение видео, где подробно рассказано о том, что такое SSH:

пошаговое руководство по настройке среды разработки WSL с помощью Ubuntu, Visual Studio Code или Visual Studio, Git, Windows диспетчера учетных данных, а также рекомендуемых учебников по всем, что вам может потребоваться.

Установка WSL

подсистема Windows для Linux поставляется с Windows операционной системой, но ее необходимо включить и установить дистрибутив Linux перед началом использования.

чтобы использовать упрощенную команду-install, необходимо запустить последнюю сборку Windows (сборка 20262 +). Чтобы проверить версию и номер сборки, нажмите клавиши Windows+R, введите winver и нажмите кнопку ОК. обновить можно с помощью меню Параметры или помощника Центр обновления Windows.

Если вы предпочитаете установить дистрибутив Linux, отличный от Ubuntu, или вы предпочитаете выполнить эти действия вручную, дополнительные сведения см. на странице установки WSL .

откройте PowerShell (или Windows командной строки) и введите:

Команда --install выполняет следующие действия:

  • включает дополнительные компоненты WSL и платформы виртуальных машин;
  • скачивает и устанавливает последнюю версию ядра Linux;
  • задает WSL 2 в качестве среды по умолчанию;
  • Скачивает и устанавливает дистрибутив Ubuntu Linux (может потребоваться перезагрузка)

В процессе установки потребуется перезагрузить компьютер.

Командная строка PowerShell, выполняющая WSL--install

При возникновении проблем обратитесь к статье об устранении неполадок .

Настройка сведений о пользователе Linux

после завершения процесса установки дистрибутива Linux с WSL откройте дистрибутив (Ubuntu по умолчанию) с помощью меню. Вам будет предложено создать имя пользователя и пароль для дистрибутива Linux.

Для каждого дистрибутива Linux используются свои имя пользователя и пароль, и они не связаны с именем пользователя Windows.

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

Эта учетная запись будет считаться администратором Linux с возможностью запуска административных команд sudo (команд суперпользователя).

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

Дистрибутивы Linux, установленные с помощью WSL, устанавливаются для отдельных пользователей и не могут использоваться совместно с другими учетными записями пользователей Windows. Возникла ошибка имени пользователя? StackExchange: какие символы следует использовать или не использовать в именах пользователей в Linux?

командная строка Ubuntu введите UNIX имя пользователя

Чтобы изменить или сбросить пароль, откройте дистрибутив Linux и введите команду: passwd . Вам будет предложено ввести текущий пароль, а затем появится запрос на ввод нового пароля, который нужно подтвердить.

Если вы забыли пароль для дистрибутива Linux, сделайте следующее.

Откройте PowerShell и перейдите в корень дистрибутива WSL по умолчанию с помощью команды wsl -u root .

Если вам нужно обновить забытый пароль в дистрибутиве, который не используется по умолчанию, используйте команду wsl -d Debian -u root , заменив Debian именем целевого дистрибутива.

После открытия WSLного распространения на корневом уровне в PowerShell можно использовать эту команду для обновления пароля: passwd <username> где <username> — это имя пользователя учетной записи в дистрибутиве, чей пароль забыт.

Вам будет предложено ввести новый пароль UNIX, а затем подтвердить его. Когда вы укажете, что пароль успешно обновлен, закройте WSL в PowerShell, выполнив команду: exit .

Обновление и модификация пакетов

Рекомендуется регулярно обновлять и обновлять пакеты с помощью предпочтительного диспетчера пакетов для распространения. Для Ubuntu или Debian используйте команду:

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

Добавление дополнительных распределений

Настройка Windows Terminal

Windows Terminal может запускать любое приложение с помощью интерфейса командной строки. К его основным функциям относится поддержка нескольких вкладок, панелей, символов Юникода и UTF-8, а также модуль отрисовки текста с ускорением GPU, возможность создания собственных тем и настройки текста, цвета, фона и сочетаний клавиш.

при установке нового дистрибутива WSL Linux для него будет создан новый экземпляр в Windows Terminal , который можно настроить в зависимости от ваших предпочтений.

рекомендуется использовать WSL с Windows Terminal , особенно если планируется работать с несколькими командными строками. Terminal дополнительные сведения о настройке и настройке параметров см. в Windows документах, включая следующие.

    или Windows Terminal (предварительная версия) из Microsoft Store
  • Настройте пользовательские действия , такие как сочетания клавиш, чтобы сделать терминал естественным для ваших предпочтений.
  • Настройка профиля запуска по умолчанию
  • Настройка внешнего вида: Тема, цветовые схемы, имя и начальный каталог, фоновое изображениеи т. д.
  • Узнайте, как использовать аргументы командной строки , например открытие терминала с несколькими командными строками, разделенными на области окна или вкладки
  • Дополнительные сведения о функции поиска
  • Ознакомьтесь с советами и приемами, такими как переименование или изменение цвета вкладки, использование взаимодействия с мышью или включение режима Quake.
  • Ознакомьтесь с учебниками по настройке Powerline, профилей SSHили заголовков вкладок .
  • Найти пользовательскую галерею терминала и руководство по устранению неполадок


Terminal снимок экрана "Data-ссылок =" относительный путь "/>

Хранилище файлов

чтобы открыть проект WSL в Windows проводнике, введите: explorer.exe .
Не забудьте добавить точку в конце команды, чтобы открыть текущий каталог.

Храните файлы проекта в той же операционной системе, что и средства, которые планируется использовать.
Для ускорения производительности Храните файлы в файловой системе WSL, если вы работаете с ними с помощью средств Linux в командной строке Linux (Ubuntu, OpenSUSE и т. д.). если вы работаете в Windows командной строке (PowerShell, командной строке) с инструментами Windows, храните файлы в Windows файловой системе. К файлам можно обращаться по операционным системам, но это может значительно замедлить производительность.

Например, при хранении файлов проекта WSL:

  • Используйте корневой каталог файловой системы Linux: \\wsl$\<DistroName>\home\<UserName>\Project
  • не Windows корневой каталог файловой системы: C:\Users\<UserName>\Project или /mnt/c/Users/<UserName>/Project$

Windows проводника, отображающего хранилище Linux

Настройка предпочтительного редактора кода

рекомендуется использовать Visual Studio Code или Visual Studio, так как они напрямую поддерживают удаленную разработку и отладку с помощью WSL. Visual Studio Code позволяет использовать WSL в качестве полнофункциональной среды разработки. Visual Studio предлагает встроенную поддержку WSL для кросс-платформенной разработки C++.

Использование Visual Studio Code

следуйте этому пошаговому руководству, чтобы приступить к использованию Visual Studio Code с WSL, включающей установку удаленного пакета расширений разработки. это расширение позволяет запускать WSL, SSH или удаленный контейнер для редактирования и отладки с полным набором Visual Studio Code компонентов. Быстро переключаться между разными средами разработки и вносить обновления, не беспокоясь о влиянии на локальный компьютер.

после установки и настройки VS Code можно открыть проект WSL с помощью VS Code удаленного сервера, введя следующее: code .

Не забудьте добавить точку в конце команды, чтобы открыть текущий каталог.

VS Code с отображаемыми расширениями WSL

Использование Visual Studio

следуйте этому пошаговому руководству, чтобы приступить к использованию Visual Studio с WSL для разработки кросс-платформенного программирования на C++. Visual Studio 2022 позволяет создавать и отлаживать проекты cmak в Windows, WSL распределениях и SSH-подключениях из одного и того же экземпляра Visual Studio.

выберите целевую систему в Visual Studio 2022

Настройка управления версиями с помощью Git

Следуйте этому пошаговому руководству, чтобы приступить к работе с Git на WSL и подключить проект к системе управления версиями Git, а также с помощью диспетчера учетных данных для проверки подлинности, использования Git ignore files, понимания завершения строк Git и использования встроенных команд git для VS Code.

Настройка контейнеров удаленной разработки с помощью DOCKER

Следуйте этому пошаговому руководству, чтобы приступить к работе с удаленными контейнерами DOCKER на WSL 2 и подключить проект к удаленному контейнеру разработки с помощью DOCKER Desktop для Windows.

Снимок экрана DOCKER Desktop

Настройка базы данных

Следуйте этому пошаговому руководству, чтобы приступить к работе с базами данных на WSL и подключить проект к базе данных в среде WSL. приступая к работе с MySQL, PostgreSQL, MongoDB, Redis, Microsoft SQL Server или SQLite.

Запуск MongoDB в Ubuntu через WSL

Настройка ускорения GPU для повышения производительности

Следуйте этому пошаговому руководству, чтобы настроить обучение GPU с ускорением машинного обучения в WSL и использовать GPU компьютера (графический процессор) для ускорения интенсивных рабочих нагрузок с высокой производительностью.

Основные команды WSL

дистрибутивы Linux, устанавливаемые через WSL, лучше управлять с помощью PowerShell или Windows командной строки (CMD). Список основных команд, с которыми следует ознакомиться при использовании WSL, см. в справочном руководстве по командам WSL .

кроме того, многие команды поддерживают взаимодействие между Windows и Linux. Вот несколько примеров.

запуск средств Linux из Windows командной строки: откройте PowerShell и отобразите содержимое каталога с помощью ls -la команды Linux, введя: wsl ls -la

сочетание команд linux и Windows. в этом примере для вывода списка файлов в каталоге используется команда linux. затем команда PowerShell findstr используется для фильтрации результатов слов, содержащих "git": wsl ls -la | findstr "git" . это также можно сделать с помощью команды Windows dir Linux grep : dir | wsl grep git .

запустите Windows средство непосредственно из командной строки WSL: Например, чтобы открыть файл. bashrc (сценарий оболочки, запускаемый при запуске командной строки Linux), введите: notepad.exe .bashrc

запустите средство Windows ipconfig.exe с помощью средства Linux Grep. в этом примере демонстрируется средство ipconfig в Windowsной файловой системе, используемой для вывода текущих значений конфигурации сети TCP/IP, а затем фильтруется только в результате IPv4 с помощью grep, средства Linux.

Подключение внешнего диска или USB

Следуйте этому пошаговому руководству, чтобы приступить к подключению диска Linux в WSL 2.

Установка и настройка SSH на сервере с Ubuntu

В этой статье мы создадим виртуальную машину с Ubuntu 18.04 LTS 64-bit и выполним настройки для безопасного взаимодействия с сервером.

SSH (Secure Shell) — протокол с шифрованием для безопасного обмена данными между элементами ИТ-инфраструктуры. Чаще всего SSH используется для управления серверами с операционными системами семейства Linux и различным сетевым оборудованием.

Чтобы создать сервер, откроем панель управления Selectel и перейдем в меню Облачная платформа, затем выберем подходящий дата-центр и создадим нужный сервер.


В нашем примере используется виртуальный сервер с фиксированной конфигурацией в виде 1 ядра CPU, 1 Гб оперативной памяти, 10 Гб пространства на жестком диске и операционной системой Ubuntu 18.04 LTS 64-bit.


Далее нажимаем Создать и уже через несколько минут сервер готов к работе. Для удобства доступа к серверу, также был заказан плавающий внешний IP-адрес.


После успешного создания сервера, можно запускать консоль и настроить подключение по SSH. В Ubuntu за это отвечает утилита OpenSSH. В статье мы рассмотрим настройку доступа по ключам, настройку firewall, отключение аутентификации по паролю и проделаем некоторые другие вещи.

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

OpenSSH — это бесплатный SSH-сервер, дающий возможность интерактивного управления сервером. Для установки SSH на сервер воспользуемся встроенным в Ubuntu пакетным менеджером apt:

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


Теперь добавим SSH-сервер в автозагрузку. При следующем запуске сервера, операционная система выполнит автоматический запуск SSH-сервера. Как и в случае с другими сервисами systemd позволяет управлять параметрами запуска, автозагрузки и рестарта демона OpenSSH. Включим автозапуск:

В результате получим:


Проверим работоспособность утилиты:

И убедимся, что всё корректно работает:


Как настроить SSH

Настройка SSH на Ubuntu необходима для улучшения защищенности системы. Например, можно отключить возможность входа от имени пользователя root или изменить порт подключения со стандартного 22 на произвольный. Лучше использовать порты из верхнего диапазона (50000-65000). Напомним, что в стеке протоколов TCP/IP доступно 65536 портов.

Настройка выполняется выполняется в конфигурационном файле. Перед его модификацией, создадим резервную копию.

Вот теперь можно менять порт. Все изменения конфигурации SSH выполняются в файле /etc/ssh/sshd_config. Откроем его на редактирование:

Раскомментируем строку Port 22 и изменим значение на 55555. Но мы должны вас предостеречь, боты прежде всего сканируют порты с одинаковыми цифрами, поэтому в промышленных средах лучше использовать номер порта с отличными друг от друга цифрами.


Далее нужно отключить возможность входа на сервер учетной записи суперпользователя (root) и добавить возможность входить через ключи. Для этого изменим значения параметров PermitRootLogin на no и PubkeyAuthentication на yes:


После этого следует перезагрузить демон SSH. Соединение при этом будет разорвано и подключиться можно будет через новый порт и пользовательскую учетную запись (она должны быть предварительно создана).

Переподключимся от обычной учетной записи и по другому порту:

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

Как создать пару ключей RSA

Еще один способ аутентификации на сервере — пара ключей RSA: открытый и закрытый. Открытый хранится на сервере, к которому будет выполняться подключение, а закрытый на удаленном компьютере (или другом сервере) откуда выполняется подключение.


Чтобы сгенерировать такую пару ключей, достаточно выполнить команду:

Команду нужно выполнять на своей рабочей станции от имени пользователя, который будет в дальнейшем подключаться к удаленному компьютеру. Путь к хранению ключей можно оставить по умолчанию:


Ключи созданы, можно переходить к следующему шагу — копированию открытого ключа на удаленный сервер. Предварительно убедитесь, что на том сервере создана учетная запись, от имени которой вы будете подключаться.

Как скопировать открытый ключ на сервер

Чтобы скопировать ключ на удаленный сервер, выполним следующую команду:

В этом примере 95.213.154.235 — это IP-адрес удаленного сервера. После ввода пароля, ключ копируется папку .ssh домашней директории пользователя.

Вывод обеих команд на скриншоте ниже.


Как пройти аутентификацию на сервере через созданный ключ

Сразу же после выполнения копирования, проверим доступ при помощи созданной пары ключей:

Если подключение по SSH будет успешным — все настройки были выполнены корректно.


Как выполнить отключение аутентификации по паролю

Для отключения возможности входа по паролю необходимо в файле /etc/ssh/sshd_config отредактировать значение PasswordAuthentication и присвоить no.


После изменения настроек перезагружаем службу SSH:

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


При этом подключение при помощи ключа будет успешным.


Отключение доступа паролю — верная стратегия повышения безопасности сервера. Особенно в публичных облаках. Однако, если ключ будет утерян, это станет серьезной проблемой. Поэтому важно его хранить в надежном месте или пользоваться специализированными инструментами, например, аппаратным устройством Yubikey.

Как настроить стандартный firewall

В Ubuntu есть встроенный фаервол Netfilter, который может управляться как непосредственно вызовом утилиты iptables с параметрами так и специальной утилитой UFW (Uncomplicated Firewall). Мы разберем оба варианта.

Iptables на нашем демо-стенде уже установлен, но если в вашем дистрибутиве его нет — можно воспользоваться пакетным менеджером apt:

При работе с iptables можно настроить три типа правил: INPUT — для входящих соединений, OUTPUT — для исходящих и forward для транзитных (используется для маршрутизаторов). Для сервера актуальны первые два.

В iptables доступны следующие функции управления:

  • A — добавить правило в цепочку;
  • С — проверить все правила;
  • D — удалить правило;
  • I — вставить правило с нужным номером;
  • L — вывести все правила в текущей цепочке;
  • S — вывести все правила;
  • F — очистить все правила;
  • N — создать цепочку;
  • X — удалить цепочку;
  • P — установить действие по умолчанию.

Например, чтобы посмотреть настроенные правила можно выполнить команду


Теперь попробуем заблокировать все пакеты от узла 10.10.10.10:

При помощи комбинаций перечисленных выше опций можно настроить любую требуемую логику работы с сетевыми пакетами.

Если перечисленные выше опции показались сложными, можно упростить задачу настройки фаервола и воспользоваться утилитой ufw. Перед началом работы, установим ее при помощи пакетного менеджера apt:

После установки можно начинать работать с правилами. Разрешим все исходящие соединения и запретим все входящие:

В выводе увидим:


В примерах выше мы меняли порт для доступа по SSH на 55555. Создадим правило для доступа по этому порту:

В выводе получим:


Теперь включим сам фаервол.

Обратите внимание на предупреждение системы об отключении SSH-подключений, если вдруг вы забыли добавить соответствующее правило. Но мы его добавили, поэтому смело включаем фаервол.


После включения фаервола, проверим его настройки командой:

В выводе увидим:


Дополнительно можно настроить доступ с определенного IP-адреса (или диапазона адресов), на определенный порт.

При помощи правил UFW можно также применять правила к определенным сетевым интерфейсам сервера.

Как настройки подключения по SSH влияют на безопасность

В этом разделе разберем основные настройки для повышения уровня безопасности SSH. Все настройки выполняются в уже известном конфигурационном файле /etc/ssh/sshd_config.

Первая настройка — проверка соответствия DNS-имени IP-адресу клиента. За это отвечает параметр UseDNS.

Следующий шаг к безопасности — запрет пустых паролей. Задается в параметре PermitEmptyPasswords.

Дополнительно можно ограничить количество неудачных попыток подключения:

Еще один подход к ограничению несанкционированных подключений — задание пользователей и групп, которым разрешен доступ по SSH. Они перечисляются в параметрах AllowUsers и AllowGroups.

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

Отключение пользователя при бездействии позволит предотвратить доступ злоумышленника, если пользователь вдруг отлучился от своего рабочего места. Значение задается в секундах

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

Нельзя не упомянуть про эффективный инструмент борьбы с попытками аутентификации — утилите fail2ban. Это сервис, который читает лог безопасности и блокирует злоумышленников по IP. Штатно устанавливается при помощи apt:

После установки появляются два конфигурационных файла: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Первый отвечает за настройки запуска fail2ban, а второй за настройки защиты конкретных сервисов.

Заключение

Мы рассказали об основных настройках протокола SSH, которые помогут уберечь Ubuntu-сервер от несанкционированного доступа. Особенно важно их использовать при расположении сервера в публичных облаках с публичным IP-адресом. На скриншоте ниже вы видите журнал безопасности системы, на которой мы проводили перечисленные в этой статье настройки. В нем видно, что попытки авторизаций под разными пользователями (root, system и другими) происходят регулярно.


Перечисленных в этой статье настроек достаточно для обеспечения базовой безопасности сервера и предотвращения его вовлечения в бот-сети.

Читайте также: