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

Принципы работы Secure Shell и SSH-ключей
С помощью Secure Shell можно безопасно подключиться к ОС и после получения доступа передавать нужную информацию.
Основная конфигурация состоит из сервера и клиента.
- Сервер функционирует в системе, с которой нужно наладить соединение.
- Клиент находится на машине, которая инициирует соединение.
Преимуществом такого подхода – есть кроссплатформенность, где можно использовать клиента на Windows и подключаться к серверу, который функционирует на Linux. Таким образом пользователь может осуществить передачу файлов или получить доступ к строке оболочки. Неавторизированные пользователи не имеют доступа к зашифрованной коммуникации между сервером и клиентом.
Использование базовой реализации полностью базируется на надежности пароля, и если злоумышленник заходит в систему остановить его может аутентификация на основе ключей.
Почему использование ключей безопаснее паролей
Для дополнительного уровня безопасности, в аутентификации на базе ключей используется асимметричное шифрование. Данная концепция была разработана еще в 1975 году по принципу использования пары ключей – public key и private key.
Приватный ключ сохраняется на хосте, где расположен клиент; а открытый ключ находится в системе, в которой работает сервер SSH. Важным моментом есть защита приватного ключа потому как с его помощью можно легко войти в удаленную систему. Для дополнительной защиты, приватный ключ можно защитить паролем и зашифровать.
Если говорить проще, ключ состоит из 2 частей и пара генерируется уникальной. Таким образом генерация таких же ключей невозможна, и повторить пару не получится. При осуществлении соединения 2 части соединяются и, если они совпадают тогда происходит обмен данными. Если используется не верная часть ключа – подключение не произойдет.
Пошаговое создание пары SSH-ключей
Для того чтобы обеспечить безопасное удаленное управление с SSH, использование парольной проверки будет недостаточно безопасной опцией. Таким образом, лучше настроить аутентификацию используя ключ SSH. Начать нужно с генерации пары ключей и в разных ОС процесс может немного отличаться.
Генерация ключей в Linux и macOS
Для того чтобы сгенерировать пару ключей в Linux и macOS системах можно использовать утилиту ssh-keygen. Сначала запустите следующую команду в терминале:
ssh-keygen
После этого нужно выбрать место хранения файлов. Если вы хотите выбрать опцию по умолчанию просто нажмите Enter, при задании конкретного места хранения введите нужный путь.
Следующим шагом будет добавление парольной фразы, если вы хотите пропустить этот этап просто нажмите Enter. Таким образом, у вас получиться 2 файла с закрытым и открытым ключами. Файлам можно задать разные имена, но по умолчанию они – id_rsa и id_rsa.pub.
Часто спрашивают: Передача файлов с локального ПК на VPS под Linux
Создание ключей на Windows-системах
В Windows-системах процесс проход с помощью PowerShell и в последних версиях она поддерживает ту же утилиту ssh-keygen потому процесс будет идентичен тому который мы уже описали.
Альтернативной версией в Windows-системах есть использование PuTTY в которую также входит генератор PuTTYgen.
- После запуска PuTTYgen нажмите Generate.
- Для генерации случайных данных нужно перемещать указатель мыши.
- Введите дополнительную фразу-пароль для шифрации приватного ключа.
Далее нужно сохранить файлы приватного и публичного ключа в нужных местах.
Передача открытого ключа на сервер
Закрытый ключ должен сохраняться на машине, с которой будет осуществляться подключение. Открытый ключ должен быть передан на хост, к которому планируется подключение.
В том случае если openssh-server не установлен на хосте, нужно использовать следующие команды:
sudo apt update
sudo apt install openssh-server
sudo systemctl start ssh
sudo systemctl enable ssh
Теперь давайте рассмотрим несколько способов для переноса открытого ключа.
Автоматический перенос с помощью ssh-copy-id
С помощью ssh-copy-id можно осуществить автоматический перенос, но только на системах macOS и Linux.
В терминале введите следующую команду:
ssh-copy-id user@server_ip
При первом подключении, вы можете увидеть, что компьютер не распознал хост. Для запоминания сервера нужно ввести Yes и потом нажать Enter. После чего будет произведена проверка открытого ключа и локального компьютера. Следующим шагом будет ввод пароля, вследствии чего будет установлено соединение и перенос ключа.
Часто спрашивают: Настройка FTP-сервера на Ubuntu
Использование временного пароля для копирования ключа
Еще одним вариантом есть перенос через подключение по паролю. Для того чтобы правильно произвести процесс используйте команду:
cat ~/.ssh/id_rsa.pub | ssh user@server_ip “mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys”
- В начале команды выводится содержимое файла – cat ~/.ssh/id_rsa.pub
- Хост, к которому осуществляется подключение – ssh user@server_ip
- Далее создается папка и файл для хранения открытых ключей
Ручная установка открытого ключа
Ручная установка открытого ключа возможна через Secure Shell. В данном процессе нужно создать файл и добавить в него открытый ключ.
Для отображения содержимого открытого ключа на локальной машине введите:
cat ~/.ssh/id_rsa.pub
Следующим шагом будет копирование ответа, подключение к серверу и создание каталога с помощью команды:
mkdir -p ~/.ssh
Добавление ключа осуществляется следующим образом:
echo public_key >> ~/.ssh/authorized_keys
Здесь вместо public_key нужно указать содержимое id_rsa.pub. Если ключа нет, то система создаст его самостоятельно, а если он уже создан, то вставьте эту информацию в новую строку. Также, необходимо настроить права доступа к файлу и директории ~/.ssh, в ней не должны находится разрешения “other” и “group”.
Владельцем директории должен быть свой юзер, а не root. В том случае если к серверу будут подключаться разные пользователи, нужно осуществить дополнительную настройку ключей.
Настройка подключения к серверу по SSH-ключам
Для подключения в системе Ubuntu, выполните следующую команду:
ssh имя_пользователя@адрес_сервера
Также, во время первого подключения может появиться уведомление, что компьютер не распознает хост. Если появилось подобное предупреждение нужно ввести Yes и нажать Enter. Далее вы попадаете в систему после ввода пароля или без пароля.
Подключение через PuTTY и альтернативные клиенты
Процесс подключения через PuTTy выглядит следующим образом:
- Запуск PuTTY.
- Ввод имени или IP хоста.
- Выбор соединения SSH, а порт остается по умолчанию 22.
- Выбор вкладки Connection — SSH — Auth.
- Нажмите Browse и выберите приватный ключ.
- Для установки соединения нажмите Open.
Далее запуститься собственный терминал, и через него вы получите доступ к серверу.
Деактивация входа по паролю для повышения безопасности
Во время использования SSH-ключей можно отключить парольную проверку. Таким образом, без наличия пароля, невозможно будет его украсть и получить доступ.
Для отключения пароля, нужно проверить чтобы приватный ключ имел копию и был надежно сохранен. В Ubuntu нужно начать с открытия настройки:
sudo nano /etc/ssh/sshd_config
Далее нужно найти ‘PasswordAuthentication’ и установить значение на “no” и перезапустите службу.
Читайте также: Выделенный IP-адрес: нужен ли он вашему сайту и какие преимущества дает
Итоги и рекомендации по управлению SSH-ключами
Secure Shell использует аутентификацию на основе пароля по умолчанию, и это делает систему очень уязвимой. Для того чтобы гарантировать максимальную безопасность нужно применять аутентификацию на основе ключей. Юзер может подключиться к серверу только когда используется клиент с приватным ключом. Чтобы гарантировать дополнительный уровень безопасности ключ можно зашифровать или защитить паролем.