Как узнать свой ssh key windows

Обновлено: 08.07.2024

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

Генерация SSH-ключа на Linux/MacOS

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

/.ssh . При генерации ключей, создаётся 2 файла id_rsa (приватный ключ), и id_rsa.pub (публичный ключ). Если вы будете использовать путь по умолчанию, как предлагает ssh-keygen, то это позволит автоматически находить ваши SSH-ключи при аутентификации. Потому, я рекомендую принять все предложения, просто нажав ENTER .

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

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

keygenerated

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

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

Генерация SSH-ключа на Windows

К сожалению, windows не может похвастаться встроенными инструментами генерации SSH-ключей. Потому, для того, чтобы создать пару SSH-ключей на windows, нужно установить утилиту PuTTY. Эта утилита позволяет подключаться к удалённым серверам через SSH, а их дополнительная утилита PuTTYgen используется для генерации SSH-ключей на windows.

На сайте вам необходимо скачать .msi версию (в секции Package files ), после чего запустить установку, следуя всем шагам установщика.

search

После того, как программа будет установлена, на вашем компьютере появится утилита PuTTYgen , найти которую вы можете либо в меню "пуск", либо нажав кнопку Windows и начать вводить её название:

interface

А чтобы сгенерировать ssh-ключ через putty, вам нужно запустите эту утилиту. Её интерфейс созданию ключа будет выглядеть подобным образом:

--------

Вы можете кастомизировать настройки создания ключей (во вкладке Parameters ), если хотите, но значения по умолчанию подходят для большинства всех случаев. Всё, что вам осталось - нажать на кнопку Generate , и рандомно подвигать мышкой ^^.

Когда ключ будет сгенерирован, то вы увидите публичный ключ, отображаемый в текстовом поле. Скопируйте его в буфер обмена, и его можете добавить на любой сервер для аутентификации (DigitalOcean, GitHub, BitBucket, . ). Обязательно проскрольте всю текстовую область, чтобы скопировать ключ полностью.

ssh-generated

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

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

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

Работа с форматом публичного ключа PuTTY

Вы также можете нажать на кнопку Save public key , но учтите: формат, который использует PuTTYGen, при сохранении публичного ключа, несовместим с файлами OpenSSH authorized_keys , используемыми для аутентификации ключа SSH на серверах Linux. Потому, у вас по незнанию этого нюанса может возникать ошибка при добавлении ключа, созданного через PuTTY.

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

  • Откройте PuTTYgen.
  • Загрузите свой приватный ключ в утилиту, нажав на кнопку Load , и выбрав нужный файл ключа.
  • Скопируйте публичный ключ из ранее известного поля.

Генерация SSH-ключа на Windows с помощью Git Bash

Очень вероятно, что вы уже используете Git в своей системе. Потому, вам может даже не понадобиться установка PuTTY в свою систему. Ввиду того, что git bash является очень приближенной системой эмулирования Unix-подобных систем, там доступно большинство линуксовских команд. Потому, в этом случае, вы можете сгенерировать SSH ключ через GIT.

windows_git_bash

Потому, чтобы сгенерировать ключ в Windows, достаточно выполнить команду ssh-keygen , работа с которой была описана выше.

Резюме

В этой статье я показал, как сгенерировать ssh ключ на разный операционных системах: Windows, Linux, MacOS. Прочитав эту статью вы со стопроцентной уверенностью будете знать, как создать свой SSH ключ на любое ОС, с котороми будете работать. В этой статье показан подход, при котором генерируется общий ключ, который подойдёт под большинство случаев: ssh ключ для GitLab, GitHub, DigitalOcean.

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

Чаще всего при аутентификации в Windows используется пара "имя пользователя — пароль", что подходит для систем с общим доменом. При работе с несколькими доменами, например с локальными и облачными системами, возникает риск атак методом перебора.

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

  • ssh-keygen для создания защищенных ключей;
  • ssh-agent и ssh-add для защищенного хранения закрытых ключей;
  • scp и sftp для защищенного копирования файлов открытого ключа при первом использовании сервера.

В этом документе описано, как использовать эти средства в Windows для перехода на аутентификацию на основе ключей по протоколу SSH. Если вы ничего не знаете об управлении ключами через SSH, мы настоятельно рекомендуем ознакомиться с документом NIST IR 7966 о защите интерактивного и автоматизированного управления доступом через Secure Shell (SSH).

Сведения о парах ключей

Парой ключей называются файлы открытого и закрытого ключей, которые используются в некоторых протоколах аутентификации.

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

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

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

Создание ключей узла

Для открытых ключей действуют определенные требования к ACL, которые в среде Windows соответствуют предоставлению доступа только администраторам и системной учетной записи. При первом использовании sshd будет автоматически создана пара ключей для узла.

Сначала необходимо установить OpenSSH Server. См. статью о начале работы с OpenSSH.

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

Так как со службой sshd не связан какой-либо пользователь, ключи узла сохраняются в папке C:\ProgramData\ssh.

Создание ключей пользователя

Чтобы использовать аутентификацию на основе ключей, необходимо заранее создать для клиента одну или несколько пар открытого и закрытого ключей. Программа ssh-keygen.exe используется для создания файлов ключей, при этом вы можете задать алгоритмы DSA, RSA, ECDSA или Ed25519. Если алгоритм не указан, используется RSA. Необходимо использовать надежный алгоритм и соответствующую длину ключа, например Ed25519 в этом примере.

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

Эта команда возвращает такие выходные данные (username заменяется вашим именем пользователя):

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

Теперь у вас есть пара открытого и закрытого ключей Ed25519 в указанном расположении. Файлы PUB являются открытыми ключами, а файлы без расширения — закрытыми.

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

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

Мы настоятельно рекомендуем создать резервную копию закрытого ключа в безопасном расположении, а затем удалить его из локальной системы после добавления в ssh-agent. Закрытый ключ нельзя получить из агента, если использовался надежный алгоритм, например Ed25519 в этом примере. Если вы утратите доступ к закрытому ключу, вам нужно будет создать новую пару ключей и обновить открытый ключ во всех системах, с которыми вы работаете.

Развертывание открытого ключа

Чтобы использовать созданный выше ключ пользователя, поместите содержимое открытого ключа (

\.ssh\id_ed25519.pub) на сервер в текстовый файл, имя и расположение которого зависят от того, принадлежит ли учетная запись пользователя к учетной записи участника группы локальных администраторов или обычного пользователя.

Обычный пользователь

Содержимое открытого ключа (

\.ssh\id_ed25519.pub) нужно разместить на сервере в текстовом файле authorized_keys в папке C:\Users\username\.ssh\. Клиентский компонент OpenSSH включает scp (служебная программа безопасной передачи файлов) для упрощения этого процесса.

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

Администратор

Содержимое открытого ключа (

\.ssh\id_ed25519.pub) нужно разместить на сервере в текстовом файле administrators_authorized_keys в папке C:\ProgramData\ssh\. Клиентский компонент OpenSSH включает scp (служебная программа безопасной передачи файлов) для упрощения этого процесса. Список управления доступом для этого файла должен быть настроен на предоставление доступа только администраторам и системе.

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

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

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

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

SSH-ключ для Linux/MacOS

Откройте терминал и выполните команду:

На консоль будет выведен следующий диалог:

Нажмите на клавишу Enter. Далее система предложит ввести кодовую фразу для дополнительной защиты SSH-подключения:

Этот шаг можно пропустить. При ответе на этот и следующий вопрос просто нажмите клавишу Enter.

Далее выполните в терминале команду:

На консоль будет выведен ключ. Скопируйте его и вставьте в соответствующее поле:


Нажмите на кнопку «Добавить».

Добавив ключ, выполните в терминале команду:

После этого соединение с сервером будет установлено. Вводить пароль при этом не потребуется.

SSH-ключ для Windows

По завершении распаковки запустите файл puttygen.exe.

Выберите тип ключа SSH-2 RSA и длину 2048 бит, а затем нажмите на кнопку Generate:


Во время генерации водите курсором в пустой области окна (это нужно для создания псевдослучайности):


Сохраните сгенерированную пару ключей на локальной машине (кнопки Save public key и Save private key).

Скопируйте сгененированный ключ и вставьте его в соответствующее поле:


Заключение

В этой инструкции мы рассмотрели, как создать шифрованный протокол для связи с сервером: сгенерировали SSH-ключ для Linux/MacOS и Windows. Теперь вы можете входить в систему без пароля учетной записи.

Favorite

Добавить в избранное

Главное меню » Linux » Как найти открытый ключ SSH

Как настроить SSH ключи в Debian 10

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

Как сгенерировать SSH-ключ

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

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

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

Для использования команды ssh-keygen в вашей системе должен быть установлен пакет OpenSSH.

Как просмотреть ключ SSH

Для просмотра содержимого:

Приведенная выше команда распечатает содержимое вашего открытого ключа SSH. Ниже приведен пример ключа:

Эта команда запросит у вас пароль аутентификации для парольной фразы, если она назначена, как показано ниже:

Заключение

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление

Процесс настройки аутентификации по публичному ключу очень простой:

  1. Командой создаётся пара «публичный ключ — приватный ключ».
  2. Публичный ключ копируется на компьютер с сервером SSH, то есть на компьютер, к которому будет осуществляться подключение и на котором будут выполнятся команды.
  3. Затем подключение выполняется обычным способом, но ввод пароля уже не требуется.

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

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

У программы ssh-keygen много функций и возможностей, начнём с рассмотрения процедуры генерации ключей, которая выполняется элементарно.

Если вы успели залогиниться на удалённой системе, разлогинтесь. После этого наберите:

У нас спрашивают имя файла, не нужно ничего вводить, будет использовано имя по умолчанию. Также спрашивается пароль. Этот пароль позволяет установить дополнительную защиту — при подключении с помощью ключей не будет спрашиваться пароль пользователя, но будет спрашиваться пароль самого ключа. Устанавливать пароль необязательно.


В результате будет создано два файла:

Первый файл нужно хранить в секрете. Второй файл нужно скопировать на удалённый компьютер, где запущен сервер SSH.

Теперь на удалённой машине нам нужно создать каталог .ssh. В предыдущей части мы уже узнали, как выполнять команды на удалённой системе по SSH. Запустите команду вида:

Теперь нам нужно скопировать содержимое файла id_rsa.pub на удалённую машину в файл

/.ssh/authorized_keys. Сделать это очень просто (не забываем менять данные на свои):

Теперь выполняем подключение с помощью клиента SSH, но пароль у нас больше спрашиваться не будет.

Типы ключей

Программа ssh-keygen можен генерировать четыре типа ключей:

Чтобы выбрать любой из этих типов, используется опция -t. В предыдущем примере мы выбрали rsa — явно указывать тип RSA необязательно, поскольку он подразумевается по умолчанию (то есть генерацию ключей можно запустить вообще без опции -t).

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

Эти файлы нужно держать в секрете, они должны быть доступны только для владельца.

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

Эти файлы не являются секретными, их содержимое нужно скопировать в файл

/.ssh/authorized_keys на компьютер с сервером SSH.

Утилита ssh-keygen

Мы применили ssh-keygen для генерации ключей. Кроме этого она предназначена для управления и конвертации ключей аутентификации для ssh.

Далее рассмотрены только некоторые функции этой программы, с полным перечнем опций можно ознакомиться командой:

Как поменять количество битов в ключах ssh-keygen

Для этого используется опция: -b БИТЫ

Она определяет количество бит в создаваемом ключе. Для ключей RSA минимальный размер составляет 1024 бита, а по умолчанию — 2048 бит. Как правило, 2048 бит считается достаточным. Ключи DSA должны иметь длину 1024 бита, как указано в FIPS 186-2. Для ключей ECDSA флаг -b определяет длину ключа, выбирая один из трёх размеров эллиптической кривой: 256, 384 или 521 бит. Попытка использовать битовые длины, отличные от этих трёх значений, для ключей ECDSA потерпит неудачу. Ключи Ed25519 имеют фиксированную длину, и флаг -b будет игнорироваться.

Добавление комментариев в ключи ssh-keygen

Для работы с комментариями имеется две опции:

-C комментарий

После этой опции укажите комментарий.

-c

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

Увидеть комментарий можно с помощью опции -l. Эта опция показывает отпечаток указанного файла публичного ключа. Для RSA и DSA ключей ssh-keygen пытается найти совпадающий файл публичного ключа и вывести его отпечаток. Если совместить с -v, то визуальное художественное представление ASCII будет показано после самого отпечатка:

Файл ключа можно указать явно опцией -f:

Изменение паролей в ssh-keygen

Для работы с паролями имеется несколько опций:

-P парольная фраза

Этой опцией можно передать пароль, чтобы программа его не спрашивала. При смене пароля, этой опцией передаётся старый пароль.

-p

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

-N новый_пароль

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

Файл ключей нужно указать опцией -f:

Показ публичного ключа из приватного

Опция -y прочитает файл OpenSSH формата с приватным ключом и напечатает в стандартный вывод публичный ключ OpenSSH.

Также с помощью опции -f нужно указать путь до приватного ключа, из которого будет извлечён соответствующий ему публичный ключ:

Например, приватный ключ помещён в файл id_rsa, тогда команда извлечения из него публичного ключа следующая:

Вы можете столкнуться с ошибкой:

Управление приватными ключами на клиенте SSH

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

В конфигурационном файле клиента SSH для указания пути до приватных ключей используется директива IdentityFile. Её значения по умолчанию:

Как можно увидеть, разрешено использовать тильду для указания на домашнюю папку пользователя.

Можно иметь несколько директив IdentityFile в конфигурационных файлах; все эти идентификаторы будут опробованы по очереди. Множественные директивы IdentityFile добавят кандидатов в очередь для попыток (это поведение отличается от других конфигурационных директив).

Также можно настроить использование определённых идентификационных файлов для определённых хостов:

Для строки команды используется опция -i, после которой нужно указать путь до приватного ключа (файла идентификации). Значение по умолчанию такие же, как и у рассмотренной выше директивы. Опцию -i можно использовать несколько раз.

Управление публичными ключами на сервере SSH

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

По умолчанию проверяются файлы:

Поле с опциями является необязательным.

Тип ключа это “ecdsa-sha2-nistp256”, “ecdsa-sha2-nistp384”, “ecdsa-sha2-nistp521”, “ssh-ed25519”, “ssh-dss” или “ssh-rsa”.

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

Как конвертировать .ppk ключ в OpenSSH ключ

Ключ .ppk генерируется при экспорте ключей из PuTTY.

Пример файла .ppk:


Конвертация ключей из файла .ppk в формат OpenSSH в Linux

Для конвертации формата .ppk в формат OpenSSH можно использовать утилиту puttygen, которая включена в пакет Putty. Следовательно, нам нужно установить PuTTY

Linux: с вашим менеджером пакетов установите PuTTY (или более минимальный пакет PuTTY-tools):

Debian, Kali Linux, Linux Mint, Ubuntu и их производные:

Дистрибутивы на основе RPM:

Arch Linux, BlackArch и их производные:

OS X: Установите Homebrew, затем запустите

Поместите ваши ключи в какую-нибудь директорию, например, в домашнюю папку. Теперь конвертируем PPK ключи в SSH пару.

Для извлечения приватного ключа:

и для извлечения публичного ключа:

Переместите эти ключи в

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

Конвертация ключей из файла .ppk в формат OpenSSH в Windows

Откройте PuTTYgen, нажмите кнопку «Load» и выберите файл .ppk с ключами.


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

Теперь в меню перейдите в «Conversions» → «Export OpenSSH key» и сохраните приватный ключ.

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