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 ssh

Connection 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.