Метка: SSH

  • SSH: что это и как подключиться к серверу по паролю или ключу

    SSH: что это и как подключиться к серверу по паролю или ключу

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

    Ниже — как работает SSH, как подключиться к серверу из Windows, macOS и Linux, как настроить вход по ключу и что делать, если соединение не устанавливается.

    SSH: что это простыми словами

    SSH (Secure Shell, «защищённая оболочка») — сетевой протокол, который позволяет безопасно управлять другим компьютером через интернет. Чаще всего этим компьютером оказывается сервер: VPS, выделенный сервер или хостинг с SSH-доступом.

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

    SSH появился в 1995 году как замена Telnet, который передавал всё, включая пароли, открытым текстом. Сегодня используется вторая версия протокола, SSH-2, а самая распространённая реализация — бесплатный OpenSSH. Она встроена в Linux, macOS и современные версии Windows.

    Для чего нужен SSH-доступ:

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

    Как работает SSH: шифрование и проверка подлинности

    Всё, что идёт между клиентом и сервером, зашифровано

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

    Что происходит за доли секунды после ввода команды
    1. Обмен версиями. Клиент подключается к порту 22 сервера, и стороны сообщают, какие версии протокола поддерживают.
    2. Обмен ключами. По алгоритму Диффи — Хеллмана стороны вырабатывают общий секретный ключ сессии, не передавая его по сети. Дальше весь трафик шифруется симметричным алгоритмом, например AES или ChaCha20.
    3. Проверка сервера. Сервер предъявляет свой ключ, и клиент сверяет его отпечаток — fingerprint — с сохранённым. Так вы узнаёте, что подключились к своему серверу, а не к подставному.
    4. Аутентификация пользователя. Вы подтверждаете, что имеете право войти: паролем или SSH-ключом.
    5. Сессия. Открывается командная строка, и можно работать.

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

    SSH, Telnet и FTP: чем отличаются

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

    ПараметрSSHTelnetFTP
    Назначениеуправление сервером, файлы, туннелиуправление серверомпередача файлов
    Шифрованиевсё соединениенетнет, логин и пароль идут открытым текстом
    Порт по умолчанию222321
    Вход по ключуданетнет
    Использовать сегоднядатолько в изолированных сетяхлучше заменить на SFTP

    SFTP — это не FTP с шифрованием, а отдельный протокол передачи файлов, работающий внутри SSH. Если на сервере есть SSH, SFTP обычно уже доступен.

    Что нужно для подключения к серверу

    Эти данные провайдер присылает после создания сервера

    Для подключения нужны четыре вещи:

    • IP-адрес сервера или доменное имя, которое на него указывает;
    • имя пользователя — на новом сервере обычно root;
    • пароль или SSH-ключ для входа;
    • порт — по умолчанию 22, указывать его нужно, только если его сменили.

    Всё это провайдер выдаёт после создания сервера. SSH-клиент уже есть в любой современной системе, устанавливать ничего не нужно. Если сервера у вас пока нет, VPS на ZION HOSTING запускается за 15 минут и сразу доступен по SSH.


    Как подключиться по SSH из Windows: PowerShell и PuTTY

    В Windows 10 и 11 клиент OpenSSH встроен в систему. Откройте PowerShell или «Терминал» и введите:

    ssh user@203.0.113.10

    Здесь user — имя пользователя, а 203.0.113.10 — IP-адрес сервера. Если порт не стандартный, добавьте ключ -p:

    ssh -p 2222 user@203.0.113.10
    При вводе пароля символы не отображаются — так и задумано

    Система спросит пароль. При вводе на экране ничего не появляется, даже звёздочек: это защита от подглядывания, а не зависание. Введите пароль и нажмите Enter.

    PuTTY — отдельная бесплатная программа для подключения по SSH, популярная со времён, когда в Windows не было встроенного клиента. В поле Host Name укажите IP-адрес, в поле Port — 22, выберите тип соединения SSH и нажмите Open. Логин и пароль программа спросит в открывшемся окне.

    СистемаЧем подключатьсяУстановка
    Windows 10, 11PowerShell, «Терминал»не нужна
    Windows, любая версияPuTTYскачать с сайта программы
    macOSприложение «Терминал»не нужна
    Linuxлюбой терминалобычно не нужна

    Подключение из macOS и Linux

    В macOS откройте приложение «Терминал», в Linux — любой эмулятор терминала. Команда та же, что и в Windows:

    ssh user@203.0.113.10

    Клиент OpenSSH предустановлен в macOS и почти во всех дистрибутивах Linux. Если в минимальной сборке Ubuntu или Debian его нет, установите пакет:

    sudo apt install openssh-client

    Всё остальное — пароль, ключи, файл настроек — в macOS и Linux работает одинаково, и примеры ниже подходят для обеих систем.

    Первое подключение: что значит запрос про fingerprint

    Такой вопрос появляется один раз — при первом подключении к серверу

    При первом подключении к новому серверу клиент сообщает, что не знает его, показывает отпечаток ключа и спрашивает, продолжать ли. Это нормально: клиент ещё не видел этот сервер и не может убедиться, что он настоящий.

    Если сервер ваш и только что создан, введите yes. Клиент запомнит отпечаток в файле ~/.ssh/known_hosts и больше спрашивать не будет.

    Настоящий повод насторожиться — сообщение REMOTE HOST IDENTIFICATION HAS CHANGED при подключении к уже знакомому серверу. Оно означает, что ключ сервера изменился. Обычно причина безобидна: вы переустановили систему. Но так же выглядит и попытка подмены. Если вы точно знаете, что сервер переустанавливали, удалите старую запись и подключитесь заново:

    ssh-keygen -R 203.0.113.10

    Вход по SSH-ключу: как создать ключ и добавить его на сервер

    Приватный ключ никогда не покидает ваш компьютер

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

    Шаг 1. Создайте ключ. Команда одинакова для Windows, macOS и Linux:

    ssh-keygen -t ed25519
    Путь к файлу можно оставить по умолчанию, нажав Enter

    Программа предложит путь к файлу — нажмите Enter — и попросит парольную фразу. Её стоит задать: тогда украденный файл ключа без фразы бесполезен. В папке .ssh появятся два файла: id_ed25519 — приватный ключ и id_ed25519.pub — публичный.

    Шаг 2. Добавьте публичный ключ на сервер. В macOS и Linux это делает одна команда:

    ssh-copy-id user@203.0.113.10
    Последний раз пароль вводится здесь

    В Windows команды ssh-copy-id нет, её заменяет такая строка в PowerShell:

    type $env:USERPROFILE\.ssh\id_ed25519.pub | ssh user@203.0.113.10 "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"

    Публичный ключ попадает в файл ~/.ssh/authorized_keys на сервере. Теперь команда ssh user@203.0.113.10 пустит вас без пароля.

    ПараметрПарольSSH-ключ
    Можно подобратьда, переборомпрактически нет
    Что передаётся при входесам пароль, в зашифрованном каналетолько доказательство владения ключом
    Удобствовводить каждый развход одной командой
    Если укралисменить парольудалить ключ из authorized_keys
    Боты круглосуточно перебирают пароли на порту 22

    Основные команды после входа на сервер

    После входа вы оказываетесь в командной строке Linux. Вот команды, которые нужны в первый же день:

    КомандаЧто делает
    pwdпоказывает, в какой папке вы находитесь
    ls -laсписок файлов, включая скрытые
    cd /var/wwwпереход в папку
    nano файлоткрывает файл в простом текстовом редакторе
    sudo apt update && sudo apt upgradeобновляет систему в Ubuntu и Debian
    df -hсколько места осталось на диске
    free -hсколько свободной памяти
    topкакие процессы нагружают сервер
    sudo systemctl restart nginxперезапускает службу
    exitзавершает SSH-сессию

    sudo перед командой выполняет её с правами администратора. Работать постоянно под root не стоит: одна ошибка в команде — и можно удалить систему.

    Передача файлов: SCP и SFTP

    Оба способа работают поверх того же SSH-соединения

    По SSH можно не только вводить команды, но и передавать файлы. Отдельный сервис для этого поднимать не нужно.

    SCP копирует файлы одной командой. Отправить файл на сервер:

    scp backup.zip user@203.0.113.10:/home/user/

    Скачать файл с сервера в текущую папку:

    scp user@203.0.113.10:/home/user/backup.zip .

    Для папки добавьте ключ -r.

    SFTP удобнее для работы со многими файлами. Его поддерживают графические клиенты FileZilla и WinSCP: в настройках подключения выберите протокол SFTP, укажите IP-адрес, порт 22, логин и пароль или ключ. Файлы перетаскиваются мышкой, как в обычном проводнике.

    Файл ~/.ssh/config: подключение одной короткой командой

    Параметры сервера записываются один раз

    Когда серверов несколько, помнить IP-адреса, порты и ключи неудобно. Запишите их в файл ~/.ssh/config на своём компьютере:

    Host myvps
        HostName 203.0.113.10
        User user
        Port 22
        IdentityFile ~/.ssh/id_ed25519

    Теперь вместо длинной команды достаточно написать ssh myvps. Имя myvps работает и в scp, и в графических клиентах, которые читают этот файл. В Windows он лежит в папке .ssh внутри профиля пользователя.

    Как установить и настроить SSH-сервер

    На VPS SSH-сервер обычно уже установлен и запущен — иначе вы не смогли бы подключиться. Установка нужна на домашнем компьютере, в виртуальной машине или в минимальной сборке системы. В Ubuntu и Debian:

    sudo apt install openssh-server
    sudo systemctl enable --now ssh

    Проверить, что служба работает:

    sudo systemctl status ssh
    Строка active (running) — служба работает

    В AlmaLinux, Rocky Linux и CentOS служба называется sshd. Настройки сервера лежат в файле /etc/ssh/sshd_config. После изменений служба перезапускается командой sudo systemctl restart ssh. В Ubuntu 22.10 и новее, если вы меняли порт, дополнительно выполните sudo systemctl daemon-reload и sudo systemctl restart ssh.socket.

    Безопасность: как закрыть сервер от подбора пароля

    Каждый слой отсекает свою часть атак

    Как только у сервера появляется публичный IP-адрес, на порт 22 начинают стучаться боты и перебирать пароли. Посмотреть неудачные попытки входа можно так:

    sudo grep "Failed password" /var/log/auth.log | tail

    Если строк сотни, это нормально для интернета, но пароль в такой ситуации — слабое место. Минимальная защита:

    1. Войдите по ключу и убедитесь, что это работает.
    2. Отключите вход по паролю: в /etc/ssh/sshd_config задайте PasswordAuthentication no.
    3. Запретите вход под root: PermitRootLogin no, работайте под обычным пользователем с sudo.
    4. Включите файрвол и откройте только нужные порты: sudo ufw allow OpenSSH, затем sudo ufw enable.
    5. Поставьте fail2ban — он блокирует IP-адреса после нескольких неудачных попыток входа.
    6. Обновляйте систему, в том числе сам OpenSSH.

    Важно: не закрывайте текущую сессию, пока не проверите новые настройки во втором окне терминала. Если ошибиться в конфигурации и выйти, можно потерять доступ к серверу.

    Шесть настроек, которые стоит сделать в первый день

    Частые ошибки при подключении и как их исправить

    Самый быстрый способ понять, на каком шаге всё ломается, — подробный режим:

    ssh -v user@203.0.113.10

    Клиент покажет каждый этап соединения, и станет видно, где оно обрывается.

    СообщениеПричинаЧто делать
    Connection timed outсервер не отвечает: неверный IP, сервер выключен или порт закрыт файрволомпроверить IP и что сервер запущен, открыть порт
    Connection refusedсервер отвечает, но на этом порту никто не слушаетпроверить, запущена ли служба ssh и какой порт в настройках
    Permission denied, please try againневерный пароль или имя пользователяпроверить раскладку, Caps Lock и логин
    Permission denied (publickey)сервер принимает только ключи, а вашего ключа нет в authorized_keysдобавить ключ, проверить права: 700 на папку .ssh, 600 на файл
    REMOTE HOST IDENTIFICATION HAS CHANGEDизменился ключ сервераесли сервер переустанавливали — ssh-keygen -R и адрес
    Could not resolve hostnameопечатка в адресе или домен не указывает на серверпроверить адрес и DNS-записи
    Сервер не нашёл подходящего ключа
    Две разные ошибки: сервер отказал или не ответил вовсе
    Проверяйте по порядку, от сети к правам доступа

    SSH-туннели: зачем они нужны

    База данных закрыта снаружи, но доступна вам через туннель

    SSH умеет пробрасывать порты. Допустим, на сервере работает PostgreSQL, и наружу его открывать нельзя. Команда создаёт туннель:

    ssh -L 5432:localhost:5432 user@203.0.113.10

    Пока сессия открыта, программа на вашем компьютере подключается к localhost:5432, а попадает в базу на сервере. Трафик идёт внутри зашифрованного SSH-соединения, и порт базы остаётся закрытым для всего интернета.

    Частые вопросы

    Какой порт использует SSH?

    По умолчанию порт 22. Если его сменили, порт указывают ключом -p.

    Чем SSH отличается от SSL?

    SSL, а точнее TLS, шифрует трафик между браузером и сайтом, то есть HTTPS. SSH нужен для управления сервером и передачи файлов.

    Можно ли подключиться по SSH к виртуальному хостингу?

    Зависит от провайдера: многие дают SSH и на хостинге, но с ограниченными правами. Полный доступ даёт VPS или выделенный сервер.

    Что делать, если потерян приватный ключ?

    Создать новую пару, войти другим способом — паролем или через веб-консоль провайдера — и заменить ключ в authorized_keys.

    Безопасно ли входить по паролю?

    Сам пароль передаётся по зашифрованному каналу, но его можно подобрать. Для сервера в интернете надёжнее вход по ключу с отключённым входом по паролю.

    Как выйти из SSH-сессии?

    Командой exit или сочетанием клавиш Ctrl+D.

    Как подключиться с Windows без установки программ?

    Клиент OpenSSH встроен в Windows 10 и 11: откройте PowerShell и введите ssh user@IP-адрес.

    Нужен ли SSH на Windows-сервере?

    Обычно им управляют через удалённый рабочий стол, но с Windows Server 2019 можно включить встроенный сервер OpenSSH.

    Коротко о главном

    Пять команд, которых хватает для большинства задач
    • SSH — защищённый протокол удалённого доступа: команды, файлы и туннели по зашифрованному каналу.
    • Клиент уже есть в Windows 10 и 11, macOS и Linux: подключение — одна команда ssh user@IP.
    • Вход по ключу надёжнее пароля; настроив его, отключите вход по паролю.
    • Причину ошибок ищите по порядку: сеть, порт, служба, права.

    Сервер с полным SSH-доступом — на странице тарифов ZION HOSTING. Подробнее о серверах — в статьях что такое VPS и про хостинг.