24.04.2026

Как подключиться к серверу по SSH: пошаговая инструкция для Windows, Linux и macOS

Что такое SSH и зачем он нужен

Управление удалённым сервером — одна из базовых задач любого системного администратора, DevOps-инженера или разработчика. Для её решения используется протокол SSH (Secure Shell) — стандартный способ безопасного подключения к удалённым машинам по сети.

В этой статье мы разберём, как работает SSH, какие инструменты использовать на разных операционных системах и как шаг за шагом установить первое подключение к серверу — даже если вы делаете это впервые.

Терминология

Перед тем как перейти к практике, определим ключевые понятия, которые встретятся в этом руководстве.

SSH (Secure Shell) — сетевой протокол, обеспечивающий зашифрованное соединение между клиентом и сервером. Он используется для удалённого выполнения команд, передачи файлов и туннелирования трафика.

SSH-клиент — программа на вашем компьютере, которая инициирует подключение к серверу. На Linux и macOS это стандартная утилита ssh. На Windows — встроенный OpenSSH или сторонние приложения, например PuTTY.

SSH-сервер — демон sshd, запущенный на удалённой машине. Он принимает входящие подключения и управляет доступом.

Аутентификация по паролю — самый простой, но менее безопасный способ входа: вы вводите логин и пароль при каждом подключении.

Аутентификация по ключу — более надёжный метод. Генерируется пара ключей: приватный (хранится у вас) и публичный (размещается на сервере). При подключении сервер проверяет соответствие ключей без ввода пароля.

Порт — по умолчанию SSH работает на порту 22. Администраторы часто меняют его на нестандартный, чтобы снизить количество автоматических атак.

Fingerprint (отпечаток) — уникальная строка, идентифицирующая SSH-сервер. При первом подключении клиент показывает этот отпечаток и просит подтвердить, что вы подключаетесь к нужной машине.

Как работает SSH

При установке SSH-соединения между клиентом и сервером происходит несколько последовательных этапов.

Установка соединения и обмен ключами

Клиент обращается к серверу по указанному IP-адресу или доменному имени. Сервер отвечает своим публичным ключом — тем самым отпечатком, который вы видите при первом подключении. Если вы подтверждаете подключение, клиент сохраняет этот отпечаток в файле ~/.ssh/known_hosts. При следующих подключениях клиент сверяет ключ сервера с сохранённым — если они не совпадают, соединение прерывается с предупреждением.

После проверки ключа стороны согласовывают алгоритм шифрования и устанавливают зашифрованный канал через механизм Диффи — Хеллмана. Весь последующий трафик, включая пароли и команды, передаётся в зашифрованном виде.

Аутентификация пользователя

После установки зашифрованного канала сервер запрашивает подтверждение личности пользователя. Возможны два основных способа:

При аутентификации по паролю пользователь вводит пароль, который проверяется на стороне сервера.

При аутентификации по ключу сервер отправляет клиенту зашифрованное сообщение. Клиент расшифровывает его с помощью приватного ключа и отправляет ответ. Если ответ корректен — доступ предоставляется.

Практическое применение SSH

SSH используется во множестве повседневных задач при работе с серверной инфраструктурой.

Администрирование серверов: выполнение команд в терминале, управление пользователями, настройка сервисов, просмотр логов — всё это делается через SSH.

Передача файлов: утилиты scp и sftp работают поверх SSH и обеспечивают безопасную передачу файлов между машинами.

Туннелирование и проброс портов: SSH позволяет создавать зашифрованные туннели для доступа к сервисам, которые не должны быть открыты напрямую в интернет — например, к базе данных или внутреннему веб-приложению.

Автоматизация и CI/CD: системы непрерывной интеграции используют SSH для деплоя кода на серверы, запуска скриптов и управления инфраструктурой.

Пошаговая инструкция по подключению

Ниже мы рассмотрим процесс подключения отдельно для каждой операционной системы.

Подключение с Linux

На большинстве дистрибутивов Linux клиент OpenSSH установлен по умолчанию. Если он отсутствует, установите его.

На Debian/Ubuntu:

sudo apt update && sudo apt install openssh-client

На CentOS/RHEL/Fedora:

sudo dnf install openssh-clients

Базовое подключение

Минимальная команда для подключения выглядит так:

ssh имя_пользователя@адрес_сервера

Например:

ssh admin@192.168.1.100

Если сервер работает не на стандартном порту 22, укажите порт с помощью флага -p:

ssh -p 2222 admin@192.168.1.100

При первом подключении клиент покажет отпечаток сервера и спросит подтверждение. Введите yes и нажмите Enter. Далее введите пароль пользователя.

Подключение по SSH-ключу на Linux

Шаг 1. Сгенерируйте пару ключей на вашем компьютере:

ssh-keygen -t ed25519 -C "ваш_комментарий"

Утилита предложит выбрать путь для сохранения ключей (по умолчанию — ~/.ssh/id_ed25519) и задать пароль для защиты приватного ключа. Использовать пароль рекомендуется, но не обязательно.

Шаг 2. Скопируйте публичный ключ на сервер:

ssh-copy-id -i ~/.ssh/id_ed25519.pub admin@192.168.1.100

Команда автоматически добавит ваш публичный ключ в файл ~/.ssh/authorized_keys на сервере.

Шаг 3. Подключитесь без пароля:

ssh admin@192.168.1.100

Если у вас несколько ключей или ключ хранится по нестандартному пути, укажите его явно:

ssh -i ~/.ssh/my_custom_key admin@192.168.1.100

Подключение с macOS

macOS поставляется с предустановленным клиентом OpenSSH. Никаких дополнительных установок не требуется — всё доступно через стандартный Терминал (Terminal.app) или альтернативные эмуляторы терминала, например iTerm2.

Синтаксис команд полностью совпадает с Linux. Базовое подключение:

ssh имя_пользователя@адрес_сервера

Особенности работы с ключами на macOS

Процесс генерации и копирования ключей аналогичен Linux. Однако на macOS приватный ключ можно добавить в Keychain — системное хранилище паролей — чтобы не вводить его пароль при каждом подключении.

Добавьте ключ в Keychain:

ssh-add --apple-use-keychain ~/.ssh/id_ed25519

Чтобы ключ загружался автоматически при каждом запуске системы, добавьте следующее в файл ~/.ssh/config:

Host *
  AddKeysToAgent yes
  UseKeychain yes
  IdentityFile ~/.ssh/id_ed25519

Подключение с Windows

Начиная с Windows 10 (версия 1809) и Windows Server 2019, OpenSSH доступен как встроенный компонент. Он устанавливается через «Параметры» и предоставляет полноценный SSH-клиент прямо в PowerShell или командной строке.

Вариант 1: встроенный OpenSSH

Шаг 1. Проверьте, установлен ли OpenSSH. Откройте PowerShell от имени администратора и выполните:

Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'

Шаг 2. Если клиент не установлен (статус NotPresent), установите его:

Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0

Шаг 3. Подключитесь к серверу. Синтаксис идентичен Linux и macOS:

ssh admin@192.168.1.100

Генерация ключей и их использование — аналогичны. Команды ssh-keygen и ssh-copy-id (начиная с последних версий OpenSSH для Windows) работают так же, как в Unix-системах. Ключи сохраняются в папку C:\Users\ваше_имя\.ssh\.

Вариант 2: PuTTY

PuTTY — популярный SSH-клиент с графическим интерфейсом. Он удобен для пользователей, которые предпочитают не работать в командной строке, и совместим со старыми версиями Windows.

Шаг 1. Скачайте PuTTY с официального сайта putty.org и установите его.

Шаг 2. Откройте PuTTY. В поле Host Name (or IP address) введите адрес сервера, в поле Port — порт (по умолчанию 22). Убедитесь, что выбран протокол SSH.

Шаг 3. Нажмите Open. При первом подключении появится предупреждение с отпечатком сервера — нажмите Accept, чтобы добавить его в список доверенных узлов.

Шаг 4. В открывшемся терминале введите имя пользователя и пароль.

Работа с ключами в PuTTY

PuTTY использует собственный формат ключей — .ppk. Если у вас уже есть ключ в формате OpenSSH, его можно конвертировать с помощью утилиты PuTTYgen, входящей в состав пакета PuTTY.

Для генерации нового ключа:

Шаг 1. Откройте PuTTYgen. Выберите тип ключа EdDSA или RSA (4096 бит) и нажмите Generate. Подвигайте мышью по пустой области для генерации случайных данных.

Шаг 2. Задайте пароль для защиты ключа в поле Key passphrase и сохраните приватный ключ (Save private key) в формате .ppk.

Шаг 3. Скопируйте текст из поля Public key for pasting into OpenSSH authorized_keys и добавьте его на сервер в файл ~/.ssh/authorized_keys.

Шаг 4. В настройках сессии PuTTY перейдите в Connection → SSH → Auth и укажите путь к файлу .ppk.

Настройка SSH-конфига для удобной работы

Когда серверов становится больше одного, вводить каждый раз полные адреса, имена пользователей и пути к ключам неудобно. Для этого существует файл конфигурации клиента — ~/.ssh/config.

Пример конфига с несколькими серверами:

Host prod-server
  HostName 203.0.113.10
  User deploy
  Port 2222
  IdentityFile ~/.ssh/id_ed25519_prod

Host staging
  HostName 203.0.113.20
  User ubuntu
  IdentityFile ~/.ssh/id_ed25519_staging

Host bastion
  HostName 203.0.113.1
  User admin
  IdentityFile ~/.ssh/id_ed25519

После сохранения файла подключение к серверу выполняется одной короткой командой:

ssh prod-server

Это равнозначно полной команде ssh -p 2222 -i ~/.ssh/id_ed25519_prod deploy@203.0.113.10.

Типичные ошибки и способы их решения

Connection refused

Ошибка означает, что подключение к указанному адресу и порту не принято. Возможные причины: SSH-сервер не запущен, указан неверный порт, или входящие соединения заблокированы файрволом.

Проверьте, запущен ли SSH-сервер на удалённой машине:

sudo systemctl status sshd

Убедитесь, что нужный порт открыт в правилах файрвола:

sudo ufw status
sudo firewall-cmd --list-ports

Permission denied (publickey)

Сервер не принял ваш ключ. Наиболее частые причины:

Публичный ключ не добавлен в ~/.ssh/authorized_keys на сервере, или файл имеет неверные права доступа. Проверьте права:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

Также убедитесь, что в конфигурации сервера /etc/ssh/sshd_config включена аутентификация по ключу:

PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Host key verification failed

Эта ошибка появляется, если отпечаток сервера изменился — например, сервер был переустановлен. SSH предупреждает вас о возможной атаке типа «человек посередине». Если вы уверены, что сервер легитимен, удалите старую запись из known_hosts:

ssh-keygen -R 192.168.1.100

Connection timed out

Превышение времени ожидания обычно означает сетевую недоступность сервера: неверный IP-адрес, сервер выключен, или маршрутизация отсутствует. Проверьте доступность сервера с помощью ping и убедитесь, что вы подключены к нужной сети.

Рекомендации по безопасности

SSH сам по себе защищён, но неправильная настройка сервера может открыть уязвимости. Вот несколько практик, которые мы рекомендуем соблюдать.

Отключите вход по паролю. После настройки ключевой аутентификации отключите парольный вход в /etc/ssh/sshd_config:

PasswordAuthentication no
PermitRootLogin no

После изменения конфига перезапустите SSH-сервер:

sudo systemctl restart sshd

Смените стандартный порт. Перенос SSH с порта 22 на нестандартный (например, 2222 или выше 10000) заметно снижает количество автоматических атак подбором пароля. Укажите нужный порт в директиве Port в конфиге сервера.

Используйте современные алгоритмы ключей. Рекомендуем ed25519 как наиболее безопасный и быстрый алгоритм. RSA допустим при размере ключа не менее 4096 бит.

Ограничьте список пользователей. В sshd_config можно разрешить SSH-доступ только конкретным пользователям или группам:

AllowUsers deploy ubuntu admin

Защитите сервер от брутфорса. Утилита fail2ban автоматически блокирует IP-адреса, с которых поступает слишком много неудачных попыток входа. Установите и настройте её на серверах, доступных из интернета.

Заключение

SSH — это стандартный и надёжный способ удалённого управления серверами. Независимо от того, с какой операционной системы вы работаете, базовые принципы остаются одинаковыми: зашифрованное соединение, аутентификация по ключу и гибкая настройка через конфигурационный файл.

Мы рекомендуем сразу настраивать ключевую аутентификацию — это одновременно удобнее и безопаснее, чем использование паролей. Файл ~/.ssh/config поможет организовать доступ к нескольким серверам без необходимости запоминать длинные команды.

Если при подключении возникают ошибки, в большинстве случаев они связаны с правами доступа на файлы ключей, неверным портом или правилами файрвола — все эти проблемы решаются по алгоритму, описанному в разделе выше.