Настройка ключей ssh centos

Обновлено: 05.07.2024

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

В этом мануале вы узнаете, как настроить ключи SSH на новом сервере CentOS 7. SSH-ключи обеспечивают простой и безопасный способ входа на сервер и рекомендуются для всех пользователей.

1: Создание пары RSA-ключей

Для начала нужно создать пару ключей на клиентской машине (обычно это ваш компьютер):

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

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

Нажмите enter, чтобы сохранить пару ключей в подкаталог .ssh/ в домашнем каталоге, или укажите альтернативный путь.

После этого вы увидите:

Enter passphrase (empty for no passphrase):

Здесь можно ввести надежную парольную фразу, которую настоятельно рекомендуется использовать. Эта парольная фраза добавляет уровень безопасности для предотвращения входа в систему неавторизованных пользователей. Чтобы узнать больше о безопасности, ознакомьтесь с нашим мануалом Настройка аутентификации на основе SSH-ключей на сервере Linux.

Вы увидите такой вывод:

Your identification has been saved in /your_home/.ssh/id_rsa.
Your public key has been saved in /your_home/.ssh/id_rsa.pub.
The key fingerprint is:
a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host
The key's randomart image is:
+--[ RSA 2048]----+
| ..o |
| E o= . |
| o. o |
| .. |
| ..S |
| o o. |
| =o.+. |
|. =++.. |
|o=++. |
+-----------------+

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

2: Копирование открытого ключа на сервер

Самый быстрый способ скопировать открытый ключ на хост – это использовать утилиту ssh-copy-id. Этот метод очень прост, потому используйте его, если у вас есть такая утилита. Если на вашем клиентском компьютере нет ssh-copy-id, вы можете использовать один из двух альтернативных методов, перечисленных в этом разделе ниже (копирование через парольную аутентификацию SSH или копирование ключа вручную).

Копирование ключа с помощью ssh-copy-id

Инструмент ssh-copy-id включен по умолчанию во многие операционные системы, поэтому вы можете использовать его в своей локальной системе. Чтобы этот метод работал, у вас уже должен быть парольный доступ SSH к серверу.

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

Утилита использует такой синтаксис:

Вы увидите такой вывод:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не распознает удаленный хост. Это всегда происходит при первом подключении к новому хосту. Введите yes и нажмите Enter, чтобы продолжить.

Затем утилита сканирует локальную учетную запись, чтобы найти ключ id_rsa.pub. Когда она найдет ключ, она предложит вам ввести пароль учетной записи удаленного пользователя:

/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
username@111.111.11.111's password:

Введите пароль (ваш ввод не будет отображаться из соображений безопасности) и нажмите Enter. Утилита подключится к учетной записи на удаленном хосте, используя предоставленный вами пароль. Затем она скопирует содержимое файла

/.ssh/id_rsa.pub в файл authorized_keys в домашнем каталоге

/.ssh удаленной учетной записи.

Вы увидите такой вывод:

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

На данный момент ваш ключ id_rsa.pub скопирован в удаленную учетную запись. Переходите к разделу 3.

Копирование открытого ключа по SSH

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

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

/.ssh существует в удаленной учетной записи, а затем проверить его содержимое.

Используйте символ перенаправления >>, чтобы добавить данные в файл, а не перезаписывать его. Это позволит вам добавлять в файл ключи, не удаляя ранее добавленные ключи.

Команда выглядит так:

/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p

Вы можете увидеть такой вывод:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не распознает удаленный хост. Это происходит при первом подключении к новому хосту. Введите yes и нажмите Enter, чтобы продолжить.

После этого будет предложено ввести пароль учетной записи удаленного пользователя:

После ввода пароля содержимое ключа id_rsa.pub будет скопировано в конец файла authorized_keys учетной записи удаленного пользователя. Если все получилось, переходите к разделу 3.

Копирование открытого ключа вручную

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

Вручную нужно вставить содержимое файла id_rsa.pub в файл

/.ssh/authorized_keys на удаленной машине.

Чтобы отобразить содержимое id_rsa.pub, введите на локальной машине:

Вы увидите такой ключ:

ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test

Любым доступным способом подключитесь к удаленному хосту.

Если у вас есть доступ к учетной записи на удаленном сервере, убедитесь, что каталог

/.ssh существует. Эта команда при необходимости создаст каталог или не сделает ничего, если он уже существует:

Теперь вы можете создать или изменить файл authorized_keys в этом каталоге. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys с помощью этой команды:

Если файла authorized_keys не существует, команда создаст его.

В приведенной выше команде замените public_key_string выводом команды cat

Теперь можно проверить беспарольную аутентификацию на сервере CentOS.

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

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

Если вы впервые подключаетесь к этому хосту (если вы копировали ключ вручную), вы можете увидеть такое предупреждение:

The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established.
ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe.
Are you sure you want to continue connecting (yes/no)? yes

Это означает, что ваш локальный компьютер не распознает удаленный хост. Введите yes и нажмите Enter.

Если вы не установили парольную фразу для закрытого ключа, вы сразу же войдете в систему. Если вы создали парольную фразу, вам будет предложено ввести ее сейчас (обратите внимание, что вводимая вами фраза не будет отображаться в терминале из соображений безопасности). После аутентификации в новом сеансе оболочки вы получите доступ к удаленному пользователю.

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

4: Отключение парольной аутентификации

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

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

Убедившись, что ваша удаленная учетная запись имеет все необходимые привилегии, зайдите на свой удаленный сервер с помощью SSH-ключей (либо с правами администратора, либо через учетную запись с привилегиями sudo). Затем откройте файл конфигурации демона SSH:

sudo vi /etc/ssh/sshd_config

Внутри файла найдите директиву PasswordAuthentication. Она может быть закомментирована. Раскомментируйте строку и установите значение «no». Это отключит возможность входа в систему через SSH с использованием паролей учетных записей:

Сохраните и закройте файл. Чтобы обновить настройки, необходимо перезапустить сервис sshd:

sudo systemctl restart sshd.service

В качестве меры предосторожности откройте новое окно терминала и проверьте работу сервиса SSH:

После того как вы подтвердите работу сервиса SSH, можете закрыть все текущие сеансы сервера.

Демон SSH теперь поддерживает только аутентификацию по SSH-ключам. Парольная аутентификация успешно отключена.

Заключение

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

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

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на . Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Введение

Пару слов о чем тут пойдет речь. Для подключения по ssh можно использовать связку логин-пароль, а можно логин-сертификат. В интернете всюду рассказывают о том, что сертификат это безопасно и надо обязательно использовать его для авторизации на сервере. Все, что не по сертификату - дурной тон и дилетантство. Я совершенно не разделяю это мнение и сам всегда использую связку логин-пароль, более того, я чаще всего захожу сразу под root. Я искренне не понимаю, зачем заходить под обычным пользователем и каждый раз вводить sudo и пароль. Я захожу на сервер для совершения административных действий и мне всегда нужны полные права. Что мне там делать под обычным пользователем ума не приложу.

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

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

Об одном таком нюансе я и расскажу. Мне понадобилось настроить авторизацию ssh по сертификату. Причем авторизовываться будет сразу пользователь root. Заходить будут как по паролю, так и по сертификату. Мне необходимо вести учет того, кто по какому сертификату подключился по ssh к серверу.

Создание ssh ключей для putty

sgtatham/putty/latest/x86/puttygen.exe. После запуска нажимайте на кнопку Generate и двигайте мышкой, пока не сформируется пара ключей - открытый и закрытый.

Генерация ssh сертификатов

Key passphrase Можно задать пароль для приватного ключа. Ставить или нет на ваше усмотрение.
Save public key Кнопка сохранения публичного ключа. Он размещается на удаленном сервере.
Save private key Кнопка сохранения приватного ключа. Ключ хранится у клиента и используется для подключения к серверу.
SSH-2 RSA 2048 Тип ключа и его длинна. Значения по-умолчанию подходят в полной мере для нашей задачи.

Формат ключей, которые создает puttygen не подходит для openssh, который стоит на сервере, поэтому содержимое открытого ключа в нужном формате копируем из окна puttygen. Я указал этот ключ стрелочкой на скриншоте. Именно это содержание пойдет на сервер. Сохраняйте ключ в формате openssh, а так же два других с помощью кнопок Save key.

Настройка ssh на сервере для авторизации по сертификатам

Здесь все просто. Во всех известных мне дистрибутивах авторизация по сертификатам уже настроена, нужно просто добавить этот сертификат на сервер. Сделаем это.

В файл authorized_keys вставляйте скопированный ключ из окна puttygen. Сохраняйте и подключайтесь с помощью сертификата. В putty сертификат нужно указать в разделе Connection -> SSH -> Auth.

Подключение putty с помощью сертификата

Выбрать нужно приватный ключ, у которого расширение .ppk. Напоминаю, что на сервер мы отправили публичный ключ. Этот ключ можно использовать на множестве серверов, так что нет необходимости для каждого сервера генерировать новую пару ключей. Везде можно использовать один и тот же.

Теперь можно подключаться, необходимости перезапускать службу ssh нет.

Логирование ssh подключений по сертификату

Мне необходимо знать, когда и какой сертификат подключался к серверу. По-умолчанию такой информации чаще всего в логах не остается. Исключение я заметил только в CentOS 7. Там с дефолтными настройками ssh и уровнем логирования INFO отображается отпечаток ключа в логе:

По отпечатку становится понятно, какой сертификат подключился. Для каждого сертификата отпечаток можно посмотреть в puttygen. В CentOS более ранних версий, в Ubuntu 12 и 14 в логах будет только такая информация:

и перезапускаем службу:

Пробуем снова подключиться по ssh, используя сертификат, и проверяем лог:

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

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

Шаг 1 — Создание пары ключей RSA

Первый шаг — создание пары ключей на клиентской системе (обычно на вашем локальном компьютере):

После ввода команды вы должны увидеть следующую строку:

Нажмите ENTER , чтобы сохранить пару ключей в субдиректорию .ssh/ домашней директории или укажите альтернативный путь.

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

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

Затем вы должны увидеть следующую строку:

Здесь вы можете ввести защищенную фразу-пароль, и мы настоятельно рекомендуем сделать это. Фраза-пароль добавляет дополнительный уровень безопасности для защиты от входа в систему несанкционированных пользователей.

Вы должны увидеть следующий результат:

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

Шаг 2 — Копирование открытого ключа на сервер CentOS

Самый быстрый способ скопировать открытый ключ на хост CentOS — использовать утилиту ssh-copy-id . Мы настоятельно рекомендуем использовать этот метод при наличии возможности. Если на клиентском компьютере нет утилиты ssh-copy-id , вы можете использовать один из двух альтернативных методов, описанных ниже (копирование через SSH на базе пароля или копирование ключа вручную).

Копирование открытого ключа с помощью утилиты ssh-copy-id

Утилита ssh-copy-id по умолчанию входит в состав многих операционных систем, поэтому она может быть доступна на вашем локальном компьютере. Чтобы этот метод сработал, вы должны уже настроить защищенный паролем доступ к серверу через SSH.

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

Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите yes и нажмите ENTER , чтобы продолжить.

Затем утилита проведет сканирование локальной учетной записи для поиска ранее созданного ключа id_rsa.pub . Когда ключ будет найден, вам будет предложено ввести пароль учетной записи удаленного пользователя:

Введите пароль (для безопасности вводимый текст не будет отображаться) и нажмите ENTER . Утилита подключится к учетной записи на удаленном хосте, используя указанный вами пароль. Затем мы скопируем содержимое ключа

/.ssh/id_rsa.pub в файл удаленной учетной записи

Вы должны увидеть следующий результат:

Теперь ваш ключ id_rsa.pub выгружен в удаленную учетную запись.

Копирование открытого ключа с помощью SSH

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

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

Также мы можем убедиться, что директория

/.ssh существует и имеет правильные разрешения для используемой нами учетной записи.

Мы можем вывести переданное содержимое в файл с именем authorized_keys в этой директории. Мы используем символ перенаправления >> , чтобы дополнять содержимое, а не перезаписывать его. Это позволяет добавлять ключи без уничтожения ранее добавленных ключей.

Полная команда выглядит следующим образом:

Это означает, что ваш локальный компьютер не распознает удаленный хост. Это произойдет при первом подключении к новому хосту. Введите yes и нажмите ENTER , чтобы продолжить.

После этого вам нужно будет ввести пароль учетной записи удаленного пользователя:

После ввода пароля содержимое ключа id_rsa.pub будет скопировано в конец файла authorized_keys учетной записи удаленного пользователя.

Копирование открытого ключа вручную

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

Мы вручную добавим содержимое вашего файла id_rsa.pub в файл

/.ssh/authorized_keys на удаленном компьютере.

Чтобы вывести содержимое ключа id_rsa.pub , введите на локальном компьютере следующую команду:

Вы увидите содержимое ключа, которое должно выглядеть следующим образом:

Получите доступ к удаленному хосту с использованием любого доступного метода.

После получения доступа к учетной записи на удаленном сервере убедитесь, что директория

/.ssh существует. При необходимости эта команда создаст директорию, а если она уже существует, команда ничего не сделает:

Теперь вы можете создать или изменить файл authorized_keys в этой директории. Вы можете добавить содержимое файла id_rsa.pub в конец файла authorized_keys и при необходимости создать его с помощью этой команды:

В вышеуказанной команде замените public_key_string результатами команды cat

/.ssh/id_rsa.pub , выполненной на локальном компьютере. Она должна начинаться с ssh-rsa AAAA. .

Наконец, нужно убедиться, что директория

/.ssh и файл authorized_keys имеют соответствующий набор разрешений:

При этом будут рекурсивно удалены все разрешения «group» и «other» для директории

Если вы используете учетную запись root для настройки ключей учетной записи пользователя, важно учитывать, что директория

/.ssh принадлежит пользователю, а не пользователю root :

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

Теперь мы можем попробовать настроить аутентификацию на базе ключа на нашем сервере CentOS.

Если вы успешно выполнили одну из вышеописанных процедур, теперь вы сможете войти на удаленный хост без пароля учетной записи для удаленного хоста.

Первоначальная процедура аналогична аутентификации с помощью пароля:

Если вы подключаетесь к этому хосту первый раз (если вы используете указанный выше последний метод), вы сможете увидеть следующее:

Это означает, что ваш локальный компьютер не распознает удаленный хост. Введите yes и затем нажмите ENTER , чтобы продолжить.

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

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

Шаг 4 — Отключение аутентификации с помощью пароля на сервере

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

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

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

Когда вы закончите вносить изменения, нажмите ESC , а затем введите :wq для записи изменений в файл и выхода из системы. Для фактического внесения этих изменений нужно перезапустить службу sshd :

В качестве меры предосторожности откройте новое окно терминала и проверьте правильность работы службы SSH, прежде чем закрывать этот сеанс:

После проверки корректной работы службы SSH вы можете безопасно закрыть все текущие сеансы сервера.

Теперь демон SSH на вашем сервере CentOS будет реагировать только на ключи SSH. Аутентификация на базе паролей успешно отключена.

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

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

Создание SSH-ключей в Linux на примере CentOS

На клиентской стороне должен быть установлен пакет ssh (openssh). На серверах FirstVDS с шаблонами по умолчанию необходимое ПО уже установлено.

На клиентском компьютере в командной строке выполните команду генерации ключей:


Введите путь файла, в который будут помещены ключи. Каталог по умолчанию указан в скобках, в примере /домашний_каталог/.ssh/id_rsa . Если хотите оставить расположение по умолчанию, нажмите Enter .

Пароль (passphrase) используется для ограничения доступа к закрытому ключу. Пароль усложнит использование ключа третьими лицами в случае утраты. Если не хотите использовать секретную фразу, нажмите Enter без заполнения строки.

Успешно сгенерировав пару ключей, вы увидите уведомление:


Открытый ключ хранится в файле /домашний_каталог/.ssh/id_rsa.pub , закрытый — /домашний_каталог/.ssh/id_rsa .


Скопируйте открытый ключ на сервер в файл /домашний_каталог/.ssh/authorized_keys . Одной строкой:

Или откройте этот файл на сервере редактором vi и вставьте строку с открытым ключом после ssh-rsa .


Ещё один способ скопировать ключ в authorized_keys — команда echo , которая помещает строку в конец файла.


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

Создание SSH-ключей на Windows с PuTTYgen

Если вы используете ОС Windows, то подключиться по SSH к вашему (Linux) серверу можно через PuTTY или OpenSSH . Генерация ключей в этом случае выполняется также при помощи этих программ. В примере мы используем клиент PuTTY.

Запустите приложение PuTTYgen , которое устанавливается вместе с PuTTY.


Выберите тип ключа SSH2-RSA и нажмите Generate .


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


После завершения создания ключей открытый ключ выводится на экран, закрытый хранится в памяти приложения. Чтобы сохранить эти ключи нажмите Save public key и Save private key . Укажите расположение файлов с ключами.


При сохранении закрытого ключа, если не заполнено поле Key passphrase , появится запрос «Хотите ли вы сохранить ключ без секретной фразы?»


Теперь открытый ключ необходимо скопировать на сервер в файл authorized_keys . Используйте WinSCP или другой клиент для работы с файлами на удалённом Linux-сервере. Вы можете скопировать файл с открытым ключом целиком на сервер, чтоб его копия хранилась в папке .ssh


Откройте файл authorized_keys через WinSCP и файл, в который вы сохранили открытый ключ (public), на локальном компьютере текстовым редактором. Скопируйте значение ключа, сохраните и закройте файл в WinSCP.


При запуске PuTTY укажите путь к закрытому ключу на локальном компьютере. Для этого во вкладке Connections → Auth выберите необходимый путь.


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

Отключение аутентификации по паролю

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

Убедитесь, что указан правильный путь к открытым ключам SSH, поставьте значение параметра PasswordAuthentication no .


Перезапустите службу sshd.


Подключитесь к серверу по SSH без использования пароля. Например, запустите PuTTY, проверьте, что во вкладке Connections -> Auth содержится путь к закрытому ключу и откройте подключение.


Читайте также: