SSH (Secure Shell) - защищенный протокол, через который вы управляете VPS из командной строки. Для подключения нужны IP-адрес сервера, имя пользователя и пароль или SSH-ключ. Ниже разобрано, как подключиться с Windows, macOS и Linux, как настроить вход по ключу и что делать, если соединение не работает.
Что понадобится перед подключением
- IP-адрес сервера, например 203.0.113.10. Это адрес из диапазона для документации, замените его своим;
- имя пользователя: root или пользователь, которого вы создали;
- пароль или приватный ключ, который соответствует публичному ключу на сервере.
Если сервер работает на NAT-тарифе, адрес и порт будут другими: подключение идет через проброшенный порт. Об этом раздел ниже.
Подключение из Windows
В Windows 10 (версия 1809 и новее) и Windows 11 есть встроенный клиент OpenSSH. Откройте PowerShell или Windows Terminal, проверьте его наличие и подключитесь:
ssh -V
ssh root@203.0.113.10При первом подключении клиент спросит, доверять ли отпечатку ключа сервера. Ответьте yes и введите пароль. При вводе пароль не отображается, это нормально. Если клиента нет, его можно добавить в «Параметры» → «Система» → «Дополнительные компоненты» → «Добавить компонент» → «OpenSSH-клиент».
PuTTY
PuTTY - графический клиент, удобный, если вы не хотите работать в командной строке. Скачайте его с официального сайта putty.org. В поле Host Name укажите IP-адрес, порт оставьте 22, выберите тип соединения SSH и нажмите Open. Для входа по ключу откройте приватный ключ в PuTTYgen, сохраните его в формате .ppk кнопкой Save private key и укажите путь в разделе Connection → SSH → Auth → Credentials.
Подключение из macOS и Linux
В macOS клиент SSH уже есть в программе «Терминал». В Linux он обычно установлен по умолчанию. Если его нет, установите пакет openssh-client на Debian или Ubuntu:
sudo apt install openssh-client
ssh root@203.0.113.10Вход по SSH-ключу
Пароль удобен для первого входа, но ключ надежнее: его нельзя подобрать перебором, и сам секрет не передается по сети. Приватный ключ остается только на вашем компьютере, а публичный копируется на сервер. Создайте ключ алгоритмом ed25519:
ssh-keygen -t ed25519 -C "laptop-2026"По умолчанию ключ сохранится в ~/.ssh/id_ed25519 (приватный) и ~/.ssh/id_ed25519.pub (публичный). В Windows это папка %USERPROFILE%\.ssh. Задайте парольную фразу: она защищает приватный ключ, если файл попадет к посторонним.
Скопируйте публичный ключ на сервер. В Linux и macOS удобнее ssh-copy-id, на этом этапе на сервере еще должен работать вход по паролю:
ssh-copy-id -i ~/.ssh/id_ed25519.pub root@203.0.113.10В PowerShell ssh-copy-id нет, поэтому передайте ключ через конвейер:
type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh root@203.0.113.10 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"На сервере проверьте права на каталог и файл ключей. Доступ должен быть только у владельца:
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysТеперь проверьте вход по ключу. Не закрывайте текущую сессию, пока не убедитесь, что новая работает:
ssh -i ~/.ssh/id_ed25519 root@203.0.113.10Настройка файла ~/.ssh/config
Чтобы не вводить адрес, пользователя и ключ каждый раз, добавьте запись в файл ~/.ssh/config. В Windows файл лежит в %USERPROFILE%\.ssh\config:
Host pulsar-web
HostName 203.0.113.10
User root
Port 22
IdentityFile ~/.ssh/id_ed25519После этого достаточно команды ssh pulsar-web. Позже, когда появится отдельный пользователь, замените User и не храните здесь пароли: файл содержит только имя хоста и путь к ключу.
Подключение через проброшенный порт на NAT
На NAT VPS сервер стоит за общим IPv4-адресом, поэтому SSH доступен через внешний порт, проброшенный к порту 22 вашей машины. Если внешний порт 22022, подключение выглядит так:
ssh -p 22022 root@203.0.113.10В файле config в этом случае укажите Port 22022 вместо Port 22. Внешний адрес и порт берутся из настроек VPS у провайдера. Внутри системы sshd продолжает слушать порт 22, поэтому правило ufw для OpenSSH остается прежним.
Передача файлов по SSH
Тот же ключ и тот же адрес подходят для копирования файлов. Команда scp копирует файл с локального компьютера на сервер. Обратите внимание: для порта scp использует заглавную букву -P, а ssh использует строчную -p:
scp ./site.tar.gz deploy@203.0.113.10:/home/deploy/
scp -P 22022 ./site.tar.gz deploy@203.0.113.10:/home/deploy/Чтобы скачать файл с сервера, поменяйте местами аргументы: сначала путь на сервере, затем путь на компьютере. Для интерактивной работы с файлами удобен sftp, который открывает простую оболочку для загрузки и скачивания:
scp deploy@203.0.113.10:/var/log/syslog ./syslog-copy.log
sftp deploy@203.0.113.10Если в файле config задан Host, команды становятся короче: scp ./site.tar.gz pulsar-web:/home/deploy/. Порт и ключ при этом берутся из настроек, и отдельно их указывать не нужно.
Частые ошибки и как их исправить
Permission denied (publickey) или Permission denied (password)
Сервер отклонил вход. Причины: неверный пароль, ключ не добавлен в ~/.ssh/authorized_keys, указан другой пользователь или отключен вход по паролю. Запустите ssh -v root@203.0.113.10 и посмотрите, какие ключи клиент пробует. Нужный ключ можно указать явно через -i.
Connection refused
На адресе нет SSH-сервиса на этом порту. Проверьте, что указан правильный порт (для NAT это внешний проброшенный), и что служба sshd запущена. На сервере выполните:
sudo systemctl status ssh
sudo ss -tlnp | grep sshConnection timed out
Пакеты не доходят до сервера. Проверьте IP-адрес, правила файрвола на сервере (sudo ufw status) и для NAT - настройки проброса порта у провайдера.
WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
Клиент сохранил отпечаток ключа сервера, и он изменился. Обычная причина - переустановка системы или то, что IP-адрес перешел к другому серверу. Но то же сообщение может означать подмену сервера. Сначала убедитесь, что переустановка действительно была, и только потом удалите старую запись:
ssh-keygen -R 203.0.113.10Затем подключитесь снова и сверьте новый отпечаток с тем, что показывает сервер. Если переустановки не было, не подключайтесь, пока не выясните причину.
Что дальше
После первого входа по ключу настройте защиту сервера: создайте пользователя с sudo, отключите вход по паролю и root-доступ, включите файрвол и fail2ban. Пошаговая инструкция - в статье Базовая защита Linux-сервера.
Если вы еще выбираете сервер, посмотрите тарифы VPS или статью как выбрать VPS.