SSH — это протокол, через который вы управляете VPS: запускаете команды, редактируете файлы, устанавливаете софт. Общий обзор способов входа на сервер (SSH и RDP) разобран в статье о подключении к VPS, а здесь — только про SSH: как он устроен, чем вход по ключу лучше пароля и как закрыть основную дыру, через которую сервер обычно ломают, — перебор пароля.
SSH-подключение к VPS: как настроить и защитить
Что будет в статье
Как устроено SSH-подключение
Подключение по паролю и по ключу
Настройка входа по SSH-ключу
Базовая защита от перебора паролей
Типичные ошибки при подключении
Как устроено SSH-подключение
SSH (Secure Shell) — сетевой протокол для удалённого управления сервером через зашифрованный канал. Клиент (ваш компьютер) устанавливает соединение с сервером по IP-адресу на определённом порту — по умолчанию это порт 22. Весь трафик внутри сессии шифруется, поэтому пароль или ключ, которые вы передаёте, не видны при перехвате.
Для подключения нужны три вещи: IP-адрес VPS, имя пользователя (обычно root или отдельный созданный пользователь) и способ аутентификации — пароль или SSH-ключ. Эти данные провайдер обычно присылает после активации сервера; что делать сразу после получения доступа, подробно описано в статье о первых шагах после покупки VPS.
Базовая команда для входа с Linux, macOS или Windows (через встроенный терминал начиная с Windows 10) выглядит так:
ssh root@188.0.0.1
При первом подключении клиент покажет отпечаток (fingerprint) ключа сервера и спросит, доверяете ли вы ему — это нормально, набираете yes и продолжаете. Если этот же вопрос появляется повторно на сервере, которым вы уже пользовались, — сервер могли переустановить или подменить, и стоит уточнить это у провайдера, а не игнорировать предупреждение.
Подключение по паролю и по ключу: что выбрать
Оба способа технически работают одинаково — устанавливают зашифрованное соединение. Разница в том, как сервер проверяет, что подключаетесь именно вы.
| Способ | Плюсы | Минусы |
|---|---|---|
| Пароль | Не нужно ничего настраивать заранее, подходит для разового входа с любого устройства | Уязвим к автоматическому перебору (brute force), пароль можно подсмотреть или перехватить при неосторожном хранении |
| SSH-ключ | Практически невозможно подобрать перебором, не нужно вводить пароль при каждом входе | Нужна разовая настройка, приватный ключ нужно хранить только на своих устройствах |
Для постоянной работы с VPS вход по ключу — стандарт де-факто: он и удобнее, и заметно безопаснее. Пароль имеет смысл оставить только как запасной вариант или временно, пока ключ не настроен.
Как создать SSH-ключ
Ключ создаётся на вашем компьютере, а не на сервере. Это пара файлов: приватный ключ (остаётся только у вас) и публичный ключ (загружается на VPS). Команда на Linux, macOS и в Windows (PowerShell или Git Bash):
ssh-keygen -t ed25519 -C "my-vps-key"
Если алгоритм ed25519 недоступен в вашем клиенте (это касается в основном старых систем), используйте RSA с длиной ключа не менее 4096 бит:
ssh-keygen -t rsa -b 4096 -C "my-vps-key"
Программа спросит, куда сохранить файлы (по умолчанию — папка ~/.ssh, оставить как есть обычно правильно) и предложит задать пароль на сам ключ (passphrase). Это дополнительный уровень защиты: даже если приватный ключ украдут, без passphrase им не воспользуются. Для личного устройства можно оставить поле пустым, но для рабочего или общего компьютера passphrase стоит задать.
В результате в папке ~/.ssh появятся два файла: id_ed25519 (приватный — никому не передавать) и id_ed25519.pub (публичный — его нужно загрузить на сервер).
Как загрузить публичный ключ на сервер
Самый простой способ — утилита ssh-copy-id, доступная на Linux и macOS:
ssh-copy-id root@188.0.0.1
Она попросит один раз ввести пароль от сервера и сама добавит публичный ключ в нужный файл. Если ssh-copy-id недоступна (например, в Windows без Git Bash), ключ можно скопировать вручную:
cat ~/.ssh/id_ed25519.pub | ssh root@188.0.0.1 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
Права доступа здесь важны не для галочки: SSH на сервере откажется использовать authorized_keys, если права на папку .ssh или сам файл слишком открытые. Именно из-за неверных прав чаще всего возникает ошибка Permission denied (publickey) уже после того, как ключ вроде бы добавлен.
После этого проверьте вход по ключу в новой сессии терминала, не закрывая старую:
ssh -i ~/.ssh/id_ed25519 root@188.0.0.1
Если подключение прошло без запроса пароля — ключ настроен верно.
Отключение входа по паролю
Настройки SSH-сервера хранятся в файле /etc/ssh/sshd_config. Откройте его редактором, например nano:
sudo nano /etc/ssh/sshd_config
Найдите (или добавьте) параметр и приведите его к такому виду:
PasswordAuthentication no
Сохраните файл и перезапустите службу SSH:
sudo systemctl restart sshd
Затем, не закрывая текущее подключение, откройте новое окно терминала и попробуйте зайти по паролю — сервер должен отказать. Если что-то пошло не так, у вас останется рабочая сессия, через которую можно откатить изменение.
Что ещё усиливает защиту SSH
Отключение пароля закрывает основной вектор атаки, но есть ещё несколько мер, которые обычно применяют вместе с ним:
- Запрет прямого входа под root (
PermitRootLogin no) с переходом на отдельного пользователя с sudo-правами; - Смена порта SSH с 22 на нестандартный — не столько защита, сколько снижение количества «шумовых» автоматических атак в логах;
- Ограничение доступа к порту SSH через firewall — конкретные правила и утилиты вроде
ufwразобраны в статье про настройку firewall на VPS; - Установка fail2ban для автоматической блокировки IP после нескольких неудачных попыток входа.
Это уже общие меры защиты сервера, а не только SSH — полный подход к безопасности VPS, включая обновления системы и мониторинг попыток входа, собран в статье о безопасности VPS.
Подключение с телефона
SSH-доступ не привязан к конкретному устройству — с телефона это делается через мобильные SSH-клиенты, например Termius (iOS, Android) или JuiceSSH (Android). Логика та же: указываете IP-адрес, порт, имя пользователя и либо пароль, либо импортированный приватный ключ. Для разового заглянуть на сервер и перезапустить сервис этого достаточно; для постоянной работы с кодом или конфигурацией удобнее компьютер.
Типичные ошибки при подключении по SSH
| Ошибка | Вероятная причина |
|---|---|
| Permission denied (publickey) | Неверные права на .ssh или authorized_keys, ключ не добавлен на сервер, либо в команде указан не тот приватный ключ |
| Connection refused | Служба SSH не запущена, либо порт заблокирован firewall на сервере |
| Connection timed out | Неверный IP-адрес, сервер недоступен по сети, либо порт закрыт на уровне сети провайдера |
| Host key verification failed | Сервер был переустановлен или заменён — старый отпечаток ключа не совпадает с новым (либо это признак подмены, если сервер не менялся) |
Если после отключения пароля доступ пропал полностью, а рабочей сессии не осталось, — это тот случай, когда нужен запасной путь входа через веб-консоль провайдера. Такая консоль работает независимо от SSH, поэтому через неё можно вернуть PasswordAuthentication yes обратно и разобраться, что пошло не так с ключом.
FAQ
Какой порт использует SSH по умолчанию?
Порт 22. Провайдер может выдать сервер с уже изменённым портом — актуальный порт всегда указан в данных доступа.
Можно ли подключиться к VPS по SSH с телефона?
Да, через мобильные SSH-клиенты вроде Termius или JuiceSSH — принцип подключения тот же, что и с компьютера.
Безопасно ли отключать вход по паролю?
Да, но только после того как вход по ключу проверен в отдельной сессии. Отключать пароль «на всякий случай», не протестировав ключ, рискованно.
Чем SSH отличается от RDP?
SSH — это командная строка, используется в основном на Linux. RDP передаёт графический рабочий стол и применяется на Windows-серверах.
Нужно ли менять порт SSH с 22 на другой?
Это необязательно, но снижает количество автоматических попыток подбора в логах. Основную защиту всё равно даёт отключение входа по паролю.
Итог
Для разового входа достаточно пароля, но для постоянной работы с VPS правильный порядок такой: создать SSH-ключ, добавить его на сервер, проверить вход в отдельной сессии и только после этого отключить вход по паролю. Дальше имеет смысл настроить firewall и общие меры безопасности сервера — с этого и стоит продолжить настройку VPS после первого входа.