Как узнать ssh key mac os

Обновлено: 05.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.

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

Я начинаю понимать, как работают RSA и системы с открытым / закрытым ключом, и мне стало интересно, где хранится мой частный и открытый ключ SSH. Когда я захожу в свой домашний каталог и просматриваю свой каталог .ssh (cd .ssh), я вижу только файл "known_hosts", который, как мне кажется, содержит открытые ключи различных известных мне удаленных SSH-серверов.

Где я могу найти эти ключи? Я даже не помню, как их создавал, но поскольку я уже устанавливал ssh-соединения, они должны быть где-то.

Я использую OpenSSH_5.2p1 с MAC OS 10.6.

3 ответа 3

/id_rsa.pub обычно. Но из этого не следует, что ssh должен создавать пару и сохранять их: ssh в основном использует протокол SSL, который устанавливает ключ сеанса, используя алгоритм обмена ключами Диффи / Хеллмана или какой-либо другой вариант. Это означает, что рукопожатие, устанавливающее соединение, генерирует ключ сеанса и отбрасывает его, когда сеанс завершен.

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

Ваши личные и личные ключи ssh обычно хранятся в:

Или это могут быть id_rsa и id_rsa.pub если вы создали ключи RSA, а не ключи DSA (OpenSSH поддерживает обе формы).

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

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

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

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

Теперь помните, что SSH поддерживает несколько методов аутентификации: в дополнение к publickey , почти все серверы принимают простой password и / или keyboard-interactive , при котором не происходит генерация или использование ключа - пароль просто отправляется на удаленный сервер для проверки.

Другими словами, «поскольку я уже установил ssh-соединения раньше, они должны быть где-то» неверно - пара ключей пользователя не нужна для установления соединений.

Использование 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. Теперь вы можете входить в систему без пароля учетной записи.


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

-C - комментарий. Ъ администраторы, указывают не только контактный email, но и идентификатор хоста, с которого будет использоваться ключ (например MacBook office).

Пр желании можно дать ключу другое имя (ключ -f ), например id_rsa_server_vps13.

Следующий пункт passphrase. Это парольная фраза или проще говоря пароль для ключа.

Минусы. Его нужно будет вводить каждый раз, когда используется ключ.
Очевидный плюс. Если файл окажется в чужих руках без парольной фразы использовать его не получится. Ну и не стоит использовать пароли admin111 или qwerty123.

Шаг 2. Скопировать открытый ключ на удаленный хост

Как всегда в unix есть множество вариантов для этого.

Долгий путь

В macOS можно скопировать содержимое файла в буфер обмена с помощью pbcopy

Подключаемся к удаленному серверу, переходим в директорию .ssh и открываем (или создаем) файл authorized_keys.

Добавляем ключ из буфера обмена.

Кстати каждый ключ должен быть на отдельной строке. И никаких пустых строк между ключами.

ssh-copy-id

Начиная с Sierra утилита уже есть в составе системы и не нужно ставить с github или через homebrew.

или с указанием имени ключа

cat + ssh

Шаг 3. Локальный конфиг SSH и тест подключение

Добавим локальный файл конфигурации для SSH клиента в файл

Особый интерес представляют опции UseKeychain и AddKeysToAgent.

Пароль приватного ключа можно хранить в "Связке ключей" (Apple KeyChain). Один раз добавили и всё - больше никогда не надо вводить никаких паролей для подключения по ssh.

В каком-то релизе (Sierra? у меня не Linux, чтобы отслеживать это) всё сломали и Terminal теперь по-умолчанию не использует keychain.

Опция AddKeysToAgent вышла в OpenSSH 7.2 еще в 2016 году, но я узнал про нее только сейчас.

Что еще важного в ссылках выше?

Добавить private key вручную в keychain ssh-add -K

Буду рад если кто-то более подробно разобрался в данном вопросе и дополнит заметку.

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

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

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

Linux, MacOS, Windows 10

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

Эта инструкция подойдет для ОС Linux, MacOS, а также для версий Windows 10 начиная с 1809 — в них доступен встроенный SSH-клиент. Если у вас более ранняя версия Windows, воспользуйтесь инструкцией из пункта Старые версии Windows (без OpenSSH).

Запустите терминал или Windows PowerShell на вашем компьютере и выполните команду:

Нажмите Enter - ключ будет сохранен в указанную директорию по умолчанию.

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

Процедура создания ключей завершена, ключи сохранены в директории

/.ssh/ в файлах id_rsa и id_rsa.pub. Теперь их необходимо скопировать на сервер.

Копирование ключей на сервер

Выполните в терминале следующую команду, указав вместо user имя пользователя, созданного на сервере, а вместо server - IP-адрес вашего сервера:

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

/.ssh/authorized_keys на сервере, и в дальнейшем вы сможете устанавливать соединение с сервером, используя команду:

Старые версии Windows (без OpenSSH)

Если вы используете версию Windows без OpenSSH, вам потребуется специальная программа - PuTTYgen. Вы можете скачать дистрибутив puttygen.exe с официального сайта PuTTY.

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

  1. Запустите программу, в открывшемся окне выберите "Type of key - SSH-2 RSA и нажмите "Generate".
  2. Пока создается ключ, водите мышью в хаотичном порядке в пространстве под строкой загрузки для генерации случайных значений.
  3. После того, как ключ будет создан, в окне программы вы сможете задать "Key passphrase" (кодовую фразу) для ключа. Это необязательно, вы можете оставить строку пустой. Если вы решите задать кодовую фразу, обратите внимание, что ее потребуется вводить при каждой авторизации по ключу.
  4. Далее сохраните созданные ключи, нажав на кнопки "Save public key" и "Save private key", например, под именами id_rsa.pub и mykey.ppk. Также скопируйте и сохраните в любом текстовом файле содержимое окна "Public key for pasting…" - оно потребуется при копировании созданного ключа на сервер.

На этом процедура создания ключей завершена.

Копирование ключей на сервер

В процессе копирования ключей вам потребуется утилита pageant. Вы можете скачать дистрибутив pageant.exe с официального сайта PuTTY.

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

Откройте созданный файл с помощью текстового редактора:

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

Отключение доступа по паролю

Для того, чтобы доступ к серверу мог осуществляться только по ключу, необходимо запретить авторизацию по паролю. Для этого требуется внести правки в файл /etc/ssh/sshd_config.

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