Putty генерация ключа linux

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

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

Итак, чтобы подключится к *Nix хосту через SSH, нужно предоставить серверу пару: логин + пароль, или логин + ключ. Настройка SSH аутентификации по ключам не только повышает уровень защищенности сервера, но и упрощает жизнь администратору за счет более удобного подключения к серверу. Вместо использования пароля, который может быть перехвачен кейлогером или подсмотрен, мы будет использовать ключи RSA. Для обеспечения достаточного уровня безопасности будем использовать длину ключа 2048 бит. Желательно хранить закрытый ключ на зашифрованном разделе (Bitlocker, EFS), тем самым вы защититесь от кражи закрытого файла с ключом.

Создание SSH ключей для Putty

Для подключения к серверам Linux из Windows я предпочитаю использовать старый-добрый клиент PuTTy. В состав пакета поставки putty входит небольшая утилита puttygen, которая может быть использована для генерации RSA и DSA ключей. Скачайте утилиту с официального сайта https://the.earth.li/~sgtatham/putty/latest/x86/puttygen.exe и запустите ее. В окне PuTTy Key Generator нажмите кнопку Generate и произвольно подвигайте мышкой для создания некой рандомной последовательности. Утилита сгенерирует пару ключей: открытый и закрытый.

puttygen генерация ключей

Нам интересны следующие возможности интерфейса

Key passphrase Здесь можно указать пароль для защиты закрытого ключа
Save public key Кнопка для сохранения открытого ключа в файл, который нужно будет поместить на удаленный сервер
Save private key Кнопка для сохранения закрытого ключа Файл с закрытым ключом должен храниться на клиенте (желательно защищённом) и будет использоваться для подключения к удаленному серверу.
SSH-2 RSA 2048 Указывается тип ключа и его длина. В нашем примере достаточно будет выбрать SSH-2 RSA.

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

Настройка SSH на Linux для аутентификации с помощью ключей

В большинстве дистрибутивов Linux уже настроена поддержка аутентфикации с помощью сертификатов. Откройте конфигурационной файл сервера SSH (/etc/ssh/sshd_config) и раскомментируйте или добавьте следующие стройки:

Читайте также:  Файл подкачки arch linux

HostKey /etc/ssh/ssh_host_dsa_key
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

/etc/ssh/sshd_config

Перезапустите SSH командой:

Затем создадим файл с ключом на сервере:

# mkdir ~/.ssh
# chmod 0700 ~/.ssh
# touch ~/.ssh/authorized_keys
# chmod 0644 ~/.ssh/authorized_keys

В файл authorized_keys нужно вставить ключ, скопированный из окна puttygen и сохранить его.

Затем на стороне клиента откройте Putty и перейдите в раздел Connection -> SSH -> Auth. Нажмите кнопку Browse и укажите путь к закрытому ключу, который вы сохранили ранее (расширение.ppk)

putty выбор закрытого ключа

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

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

Укажем только имя пользователя (в нашем случае это root).

ssh авторизация по ключу

Наличие строки « Authenticating with public key «rsa-key-20161208″» говорит о том, что вы успешно аутентифицировались с помощью ключа RSA.

Журнал подключений по SSH с помощью ключей

Как правило, администратор должен знать, когда и какой ключ или сертификат использовался для подключения к серверу. Однако, в большинстве дистрибутивов эта информация в журналах не отображается. Однако, к примеру, в CentOS 7 со стандартными настройками и уровнем журналирования INFO, отпечатки ключей сохраняются в журнал (# cat /var/log/secure).

В том случае, если в вашем журнале нет этой информации, исправить это не сложно. Отредактируйте конфигурационный файл /etc/ssh/sshd_config, изменив уровень журналирования:

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

# cat /var/log/secure
May 20 12:23:17 server sshd[8746]: Connection from 192.168.10.15 port 60162
May 20 12:23:19 server sshd[8746]: Found matching RSA key: 5b:7b:2a:14:29:11:bf:3a:8f:bd:24:99:21:34:cd:e6
May 20 12:23:19 server sshd[8746]: Postponed publickey for root from 192.168.10.15 port 60162 ssh2 [preauth]
May 20 12:23:19 server sshd[8746]: Found matching RSA key: 5b:7b:2a:14:29:11:bf:3a:8f:bd:24:99:21:34:cd:e6
May 20 12:23:19 server sshd[8746]: Accepted publickey for root from 192.168.10.15 port 60162 ssh2
May 20 12:23:19 server sshd[8746]: pam_unix(sshd:session): session opened for user root by (uid=0)

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

Источник

How To Configure SSH Keys Authentication With PuTTY And Linux Server

This tutorial explains how you can replace password-based SSH authentication with key-based authentication which is more secure because only the people that own the key can log in. In this example, we’re using PuTTY as our SSH client on a Windows system.

Generate a private and public key pair

Open PuTTYgen.exe, press Generate button, move mouse. Once the keys are generated, type your key passphrase (choose a «hard to guess» one). Save Public key. Save Private key.

PuTTY Key Generator

Configure your Linux server (create user, save public key)

For this guide let’s assume you regular login name is us3r (replace it with one that you use regularly).

As root, on the shell, type:

adduser us3r --disabled-password

You will be asked to fill in some details such as the user’s real name (empty string is fine).

su us3r cd /home/us3r mkdir .ssh chmod 700 .ssh cd .ssh

Then in that folder, create and edit a file called authorized_keys2 .

Читайте также:  Linux не работает bash

In there, cut/paste your public ssh key, on ONE LINE (That is very important. )

  • Do not add the email@example.com at the end of the line.
  • Do not add the BEGIN PUBLIC KEY or END PUBLIC KEY.
  • Do not add the rsa-key-20090211 at the end.
  • Make sure, there is ssh-rsa at the beginning.

It should be something like:

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIBf3inevLchN36/bjLulNKDOnWTd/12I2QkM+o3uxg4C…
chmod 600 authorized_keys2

Add Private key to PuTTY SSH authentication agent

Start the PuTTY SSH authentication agent PAGEANT.EXE. When started, right-click its systray icon and select «add key». Select your private key file, and type in your passphrase when you add the key. The Pageant works as a passphrase keeper.

Use PuTTY to connect to your server

Open PuTTY and connect as us3r@putty.org.ru :

PuTTY - connect to a server

See that you log in without a password …

Источник

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

url image

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

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

Для ОС CentOS, AlmaLinux или RockyLinux выполните команду:

# yum -y install openssh-server openssh-clients

Для ОС Debian или Ubuntu выполните команду:

# apt -y install openssh-server

Дальнейшая инструкция будет одинаковая для всех ОС.

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

# ssh-keygen Generating public/private rsa key pair. Enter file in which to save the key (/root/.ssh/id_rsa): Enter passphrase (empty for no passphrase):

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

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

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

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:JPDzeSan06C9+osd+sKXWP0RmPk4UbSESaTvYn0aXVk root@test-server1.com The key's randomart image is: +---[RSA 3072]----+ |. oo+o | | o .o. | | + o =. E | | = o= . o | | S.=+ .o | | o.@+.o. | | ..oB.=oo. | | +=o= +. | | +**.. | +----[SHA256]-----+

По умолчанию в современных ОС генерация ключей происходит по умолчанию с такими настройками: тип аутентификации — RSA, число бит в ключе — 2048 или 3072.

Рекомендуем позаботится о безопасности ключей. В первую очередь обязательно необходимо задавать пароль (passphrase), который не должен быть простым. С помощью параметра -a можно увеличить время проверки пароля ключа, чтобы усложнить взлом методом грубого перебора (в случае, если ключ будет утерян, у вас будет больше времени на смену ключа на сервере).

Будьте внимательны, слишком большое значение приведет к тому, что вам придется ждать каждый раз при входе на сервер по ключу. Значение по умолчанию — 3 секунды, можно задать 15 секунд. С помощью параметра -b можно задать число бит в ключе — 4096. Получаем такую команду:

Читайте также:  Ralink mt7601 kali linux

Выбираем директорию, вводим пароль и видим ключ RSA 4096.

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

Никогда и никому не передавайте, не показывайте свой закрытый ключ и не выкладывайте его на публично доступные сервисы (в т.ч. GitLab, GitHub и пр.).

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

cat ~/.ssh/id_rsa.pub | ssh root@ip-адрес-сервера 'cat >> ~/.ssh/authorized_keys'

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

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

echo ssh-rsa строка-публичного-ключа >> /root/.ssh/authorized_keys

Теперь можно отключить на сервере аутентификацию по паролю и использовать только 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 для редактирования (например, с помощью текстового редактора Vi).

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

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

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

Login as: root Authenticating with public key “rsa-key-20230205” Last login: Sun Feb 5 13:11:24 2023 from 1.1.1.1

В случае успешной аутентификации по SSH-ключу вы получите доступ к командной строке сервера и сообщение вида Authenticating with public key «rsa-key-20230205», где rsa-key-20230205 — имя применённого закрытого ключа, указанное вами в файле authorized_keys.

Источник

Оцените статью
Adblock
detector