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

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

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


1. Что такое SSH и почему это необходимо?



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

  • Для разработчиков: необходимо для развертывания и управления облачными серверами, такими как AWS, Azure и т.д.

  • Для неразработчиков: позволяет безопасно управлять своим ПК, NAS, Raspberry Pi и т.д. издалека.

2. Настройка сервера (Remote): первый шаг к безопасности

Установка openssh-server на сервере (удаленной машине) — это только начало. Использование базовых настроек сразу после установки создает серьезные уязвимости в безопасности.

Местоположение конфигурационного файла на Linux: /etc/ssh/sshd_config. Изменив этот файл, вы должны обеспечить минимальную защиту.

Редактирование конфигурационного файла: sudo nano /etc/ssh/sshd_config

Практическая настройка 1: Изменение порта (Port Change)

SSH использует 22 порт по всему миру. Автоматизированные боты хакеров сосредоточены на атаке именно этого порта. Простое изменение номера порта может помочь избежать более 90% атак брутфорса.

# Port 22  <-- закомментируйте или удалите
Port 22022  # рекомендуется использовать произвольный номер порта после 1024

Практическая настройка 2: Отключение аутентификации по паролю (Password Authentication No)

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

PasswordAuthentication no

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

3. Настройка клиента (Client): секреты создания и регистрации ключа



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

Секрет 1: Создание идентифицируемого ключа (-C опция)

При создании ключа не просто введите ssh-keygen. Когда ключей станет много, будет сложно понять, для чего предназначен каждый ключ. Обязательно используйте опцию комментариев (Comment).

# -t ed25519: новый метод шифрования (отличная скорость и безопасность)
# -C: добавляет комментарий к файлу ключа для облегчения идентификации.
ssh-keygen -t ed25519 -C "my-macbook-pro-home-server-key"

Сгенерированный ключ будет сохранен в директории ~/.ssh/. (id_ed25519: закрытый ключ, id_ed25519.pub: открытый ключ)

Секрет 2: Самый простой способ копирования ключа (ssh-copy-id)

Отправьте созданный открытый ключ (pub) на сервер. Сэкономьте себе время, используя одну строку команды без необходимости копировать и вставлять текст.

# Синтаксис: ssh-copy-id -i [путь к открытому ключу] [пользователь]@[адрес сервера] -p [порт]
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@192.168.1.100 -p 22022

# Если сервер подключен через DNS-домен, вместо ip можно просто ввести DNS, так как ваш маршрутизатор преобразует его в IP.
ssh-copy-id -i ~/.ssh/id_ed25519.pub alice@wonderland.com -p 22022

Эта команда автоматически добавляет ваш открытый ключ в файл ~/.ssh/authorized_keys на сервере.

Секрет 3: Важно при ручной регистрации (Проблемы с правами)

Если вы не можете использовать ssh-copy-id и вам нужно зарегистрироваться вручную, следите за правами на файл (Permission). SSH откажет в доступе, если права слишком открыты.

После доступа к серверу в домашнем каталоге проверьте следующее:

  1. .ssh каталог: права 700 (только я имею права на чтение/запись/выполнение)

  2. authorized_keys файл: права 600 (только я имею права на чтение/запись)

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

Если вы хотите узнать больше о правах файловой системы Linux, нажмите здесь, чтобы узнать更多!

4. Тестирование подключения и следующие шаги

Когда все готово, попробуйте подключиться. Изменив порт, вам нужно использовать опцию -p.

ssh -p 22022 user@192.168.1.100
# Независимо от того, это LAN IP, WAN IP или DNS-домен, важно, чтобы сервер четко определялся.

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


изображение подключения к серверу через ssh

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

📖 Полезные дополнительные руководства

  1. Использование SSH: от написания команд до полного освоения полезных опций!

  2. Первый шаг к автоматизации подключения SSH: овладение конфигурационным файлом

  3. SSH реверс-порт-переадресация: магия подключения извне внутрь (feat. -R опция)

  4. SSH keygen: идеальное руководство для начинающих

  5. Управление файлами на сервере через SSH без терминала: использование SFTP и графического файлового менеджера!

  6. Защитник Linux-сервера, Fail2Ban


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