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

Роль SSH в современной архитектуре и инфраструктуре

SSH используется в самых разнообразных сферах, таких как:

  • Разработка ПО. С помощью многих редакторов кода, которые поддерживаю SSH можно удаленно запускать приложения, подключаться к серверу, и работать отдаленно на локальной машине.
  • Доступ к облачным сервисам, таких как Azure, AWS, и другим предоставляется через SSH.
  • Можно управлять серверной инфраструктурой запуская обновления, добавляя новые сервисы, или исправляя ошибки.
    – Автоматизация задач с помощью Python или Bash для задач на удаленных машинах.
  • SSH используется для безопасного взаимодействия между устройствами.

Как функционирует SSH: базовые механизмы и концепции

SSH функционирует на базе асимметричного шифрования, где для кодировки данных используются 2 ключи:

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

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

Установка и первоначальная настройка SSH-клиента и сервера

Давайте рассмотрим основной алгоритм установки соединения:

  1. Отправляется запрос на соединение с сервером.
  2. Открытый ключ передается клиенту.
  3. Клиент шифрует информацию с помощью открытого ключа и отправляет его обратно.
  4. Сервер проверяет подлинность юзера и завершает соединение.

 

Часто спрашивают: Основы SSH: как использовать и список полезных команд

Настройка SSH в Linux и macOS

SSH в системах на macOS и Linux встроены по умолчанию. Для того чтобы проверить наличие клиента используйте:

ssh -V

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

ssh user@host

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

ssh-keygen -t rsa -b 4096

Следующий важный момент – это копирование открытого ключа с помощью:

ssh-copy-id user@host

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

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

В системах на Windows 10 и выше уже присутствует OpenSSH, потому для подключения нужно открыть PowerShell и использовать:

ssh user@host

Для ранних версий Windows можно использовать PuTTy.

Для настройки доступа нужно установить SSH-сервер с помощью:

sudo apt install openssh-server

Далее нужно настроить конфигурацию, сначала откройте файл /etc/ssh/sshd_config и внесите следующие изменения:

  • Используйте нестандартный порт, к примеру:

Port 2222

  • Cледующим шагом будет запрет root-юзера и отключение аутентификации с помощью пароля.

PermitRootLogin no

PasswordAuthentication no

  • Далее нужно перезапустить с помощью:

sudo systemctl restart ssh

Управление файлами и данными по SSH

Кроме других нужных функций, SSH в первую очередь используется для передачи файлов. Наиболее часто использованными инструментами для этого процесса есть – SFTP и SCP. Давайте приступим к разбору базовых инструментов и деталей касательно SSH-туннелирования.

SCP: базовый инструмент для быстрого копирования файлов

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

Для загрузки файла на сервер можно использовать следующую команду:

scp file.txt user@host:/path

Для скачивания файла используйте:

scp user@host:/path/to/remote/file.txt /local/destination

 

Это интересно: Руководство по подключению к серверу через SFTP в WinSCP

Дополнительные материалы по работе с протоколами передачи

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

Для подключения к серверу используйте:

sftp user@host

Работа с несколькими ключами и сегментация доступа

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

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

# Server 1

Host server1

            HostName example.com

            User user1

            IdentityFile ~/.ssh/id_rsa_server1

# Server 2

Host server2

            HostName example2.com

            User user2

            IdentityFile ~/.ssh/id_rsa_server2

# Server 3

Host server3

            HostName example3.com

            User user3

            IdentityFile ~/.ssh/id_rsa_server3

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

ssh server3

Использование SSH-агента для безопасного хранения ключей и автоматизации

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

eval “$(ssh-agent -s)”

Для добавления ключа используйте:

ssh-add ~/.ssh/id_rsa

Итоговые рекомендации по безопасной и эффективной работе с SSH

SSH – это отличный вариант для управления серверами и удаленного доступа, с помощью которого также можно безопасно передать файлы с SFTP и SCP. Данные протоколы гарантируют удобство в работе с файлами.