Сгенерируйте новые ключи ssh в Windows 10/11

Мне очень трудно настроить и запустить свои ключи SSH после установки Windows 10. Обычный метод — создать его и добавить в учетную запись пользователя под .ssh. Но эта папка недоступна в Windows 10.

Мне нужно иметь 3 ключа SSH для разных репозиториев.


person Rudenate3    schedule 04.08.2015    source источник


Ответы (12)


  1. Откройте командную строку Windows (введите cmd в поле поиска и нажмите Enter).
  2. По умолчанию это будет ваша домашняя папка, поэтому вам не нужно cd в другую.
  3. Введите ssh-keygen (если не найдено, проверьте здесь< /а>)
  4. Оставьте первый параметр пустым (по умолчанию), введите пароль, если хотите, или оставьте его пустым
  5. Ваши ключи ssh должны храниться в выбранном каталоге, по умолчанию: /c/Users/YourUserName/.ssh/id_rsa.pub

p.s.: Если вы установили git с интеграцией bash (как я), откройте Git Bash вместо cmd на первом шаге

person Digital Fun Frenzy    schedule 23.08.2015
comment
это выглядит великолепно, за исключением того, что это не работает. нет команды ssh-keygen - person roberto tomás; 06.10.2016
comment
по какой-то причине мне пришлось запустить команду ssh-keygen в оболочке git-bash вместо cmd-shell. - person Olian04; 19.01.2017
comment
Для этого вы можете использовать Git Bash sheel или git cmd, вы не можете использовать Windows cmd. - person Pavan T; 08.05.2017
comment
Это решение не работало для меня в Powershell. Но как только я применил совет других в этих комментариях, чтобы вместо этого использовать оболочку git bash, это сработало отлично. - person J. Garth; 10.09.2017
comment
А как насчет закрытых ключей для подключения к другим хостам? Они тоже должны быть в этой папке? - person Suncatcher; 16.03.2018
comment
По состоянию на декабрь 2018 года у меня это работало из коробки в Win 10. - person Urs; 24.12.2018
comment
@Ловец солнца Да. Для входа в Github, DigitalOcean и т. д. вам нужен открытый ключ, который находится в id_rsa.pub в той же папке. Откройте его с помощью текстового редактора, такого как блокнот, и скопируйте и вставьте туда, где вам нужно добавить свой ключ SSH. - person Goose; 06.01.2019
comment
Если кто-то еще не знает, чтобы он работал в CMD, вам нужно установить OpenSSH, я думаю, что это сейчас стандарт. - person Nico Bleiler; 12.06.2019
comment
Последняя версия Windows от 11.12.2019 имеет команду ssh-keygen, поэтому работает отлично. - person Máxima Alekz; 12.12.2019
comment
У меня работало с командной оболочкой Windows 10. Мне нужно было запустить его от имени администратора, чтобы сгенерировать ключ. - person Viktor Be; 11.01.2020
comment
Самый простой способ скопировать в буфер обмена — запустить cat ~/.ssh/id_rsa.pub | clip - person Leo Caseiro; 31.01.2020
comment
Этот ответ является неполным и не указывает, как генерировать очень безопасные ключи. - person avia; 16.05.2021

ОБНОВЛЕНИЕ 07.04.2019: я протестировал сегодня новую версию Windows 10 (сборка 1809, «октябрьское обновление 2018»), и не только открытый SSH-клиент больше не находится в бета-версии, так как он уже установлен. Итак, все, что вам нужно сделать, это создать ключ и настроить ваш клиент на использование открытого SSH вместо шпатлевки (pagent):

  1. открыть командную строку (cmd)
  2. введите ssh-keygenи нажмите ввод
  3. нажмите ввод для всех настроек. теперь ваш ключ сохраняется в c:\Users\.ssh\id_rsa.pub
  4. Откройте клиент git и настройте его на использование открытого SSH.

Я тестировал Git Extensions и Source Tree, и он работал с моим личным репозиторием на GitHub. Если вы используете более раннюю версию Windows или предпочитаете графический клиент для SSH, пожалуйста, прочитайте ниже.

2018-06-04 ОБНОВЛЕНИЕ:

В Windows 10, начиная с версии 1709 (выиграйте + R и введите winver, чтобы найти номер сборки), Microsoft выпускает бета-версию клиента и сервера OpenSSH. Чтобы иметь возможность создать ключ, вам необходимо установить сервер OpenSSH. Для этого выполните следующие действия:

  1. открыть меню пуск
  2. Введите «дополнительная функция»
  3. выберите «Добавить дополнительную функцию»
  4. Нажмите «Добавить функцию»
  5. Установите «Открыть SSH-клиент»
  6. Перезагрузите компьютер

Теперь вы можете открыть приглашение и ssh-keygen, и клиент будет распознан Windows. Я не проверял это. Если у вас нет Windows 10 или вы не хотите использовать бета-версию, следуйте приведенным ниже инструкциям по использованию шпатлевки.


ssh-keygen не устанавливается вместе с Windows. Вот как создать ssh-ключ с помощью Putty:

  1. Установите замазку.
  2. Открыть PuttyGen
  3. Проверьте тип ключа и количество используемых байтовПараметры PuttyGen
  4. Наведите указатель мыши на индикатор выполнения генерация ключа с помощью мыши
  5. Теперь вы можете определить парольную фразу и сохранить открытый и закрытый ключи диалог создания ключа

Для ключей openssh требуется еще несколько шагов:

  1. скопируйте текст из текстового поля «Открытый ключ для вставки» и сохраните его как «id_rsa.pub»
  2. Чтобы сохранить закрытый ключ в формате openssh, перейдите в раздел Преобразования->Экспорт ключа OpenSSH (если вы не определили пароль, вам будет предложено подтвердить, что вам не нужен ключ доступа) меню преобразования ключа в формат OpenSSH
  3. Сохраните его как "id_rsa"

Теперь, когда ключи сохранены. Запустите pagent и добавьте туда закрытый ключ (файл ppk в формате Putty) диалог ключей страницы

Помните, что для работы аутентификации должен быть запущен pagent.

person franksands    schedule 26.05.2017
comment
ssh-keygen включен в Windows 10, не знаю, какая версия, в разделе «Управление дополнительными функциями». - person sebbu; 25.05.2018
comment
@sebbu Действительно, теперь в Windows 10 вы можете установить бета-версию Open SSH Server в разделе «Управление дополнительными функциями», и это даст вам ssh-keygen вместе с несколькими другими вещами. Но он не устанавливается, и его не так-то просто найти. Я обновлю свой ответ. - person franksands; 05.06.2018
comment
Страница @KarlMorrison — это графический интерфейс для аутентификации ssh. обычно он находится в меню «Пуск». - person franksands; 05.06.2018
comment
Вам не нужно устанавливать Open SSH Server. Функция Open SSH Client включает ssh-keygen. - person Onots; 11.11.2018
comment
@Onots Я тестировал новую версию Windows 10 (октябрьское обновление 2018 г.), и достаточно не только открытого ssh-клиента, но и того, что он уже установлен: D Я обновлю свой ответ - person franksands; 07.04.2019
comment
краска :) я ностальгирую - person Obay Abd-Algader; 11.06.2020
comment
Этот ответ является неполным и не указывает, как генерировать очень безопасные ключи. - person avia; 16.05.2021
comment
@avia Какая часть ответа неполная? Что подразумевается под не очень безопасными ключами? - person franksands; 17.05.2021
comment
@franksands Спасибо за ответ. Я имею в виду, что более безопасные ключи могут быть сгенерированы с использованием необязательных атрибутов. Вы можете прочитать справочную страницу ssh-keygen, чтобы узнать больше. - person avia; 23.05.2021
comment
голосуйте за обновление. Не могли бы вы уточнить, как выполнить шаг 4. Откройте свой клиент git и настройте его на использование открытого SSH? Что такое git-клиент? я просто хочу увидеть свой открытый ключ. - person K Y; 01.06.2021
comment
@K Y это зависит от клиента, который вы используете. В то время я тестировал Git Extensions и исходное дерево. В настоящее время у меня больше нет этой настройки, но я попытаюсь настроить ее и снова протестировать. - person franksands; 03.06.2021

WINDOWS: Если у вас установлен git for windows, перейдите в его папку.

введите описание изображения здесь

Посмотрите в каталоге bin. Есть файл sh.exe. Запустите это.

введите описание изображения здесь

Затем введите:

ssh-keygen -t rsa -C "ваша электронная почта здесь"

Следуйте инструкциям, а затем введите:

кошка ~/.ssh/id_rsa.pub | клип

Он копирует ключ в буфер обмена. Теперь вы можете вставить этот открытый ключ на сервер.

person Daniel    schedule 30.09.2017
comment
Этот ответ является неполным и не указывает, как генерировать очень безопасные ключи. - person avia; 16.05.2021

  1. Откройте командную строку Windows (введите «cmd» в поле поиска и нажмите Enter).
  2. По умолчанию это будет ваша домашняя папка, поэтому вам не нужно cd в другую.
  3. Введите mkdir .ssh
person aruanoc    schedule 25.08.2015
comment
Этот ответ является неполным и не указывает, как генерировать очень безопасные ключи. - person avia; 16.05.2021

Я использую Microsoft Windows 10 Pro, версия 10.0.17763, сборка 17763, и я легко вижу свою папку .ssh в C:\Users\jrosario\.ssh без необходимости редактировать разрешения или что-то еще (хотя в проводнике я выбрал «Показать скрытые файлы, папки и диски»): введите здесь описание изображения

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

person ShieldOfSalvation    schedule 09.04.2019

Предупреждение. Если вы сохраняете свои ключи в папке C:/User/username/.ssh (место по умолчанию), обязательно сделайте резервную копию своих ключей где-нибудь (например, ваш пароль менеджер).

После последнего обновления Windows 10 (версия 1607) моя папка .ssh была пустой. Вот где всегда были мои ключи, но винда решила их удалить при обновлении.

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

person Andrew    schedule 24.01.2017
comment
Итак, где большинство приложений ожидают, что вы будете хранить свои ключи? - person wcochran; 19.05.2017
comment
наверное в папке, которую виндовс случайно удаляет при обновлении виндовс 10? - person Andrew; 19.05.2017

Я обнаружил заметное исключение: в Windows 10 при использовании описанного маршрута файлы записывались в папку только в том случае, если имена файлов не указаны в генераторе ssh-keygen.

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

  • Откройте командную строку Windows
  • Тип 1_
  • Оставьте имя файла пустым, просто нажмите клавишу возврата,
  • Установите парольную фразу
  • Сгенерируйте файлы ключей. Теперь они будут существовать. и храниться в c:/Users/YourUserName/.ssh/

(используя командную строку администратора и Windows 10 Pro)

person Martin    schedule 29.09.2016
comment
@Braineeee отрицательно. Это НЕ перезапишет ваши ключи, если ключи в настоящее время существуют в месте назначения, то в окне командной строки вас спросят, хотите ли вы перезаписать эти ключи. Другие ключи в той же папке не действуют. Я знаю, что после прочтения вашего комментария я сделал пробный запуск и обнаружил, что это так. - person Martin; 18.04.2017
comment
Вы когда-нибудь выясняли, почему? - person Damainman; 19.10.2017
comment
@Damainman, к сожалению, у меня еще не было возможности изучить это подробнее, так что нет :-/ - person Martin; 30.10.2017
comment
Спасибо, @Martin, ты спас мой день. Я могу создавать файлы с разными именами. Мы должны указать разделитель пути в формате unix! Следующее сработало для меня. ssh-keygen -t ed25519 -C Мой ключ Github Введите файл для сохранения ключа (C:\Users\bilix/.ssh/id_ed25519): c:\users\bilix\.ssh\id_ed25519_github - person Prakash P; 15.05.2019
comment
@PrakashP рад помочь! - person Martin; 15.05.2019

Создайте закрытый/открытый ключ:

  1. Откройте терминал (git bash, PowerShell, cmd.exe и т. д.)
  2. Введите ssh-keygen
  3. Нажмите Enter для сохранения файла по умолчанию (~/.ssh/id_rsa)
  4. Нажмите Enter, чтобы ввести кодовую фразу по умолчанию (без парольной фразы)
  5. Нажмите Enter еще раз
  6. Посмотрите на вывод и убедитесь, что RSA равно 3072 или выше.

Вы создали пару закрытый/открытый ключ.

Для GIT ключ должен иметь силу 2048, должен находиться в каталоге пользователей .ssh и называться id_rsa и id_rsa.pub. При вставке ключей в любом месте обязательно используйте программу, которая не добавляет новые строки, например VIM.

person basickarl    schedule 24.05.2018

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

Имея эту проблему, я написал небольшую функцию PowerShell для решения этой проблемы, которую вы добавляете в свой профиль.

function ssh-copy-id([string]$userAtMachine, [string]$port = 22) {   
    # Get the generated public key
    $key = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    # Verify that it exists
    if (!(Test-Path "$key")) {
        # Alert user
        Write-Error "ERROR: '$key' does not exist!"            
    }
    else {  
        # Copy the public key across
        & cat "$key" | ssh $userAtMachine -p $port "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

Вы можете получить суть здесь

У меня есть краткое описание этого здесь

person Rad    schedule 11.03.2020
comment
Спасибо, это именно то, что я искал! - person Alexander Volok; 08.10.2020

Также вы можете попробовать (для Windows 10 Pro) запустить Powershell от имени администратора и ввести ssh-keygen -t rsa -b 4096 -C "[email protected]"

Кроме того, вы можете попробовать запустить ssh-keygen из терминала Git Bash.

person chavy    schedule 20.03.2020

Я, наконец, заставил его работать, запустив командную строку открытия с помощью «Запустить администратора», хотя я уже был администратором и мог создать каталог вручную.

person adelaidedave    schedule 25.09.2017
comment
-t rsa -b 4096 -t rsa -b 4096 - person avia; 16.05.2021

Все эти ответы генерируют ключи по умолчанию, которые недостаточно безопасны. Этот ответ предлагает ОДИН (1 из МНОГИХ) способов создания БЕЗОПАСНЫХ ключей. Я бы предпочел использовать свой ответ вместо других ответов на этой странице... безусловно...

ssh-keygen -t rsa -b 4096

person avia    schedule 15.05.2021