SSH начало

SSH начало

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

Принципы Работы

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

  1. Парольная аутентификация: Самый простой метод, но не самый безопасный, так как пароли могут быть перехвачены зловредными программами.
  2. Аутентификация на основе ключей: Более безопасна, требует наличия пары ключей — закрытого (на клиенте) и открытого (на сервере).
  3. Двухфакторная аутентификация (2FA): Объединяет пароль или ключи с дополнительным фактором, например, SMS или токеном, для повышения уровня безопасности.

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

Возможности SSH

Удаленное Управление Сервером

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

Передача Файлов

SSH также поддерживает безопасную передачу файлов между устройствами с помощью таких утилит, как SCP (Secure Copy Protocol) и SFTP (SSH File Transfer Protocol). Эти инструменты обеспечивают защиту файлов во время передачи, предотвращая их интерцепцию и модификацию.

Туннелирование и Переадресация Портов

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

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

  • Безопасность: Предлагает высокую степень защиты данных благодаря шифрованию и возможностям многофакторной аутентификации.
  • Универсальность: Поддерживается большинством современных операционных систем, включая Windows, Linux и macOS.
  • Гибкость: Позволяет выполнять множество задач, от удаленного управления до передачи данных и создания VPN-подключений.

От теории к практике

Генерация SSH ключей

  1. Откройте терминал (Mac, Linux или Windows)
  2. Вставьте текст ниже, заменив адрес электронной почты, использованный в примере, на свой адрес электронной почты.
ssh-keygen -t ed25519 -C "[email protected]"
Если вы используете устаревшую систему, которая не поддерживает алгоритм Ed25519, используйте:
ssh-keygen -t rsa -b 4096 -C "[email protected]"

А ещё не слушайте тех умников, которые говорят, что ключи rsa безопаснее ed25519.

  1. Укажите пусть к которому будет создан Ваш ключ или просто нажминте Enter.
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/user/.ssh/id_ed25519):
  1. Обязательно укажите парольную фразу для ключа, она поможет защитить Ваши сервера в случае компрометации ключа.
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
  1. После этого ключ будет создан, а на консоль выведется следующее сообщение:
Your identification has been saved in /home/user/.ssh/example
Your public key has been saved in /home/user/.ssh/example.pub
The key fingerprint is:
SHA256:O+pZQGZevJOFlHLtGuHB8ffQ7p4LSwSGwSXgblJPDro [email protected]
The key's randomart image is:
+--[ED25519 256]--+
|      .+==.      |
|     ..oB*.  .   |
|      B+*+= o .  |
|     O *o=.o +   |
|    o = So  . o  |
|     + ..o . .   |
|    E   +   o .  |
|       + . . + . |
|     .+     . +. |
+----[SHA256]-----+

Выполнив команду

cat /home/user/.ssh/example.pub

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

ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICobxjBi4wfdHlYYlKiHnWCU+SU6Q0jj9RGau0yFho9F [email protected] 

Добавление публичного ключа в список авторизованных ключей на сервере.

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

При создании сервера в панели управления хостера

У любого крупного хостера можно добавить свой публичный ключ в консоли управления, для примера приведу немецкий Hetzner

В ручную через редактирование файла authorized_keys

Используйте любой текстовый редактор, например, nano или vim:

nano ~/.ssh/authorized_keys

Вставьте содержимое вашего публичного ключа в этот файл и сохраните изменения. Убедитесь, что у директории ~/.ssh права 700, а у файла authorized_keys права 600:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Частые ошибки

Permission denied (publickey).

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

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

В следующей статье планирую рассказать о безопасной настройке SSH.