SSH-подключение к VPS: как настроить и защитить

SSH — это протокол, через который вы управляете VPS: запускаете команды, редактируете файлы, устанавливаете софт. Общий обзор способов входа на сервер (SSH и RDP) разобран в статье о подключении к VPS, а здесь — только про SSH: как он устроен, чем вход по ключу лучше пароля и как закрыть основную дыру, через которую сервер обычно ломают, — перебор пароля.

Что будет в статье

  • Как устроено 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 после первого входа.

Попробовать VPS уже сейчас

Открыть Telegram-бота