Как настроить аутентификацию по SSH-ключам на сервере Linux

    Команда Simple-Server
    03.06.2026
    12 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Кратко о задаче

    В операционных системах на базе Linux существует бесплатная утилита для работы с SSH-протоколом — OpenSSH. С помощью нее можно создавать как SSH-клиенты, так и SSH-серверы.

    В некоторых дистрибутивах OpenSSH по умолчанию отсутствует, поэтому ее потребуется установить вручную. Для этого сперва необходимо обновить список актуальных репозиториев пакетного менеджера APT:

    После чего выполнить установку OpenSSH:

    Далее можно проверить возможность совершать SSH-подключения:

    Если SSH присутствует в системе, то в консольном терминале появится короткая справка по доступных командам:

    usage: ssh [-46AaCfGgKkMNnqsTtVvXxYy] [-B bind_interface] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-J [user@]host[:port]] [-L address] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q query_option] [-R address] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] destination [command [argument ...]]

    Для проверки, активен ли SSH-сервер, можно попытаться выполнить подключение по SSH к локальному хосту:

    Если сервер запущен, то в консольном терминале появится сообщение, требующее ввести root-пароль:

    root@localhost's password:

    Либо можно запросить статус SSH-службы:

    Если сервер активен, то в терминале появится соответствующее сообщение со статусом состояния «Active»:

    ssh.service - OpenBSD Secure Shell server Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2024-11-20 12:09:02 MSK; 2 days ago

    В SSH-протоколе существует несколько способов авторизации (аутентификации):

    СпособНастройкаАвторизация
    ПарольНе требуетсяВвод пароля
    SSH-ключТребуется генерация SSH-ключа и копирование открытой части на серверВвод фразы-пароля или без ввода

    Требуется генерация SSH-ключа и копирование открытой части на сервер

    Ввод фразы-пароля или без ввода

    В этом руководстве пойдет речь о более эффективном и безопасном способе авторизации — с помощью SSH-ключа.**
    **

    Ключ для SSH-соединения на самом деле представляет собой пару ключей (если быть точнее, то пару частей одного ключа), связанных между собой алгоритмически:

    • Открытый (Публичный). Хранится на сервере. Используется для шифрования сообщений и аутентификации.

    Открытый (Публичный). Хранится на сервере. Используется для шифрования сообщений и аутентификации.

    • Закрытый (Приватный). Хранится на клиенте в защищенном виде. Никому не показывается и никому не передается. Компрометация этого ключа может привести к взлому.

    Закрытый (Приватный). Хранится на клиенте в защищенном виде. Никому не показывается и никому не передается. Компрометация этого ключа может привести к взлому.

    Определенные сочетания использования открытого и закрытого ключа позволяет шифровать данные и безопасно их передавать от одного хоста к другому. Именно это и является ключевой особенностью протокола SSH.**
    **

    SSH-ключ генерируется на локальном компьютере с помощью специальной утилиты — keygen (генератор ключей). По умолчанию она генерирует пару 2048-битных ключей основе криптографического алгоритма RSA.

    В большинстве операционных систем (Windows, Linux, macOS) процесс генерации ключа идентичен, поэтому его можно запустить одной и той же командой:

    В консоли появится сообщение о начале генерации открытого и закрытого ключей:

    Generating public/private rsa key pair.

    Далее терминал предложит ввести путь, по которому необходимо сохранить сгенерированные ключи. Указание пути можно пропустить — в этом случае ключи окажутся в стандартной директории /root/.ssh:

    Enter file in which to save the key (/root/.ssh/id_rsa):

    Далее терминал попросит два раза ввести фразу-пароль, которая станет криптографической частью будущего SSH-ключа:

    Enter passphrase (empty for no passphrase): Enter same passphrase again:

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

    После этого консольный терминал сообщит об успешном создании SSH-ключа и покажет дополнительную информацию о нем:

    Your identification has been saved in /root/.ssh/id_rsa Your public key has been saved in /root/.ssh/id_rsa.pub The key fingerprint is: SHA256:Y3UP7EgXpWFViECapj2OFX2FC09BoAl6ErHrVm1Q2gs root@3798037-yn55665.twc1.net The key's randomart image is: +---[RSA 3072]----+ | o.. ..++**+o.| | + = *.o+=. | | + E O ++B. | | + B = *oo | | . o S . . . | | . . * o | | o . . | | . | | | +----[SHA256]-----+

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

    Чтобы локальная машина, на которой размещен сгенерированный SSH-ключ, могла автоматически авторизовываться на удаленной машине, открытую часть ключа нужно отправить на сервер. Есть несколько способов, как это сделать.**
    **

    Способ 1. Через панель управления

    Чтобы добавить открытую часть SSH-ключа на облачный сервер через панель управления Simple-Server, необходимо:

    1. Перейти во вкладку «Доступ» на странице управления облачным сервером.

    Перейти во вкладку «Доступ» на странице управления облачным сервером.

    1. Найти раздел «SSH-ключи» и нажать на кнопку «Изменить».

    Найти раздел «SSH-ключи» и нажать на кнопку «Изменить».

    1. На открывшейся странице кликнуть по кнопке «Загрузить новый ключ».

    На открывшейся странице кликнуть по кнопке «Загрузить новый ключ».

    1. Открытую часть ключа вставить в специальное текстовое поле для ключа и нажать на кнопку «Добавить».

    Открытую часть ключа вставить в специальное текстовое поле для ключа и нажать на кнопку «Добавить».

    При этом поле с названием ключа заполнится автоматически на основе содержимого самого ключа.

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

    Если же локальный компьютер управляется операционной системой Windows, то открытый ключ размещается в этом файле:

    C:\Users\ПОЛЬЗОВАТЕЛЬ\.ssh\id_rsa.pub

    При этом вместо слова ПОЛЬЗОВАТЕЛЬ указывается имя пользователя на локальной машине.

    Сам открытый ключ выглядит примерно так:

    ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQCKC3Qf3NFmqaXU1+6JtTEurhw6iSQ7YTsYQ4ZqPoAwaWM5czzaqJTi6z5Nt6c1jPjyc3eVed5pqff2Yp8Q92TyXX+p2GNorhqZWJLeaIdGBa6l5Nb8YyQRTxuwp/M3qM2/i+AvGu6S97iKceGEg33l6YMId9bpaKCYmVLElN9/Wy/db0tgDA5ALYIB4mylo3NnzoQ27qzENvtzuFUXwtEUD9EDnJQgvUR0z7IL4AGPfFVJIoBJIud744lNBoiui3d4e6FPfoOFpL0dIcQKOHFEW08TfwKpLgBvTgsLm/3UZ1Z4FefBVyHlmh4Y2mg/nzrZvqQHtzUzR7bJRal1NG4zOOMjhUCmNL5P4Xj6QOTIBjjYdIh2HjMP2mYUHfLtpU3TseEkOd672k0x/wMnCyMltBCu5gl97jXwFJd1K7wCpZjtJFcfd2AYCraBfCQqR7Im2G5WIugkofD+31G+be/WMhVwJmjcv6/YNcq5KXESUcsL1MhKpBTA3yqku0PmsxE= root@3798037-yn55665.twc1.net

    Обратите внимание на его завершение:

    root@3798037-yn55665.twc1.net

    Оно содержит полное имя локальной машины, которое также является названием ключа в панели управления Simple-Server.

    Всплывающее окно для добавления открытого SSH-ключа в панели управления облачным сервером Simple-Server**
    **

    Способ 2. Через утилиту ssh-copy-id

    Более классический, но менее наглядный способ добавления открытого ключа на удаленную машину — утилита ssh-copy-id, которая являются частью пакета OpenSSH и работает через консольный терминал.

    Схема команды, которая копирует открытый ключ на удаленную машину, выглядит следующим образом:

    ssh-copy-id ПОЛЬЗОВАТЕЛЬ@ХОСТ
    • ПОЛЬЗОВАТЕЛЬ. Имя системного пользователя на удаленной машине.

    • ХОСТ. IP-адрес удаленной машины.

    ПОЛЬЗОВАТЕЛЬ. Имя системного пользователя на удаленной машине.

    ХОСТ. IP-адрес удаленной машины.

    Таким образом, команда может выглядеть так:

    ssh-copy-id root@45.10.41.189

    При первом выполнении команды в консольном терминале появится сообщение об установлении соединения с новым хостом:

    /usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/.ssh/id_rsa.pub" The authenticity of host '45.10.41.189 (45.10.41.189)' can't be established. ED25519 key fingerprint is SHA256:T1rJ9M8jip2lRS3aRpAvecEknDQzcU0RvNRHXP8w0IA. This host key is known by the following other names/addresses: ~/.ssh/known_hosts:1: [hashed name] Are you sure you want to continue connecting (yes/no/[fingerprint])?

    Чтобы продолжить, в консольный терминал необходимо ввести yes. Далее появится сообщение о поиске ранее сгенерированного SSH-ключа (как открытого, так и закрытого) на локальной машине:

    /usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys

    Когда ключ будет найден, консольный терминал попросит ввести пароль пользователя, под именем которого выполняется авторизация на удаленной машине:

    root@45.10.41.189's password:

    После успешной авторизации терминал сообщит о том, что ключ был добавлен в систему на удаленной машине:

    Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'root@45.10.41.189'" and check to make sure that only the key(s) you wanted were added.

    Способ 3. Через ручное копирование

    Если на удаленной машине есть пользователь с паролем (например, root), то можно выполнить ручное копирование SSH-ключа от его имени.

    Для этого нужно выполнить несколько действий:

    1. Открыть файл с открытым ключом (/root/.ssh/id_rsa.pub) и скопировать его содержимое.

    Открыть файл с открытым ключом (/root/.ssh/id_rsa.pub) и скопировать его содержимое.

    1. Выполнить SSH-подключение к удаленной машине и авторизоваться по паролю.

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

    1. Создать каталог /root/.ssh на удаленной машине, если он еще не существует.

    Создать каталог /root/.ssh на удаленной машине, если он еще не существует.

    1. Создать файл /root/.ssh/authorized_keys и вставить в него ранее скопированный ключ.

    Создать файл /root/.ssh/authorized_keys и вставить в него ранее скопированный ключ.

    Необходимую последовательность действий можно записать в виде одной лаконичной команды:

    cat ~/.ssh/id_rsa.pub | ssh ПОЛЬЗОВАТЕЛЬ@ХОСТ "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
    • Символ | используется для перенаправления потоков ввода и вывода.

    Символ | используется для перенаправления потоков ввода и вывода.

    • Символ >> используется для дополнения содержимого файла, а не его полной перезаписи.

    Символ >> используется для дополнения содержимого файла, а не его полной перезаписи.

    После выполнения команды в консольном терминале появится сообщение о новом SSH-подключении и вопросом о необходимости его продолжения:

    The authenticity of host '194.87.118.235 (194.87.118.235)' can't be established. ED25519 key fingerprint is SHA256:s5/VTZMxE++3wOXERdbHuaJ82bWCQVFRXo8XUR5su6k. This key is not known by any other names Are you sure you want to continue connecting (yes/no/[fingerprint])?

    Если ввести утвердительный ответ yes, консольный терминал попросит ввести пароль пользователя, под которым выполняется подключение к удаленной машине:

    root@194.87.118.235's password:

    Если копирование SSH-ключа прошло успешно, то в консольном терминале ничего не появится.

    Обратите внимание, что после ручного копирования открытого ключа консольный терминал останется на локальной машине, а не переключится на удаленную.**
    **

    Аутентификация по SSH-ключу

    После добавления SSH-ключа на удаленную машину любым из описанных выше способов, к ней можно выполнить подключение:

    Слово IP_АДРЕС нужно заменить на IP-адрес удаленной машины, к которой выполняется подключение.

    Таким образом, команда подключения может выглядеть так:

    При этом, если файл с закрытым SSH-ключом на локальной машине был сохранен не в каталоге по умолчанию (/root/.ssh/id_rsa), то к команде подключения нужно добавить дополнительный флаг -i, явно указывающий на файл с закрытым ключом:

    ssh -i /otherfolder/id_rsa root@45.10.41.189

    Далее есть три варианта развития событий:

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

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

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

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

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

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

    Когда аутентификация пройдена, на удаленной машине можно посмотреть список авторизованных SSH-ключей, записанных в соответствующим файле:

    cat ~/.ssh/authorized_keys

    В консольном терминале появится ранее добавленный открытый SSH-ключ.

    Внутри этого файла все ключи последовательно записаны сплошным текстом без разделителей. Таким образом удаленная машина аутентифицирует пользователей на основе тех открытых ключей, которые находятся в файле /root/.ssh/authorized_keys.

    Очистка этого файла приведет к необходимости повторного добавления открытого ключа на удаленную машину.

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


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны