Спасибо вам за то, что любите статьи о 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 откажет в доступе, если права слишком открыты.
После доступа к серверу в домашнем каталоге проверьте следующее:
-
.sshкаталог: права700(только я имею права на чтение/запись/выполнение) -
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: от написания команд до полного освоения полезных опций!
-
Первый шаг к автоматизации подключения SSH: овладение конфигурационным файлом
-
SSH реверс-порт-переадресация: магия подключения извне внутрь (feat. -R опция)
В следующем посте мы рассмотрим SSH Config файл, который многих ставит в тупик, и каким образом можно подключаться к серверу с помощью одного слова без сложных опций. Пожалуйста, ознакомьтесь и с другими статьями!
Комментариев нет.