Как создать и использовать ключи SSH

0 Акции
0
0
0
0

Введение

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

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

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

Предпосылки
  • Доступ к панели управления OVHcloud
  • Выделенный сервер или VPS на вашем аккаунте OVHcloud
  • Клиентская программа SSH (командная строка или графический интерфейс)
  • Административный (sudo) доступ через SSH к вашему серверу

Это руководство не применимо к стандартным установкам Windows Server, поскольку они используют протокол удалённого рабочего стола (RDP) для подключения. Для режима восстановления OVHcloud используются SSH-подключения. Подробнее см. в разделе «Дополнительно» данного руководства.

Создание пары ключей SSH

Следующие инструкции охватывают два метода использования ключей SSH:

  • Создание пары ключей Open SSH и подключение к серверу из клиента командной строки SSH
  • Создание пары ключей PuTTY и подключение к серверу из SSH-клиента PuTTY

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

Создание пары ключей SSH из командной строки

На компьютере Mac или устройстве с установленной операционной системой Linux откройте приложение командной строки (Терминал).

Проверьте наличие папки .ssh в папке $HOME. Если папки нет, создайте её:

mkdir ~/.ssh

В текущей операционной системе Windows откройте командную строку, введя “cmd” в строке поиска (или откройте PowerShell из меню).

Перейдите в каталог .ssh для вашего активного пользователя Windows (по умолчанию: C:\Users\WindowsUsername\.ssh):

cd .ssh

Чтобы сгенерировать 4096-битный ключ RSA, используйте следующую команду:

ssh-keygen -b 4096

Использование опции -t с этой командой позволяет указать другой метод шифрования, например:

ssh-keygen -t ed25519 -a 256

Командная строка попросит вас сохранить созданный ключ в стандартный файл:

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa):

Вы можете подтвердить, нажав Enter, чтобы принять предложенное имя файла, или ввести собственное имя. Это актуально, если в каталоге .ssh находится более одной пары ключей. Подробнее об этом см. в разделе «Управление несколькими ключами SSH».
В этом примере используются стандартные имена файлов id_rsa и id_rsa.pub.

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

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

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

Все SSH-ключи должны храниться в папке .ssh. Файлы открытых ключей будут иметь расширение .pub в имени.

Your identification has been saved in /home/user/.ssh/id_rsa.
Your public key has been saved in /home/user/.ssh/id_rsa.pub.
The key fingerprint is:
SHA256:MRk+Y0zCOoOkferhkTvMpcMsYspj212lK7sEauNap user@hostname
The key's randomart image is:
+---[RSA 4096]----+
| .. o |
| . .= o |
| o o X |
|. . . . |
|. .=.o .S. |
| =o.o. . . |
|o + . . o .. |
|.. . . oEoo . |
|o. .o+oo |
+----[SHA256]-----+

Чтобы просмотреть и экспортировать свой открытый ключ, используйте команду cat в файле pub.key. Скопируйте полную строку ключа в буфер обмена, чтобы позже добавить её на сервер.

cat ~/.ssh/id_rsa.pub
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQC8teh2NJ42qYZV98gTNhumO1b6rMYIkAfRVazl
k6dSS3xf2MXJ4YHsDacdjtJ+evXCFBy/IWgdkFtcvsGAMZ2N1RdvhDyQYcy6NDaJCBYw1K6Gv5fJ
SHCiFXvMF0MRRUSMneYlidxUJg9eDvdygny4xOdC6c1JrPrSgOc2nQuKeMpOoOWLINIswg1IIFVk
kFMPrFivP8Z6tidzVpAtbr1sXmJGZazYWrU3FoK2a1sF1zEWrmlMOzX81zEWrmlMOzX8CpZW8Rae
i4ANmLy7NULWK36yU0Rp9bFJ4o0/4PTkZiDCsK0QyHhAJXdLN7ZHpfJtHIPCnexmwIMLfIhCWhO5
user@hostname

В Терминале macOS вы можете использовать команды pbcopy и pbpaste для более быстрого управления строками ключей. Например, используйте эту команду, чтобы скопировать ключ из файла id_rsa.pub в буфер обмена:

pbcopy < ~/.ssh/id_rsa.pub

В Windows вы можете открыть файл с помощью Блокнота из Проводника (щелкните правой кнопкой мыши файл и выберите Открыть с помощью) или используйте одну из следующих команд (в \Users\WindowsИмя пользователя\.ssh):

  • cmd
more id_rsa.pub
  • PowerShell
cat id_rsa.pub

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

Использование буфера обмена

При работе из командной строки Windows щелкните правой кнопкой мыши, чтобы вставить содержимое буфера обмена в окно командной строки. Чтобы скопировать строку из окна командной строки, выделите её и нажмите клавишу Enter. Эти функции также можно найти, щелкнув правой кнопкой мыши в строке меню.

Создание пары ключей SSH с помощью PuTTY

PuTTY — это SSH-клиент с открытым исходным кодом и графическим интерфейсом, доступный для Windows и других операционных систем. Он предлагает сопутствующее программное обеспечение для генерации SSH-ключей: PuTTY Key Generator (PuTTYgen).

Основное назначение PuTTY — управление SSH-подключениями между клиентским компьютером Windows и сервером GNU/Linux. PuTTY хранит файлы ключей в определённом формате, который делает их несовместимыми с файлами ключей SSH, созданными с помощью клиента Open SSH, который изначально доступен в большинстве современных операционных систем.

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

Если PuTTY ещё не установлен (проверьте список программ или воспользуйтесь поиском), скачайте его с официального сайта. Рекомендуемый стандартный установочный пакет содержит PuTTYgen, но он также доступен в виде отдельного файла на сайте.

Откройте PuTTYgen и выберите поддерживаемый алгоритм шифрования. В этом примере используется RSA. Введите число бит 4096 в правом нижнем углу, затем нажмите кнопку «Сгенерировать».

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

Когда полоса прогресса заполнится, ключ готов.

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

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

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

Одним из преимуществ PuTTY является возможность сохранения нескольких подключений в виде сеансов. Подробнее см. ниже в разделе «Управление несколькими SSH-ключами на локальном компьютере».

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

Добавление SSH-ключей на ваш сервер

Передача открытых ключей, созданных в системах на базе GNU/Linux, MacOS или BSD
Если вы создали пары ключей SSH в системе на базе GNU/Linux, MacOS или BSD, вы можете использовать команду ssh-copy-id для добавления открытых ключей на свой сервер.

Инструмент ssh-copy-id копирует открытые ключи в файл ~/.ssh/authorized_keys на указанном удаленном сервере, при необходимости автоматически создавая файл в этом каталоге.

ssh-copy-id user@IP_ADDRESS

По умолчанию ssh-copy-id попытается переместить все открытые ключи в каталог ~/.ssh вашего локального пользователя. Чтобы добавить открытый ключ, укажите этот файл с помощью параметра -i, а затем путь к файлу:

ssh-copy-id -i ~/.ssh/KeyFileName user@IP_ADDRESS

Пример:

ssh-copy-id -i ~/.ssh/VPS_rsa.pub [email protected]

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

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

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

В целях безопасности и в целях безопасности не рекомендуется использовать одну и ту же пару ключей несколькими пользователями. Поскольку в системах GNU/Linux у каждого пользователя есть свой файл author_keys в каталоге ~/.ssh/, вы можете использовать команду ssh-copy-id, как показано выше, и сопоставить KeyFileName и пользователя после создания пары ключей.

Добавление открытых ключей на сервер вручную

Подключитесь к серверу и убедитесь, что вы находитесь в каталоге пользователя $HOME. Создайте папку .ssh (если она ещё не существует):

mkdir ~/.ssh

Чтобы сохранить ключ для текущего пользователя, откройте (или создайте) файл author_keys в вашем любимом текстовом редакторе (в этом примере используется nano):

nano ~/.ssh/authorized_keys

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

sudo systemctl restart ssh
sudo systemctl restart sshd

Чтобы убедиться, что ваш ключ настроен правильно, подключитесь к серверу с помощью следующей команды. Замените «user» на имя пользователя, для которого были созданы ключи, а «IP_ADDRESS» — на IP-адрес (или имя хоста) сервера, к которому вы хотите получить доступ:

ssh user@IP_ADDRESS

Пример:

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

Чтобы добавить ключи SSH для других пользователей, которые будут иметь доступ к вашему серверу, повторите шаги по созданию ключа, но используйте соответствующую папку $HOME или каталог пользователей Windows предполагаемого пользователя для создания и хранения ключей SSH (или запускайте команды на выделенном компьютере этого пользователя). Затем добавьте новый открытый ключ на сервер, как описано выше в author_keys.

Удаление открытых ключей с вашего сервера

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

Сохраните файл и выйдите из редактора.

Управление несколькими ключами SSH на локальном компьютере

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

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

Generating public/private rsa key pair.
Enter file in which to save the key (/home/user/.ssh/id_rsa): KeyFileName_rsa
Your identification has been saved in /home/user/.ssh/KeyFileName_rsa.
Your public key has been saved in /home/user/.ssh/KeyFileName_rsa.pub.

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

ssh -i ~/.ssh/KeyFileName user@IP_ADDRESS

Пример:

ssh -i ~/.ssh/myVPS_rsa [email protected]

Как упоминалось в предыдущих разделах, те же инструкции работают и на клиенте Windows. Просто замените ~/ на путь к папке вашего пользователя Windows, по умолчанию C:\Users\WindowsUsername\. (Пример: ssh -i C:\Users\Username\.ssh/myVPS_rsa [email protected])

Использование файла “config”.

Альтернатива добавлению параметра -i при каждом редактировании файла config в папке ~/.ssh (\Users\Имя пользователя\.ssh для Windows). Вы можете использовать его для настройки параметров различных подключений (имя пользователя, порт, файл ключа, дополнительные параметры и т. д.).

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

Пример содержимого папки .ssh:

ls ~/.ssh/
config id_rsa id_rsa.pub known_hosts known_hosts.old

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

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

Host vps
HostName 203.0.113.100
IdentityFile ~/.ssh/myVPS_rsa

Затем вы можете подключиться к VPS, используя псевдоним, который вы определили как Host:

ssh ubuntu@vps

В предыдущем примере были указаны только IP-адрес сервера и файл ключа, но можно добавить больше информации. Чтобы настроить SSH-подключение ко второму серверу с именем пользователя “rocky”, изменённым портом SSH “49160” и закрытым ключом в файле “myserver_rsa”, разверните содержимое файла, как показано в этом примере:

Host vps
HostName 203.0.113.100
IdentityFile ~/.ssh/myVPS_rsa
Host dedicated_server
HostName 203.0.113.101
User rocky
Port 49160
IdentityFile ~/.ssh/myserver_rsa

Затем вы можете подключиться к этому серверу, введя следующее:

ssh dedicated_server

Более подробную информацию вы можете найти на соответствующей странице руководства.

Использование PuTTY

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

PuTTY может хранить учётные данные и параметры SSH-подключения в виде сеанса. Это также позволяет подключаться к разным серверам, используя отдельные ключи.

Откройте PuTTY и разверните подраздел SSH в левом меню, затем нажмите «Аутентификация и учетные данные».

Нажмите кнопку «Обзор» и выберите файл закрытого ключа PuTTY (keyfile.ppk) из папки, в которой он сохранен.

Файл ключа теперь связан с текущим сеансом SSH. Перейдите в раздел «Сеанс» в левом меню и введите свои учётные данные для входа на сервер (имя пользователя@IPv4_адрес).

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

Теперь вы можете нажать на этот пункт «Сессия» и открыть соединение с вашим сервером. Нажмите «Открыть», чтобы проверить соединение. Если вы защитили файл ключа парольной фразой, вам потребуется ввести её на этом этапе.

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

  • Создайте пару ключей.
  • Добавьте открытый ключ на свой сервер.
  • Введите данные сервера и добавьте файл ключа в PuTTY.
Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может понравиться