Давайте дружить в Телеграме: рассказываем про новые фичи, общаемся в комментах, прислушиваемся к вашим идеям Подписаться

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

Команда Timeweb Cloud
Команда Timeweb Cloud
Наши инженеры, технические писатели, редакторы и маркетологи
25 марта 2022 г.
9657
10 минут чтения
Средний рейтинг статьи: 3

New Documentation

Secure Shell (SSH) — это сетевой протокол, который используется для безопасного соединения между клиентом и сервером. Каждое взаимодействие шифруется. Это позволяет безопасно управлять хостом, передавать файлы и решать другие задачи.

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

Установка И Настройка Ssh На Сервере С Ubuntu (1)

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

  1. Разместить компоненты SSH-сервера на машине, которая действует как сервер. Это обеспечивается пакетом openssh-server.
  2. Иметь клиентский компонент SSH на компьютере, с которого вы хотите подключиться к удаленному хосту. Для этого обычно используют пакет openssh-client, который предустановлен в большинстве дистрибутивов Linux и BSD. На Windows для решения подобных задач требуется установка дополнительных утилит. Одно из самых популярных решений — PuTTY.

Включение SSH

По умолчанию удаленный доступ через защищенный сетевой протокол запрещен. Однако установка SSH в Ubuntu выполняется очень просто.

Запустите консоль сервера, на котором требуется настройка SSH в Ubuntu. 

Обновите пакетный менеджер. 

sudo apt update

Установите необходимое ПО:

sudo apt install openssh-server

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

OpenSSH Ubuntu запускается автоматически после установки. Но вы можете проверить его статус, используя команду:

sudo systemctl status ssh

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

ssh.service - OpenBSD Secure Shell server
    Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
    Active: active (running) since Mon 2022-03-21 12:34:00 CEST; 1m ago
...

Это значит, что команда Install SSH Ubuntu выполнена успешно. Чтобы вернуться в командную строку, нажмите клавишу q.

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

sudo systemctl enable --now ssh

Ubuntu поставляется с инструментом настройки брандмауэра под названием UFW. Если в вашей системе включен брандмауэр, обязательно откройте порт SSH:

sudo ufw allow ssh

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

Создание пары ключей

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

Посмотрим, как создавать ключи в разных ОС. Начнем с Ubuntu.

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

ssh-keygen -t rsa

Появится вопрос, куда сохранить ключи. Если вы нажмете Enter, по умолчанию пара ключей будет сохранена в подкаталоге .ssh папки home. Вы также можете указать альтернативный путь, где вы хотите сохранить пару ключей. Но рекомендуется использовать каталог по умолчанию. Это заметно упрощает дальнейшее управление.

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

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

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

ls -l ~/.ssh/id_*.pub 

В терминале отобразится список ключей.

Аналогичным образом можно сгенерировать пару на macOS

Если вы пользуетесь Windows, то проще скачать набор утилит PuTTY. В нем есть приложение PuTTYgen. Чтобы создать с его помощью пару ключей, достаточно провести мышкой. В PuTTYgen тоже можно выбрать папку для хранения ключей и добавить парольную фразу для максимальной защиты.

Добавление ключа на сервер

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

Если у вас есть доступ к хосту по паролю, можно перенести открытый ключ с помощью ssh-copy-id. Пример команды:

ssh-copy-id timeweb@192.168.18.76 

Вместо ‘timeweb’ введите свое имя пользователя, вместо ‘192.168.18.76’ — IP-адрес сервера. В ответ появится запрос пароля. Введите его, после чего открытая часть отправится на хост.

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

ssh timeweb@192.168.18.76. 

Вместо ‘timeweb’ введите свое имя пользователя, вместо ‘192.168.18.76’ — IP-адрес сервера. Если вы не установили парольную фразу, вы можете войти в систему без дополнительной аутентификации. Система защиты проверит открытую и закрытую части ключа и при совпадении установит соединение.

Изменение конфигурации

Настройка Ubuntu Server выполняется через файл /etc/ssh/sshd_config. Но прежде чем вносить в него изменения, сделайте резервную копию. Это убережет вас от потери времени на переустановку, если вдруг совершите ошибку.

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

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

В /etc/ssh/sshd_config.factory-defaults сохранятся стандартные параметры. Вы же будете редактировать файл /etc/ssh/sshd_config.

Отключение аутентификации по паролю

Аутентификация по паролю на SSH Server Ubuntu — это неплохо. Но создание длинного и сложного пароля также может подтолкнуть вас к его незащищенному хранению. Использование ключей шифрования для аутентификации соединения является более безопасной альтернативой. В таком случае пароль может оказаться ненужным. В целях повышения безопасности рекомендуется его отключать.

Прежде чем продолжить, имейте в виду следующее:

  • Отключение аутентификации по паролю увеличивает вероятность того, что вы будете заблокированы на своем сервере.
  • Вы можете быть заблокированы, если потеряете свой закрытый ключ или сломаете файл ~/.authorized_keys .
  • Если вы заблокированы, вы больше не сможете получить доступ к файлам любых приложений.

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

Чтобы отключить аутентификацию по паролю, подключитесь к серверу с правами root и отредактируйте файл sshd_config. Откройте его и измените параметр PasswordAuthentication. Вместо ‘Yes’ установите значение ‘No’. 

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

sudo systemctl restart sshd

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

Отключение доступа для root

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

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

Откройте файл Ubuntu SSH config для редактирования:

sudo vi /etc/ssh/sshd_config

Измените значение PermitRootLogin на ‘No’.

Существует также возможность разрешить аутентификацию пользователя root с помощью любого другого разрешенного механизма, кроме пароля. Для этого установите параметру PermitRootLogin значение ‘prohibit-password’.

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

Чтобы применить обновленную конфигурацию sshd permitrootlogin, перезапустите службу:

sudo systemctl restart sshd

Изменение стандартного порта

По умолчанию Open Server Ubuntu использует 22 порт. Чтобы повысить безопасность, вы можете установить любое другое значение. Рекомендуется использовать порты из верхнего диапазона — от 50000 до 65000. Желательно подбирать номера, в которых все цифры отличаются, например 56713.

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

sudo vi /etc/ssh/sshd_config

Раскомментируйте строку ‘Port 22’. Вместо 22 укажите другой номер — например, ‘Port 56713’. Сохраните изменения и закройте файл.

Чтобы применить конфигурацию, перезапустите службу:

sudo systemctl restart sshd

После успешного перезапуска убедитесь, что теперь подключение проходит по другому порту:

ssh -p 56713 user@ip_server

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

Настройка туннелирования

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

Есть три типа туннелирования (переадресации):

  • локальное,
  • удаленное,
  • динамическое.

Для настройки некоторых типов придется редактировать файл configure SSH.

Локальная переадресация

Это переадресация порта с клиентского компьютера на удаленный. Затем соединение перенаправляется на другой порт целевого компьютера.

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

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

Для локальной переадресации используется аргумент -L. Пример команды:

ssh timeweb@server.example -L 8080:server1.example:3000 

Теперь откройте браузер на локальном компьютере. Вы можете использовать localhost:8080 для доступа к удаленному приложению вместо доступа к нему с использованием адреса server.example:3000.

Удаленная переадресация

Удаленная переадресация позволяет подключаться к локальному компьютеру с удаленного. SSH по умолчанию не поддерживает перенаправление удаленных портов. Поэтому вам нужно включить его в файле конфигурации SSH. Для этого потребуется дополнительная настройка сервера Ubuntu. 

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

sudo vi /etc/ssh/sshd_config 

Установите для параметра GatewayPorts значение ‘Yes’.

Сохраните изменения и перезапустите службу:

sudo systemctl restart sshd

Для настройки переадресации используйте аргумент -R. Пример команды:

ssh -R 8080:127.0.0.1:3000 -N -f user@remote.host 

После выполнения этой команды хост будет прослушивать порт 8080 и перенаправлять весь трафик на порт 3000, который открыт на локальном компьютере.

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

Динамическая переадресация

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

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

Для настройки динамического туннелирования используется аргумент SSH -D. Пример команды:

ssh -D 9090 -N -f user@remote.host

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

Отключение SSH

Чтобы отключить openssh server, остановите службу SSH, выполнив команду:

sudo systemctl disable --now ssh

Запустить службу обратно можно командой:

sudo systemctl enable --now ssh

Команда Enable SSH в Ubuntu не переустанавливает ПО, так что ничего заново настраивать не придется. Она просто включает установленную и настроенную ранее службу.

Заключение

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

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

Зарегистрируйтесь и начните пользоваться
сервисами Timeweb Cloud прямо сейчас

15 лет опыта
Сосредоточьтесь на своей работе: об остальном позаботимся мы
165 000 клиентов
Нам доверяют частные лица и компании, от небольших фирм до корпораций
Поддержка 24/7
100+ специалистов поддержки, готовых помочь в чате, тикете и по телефону