SSH-ключи Windows 10

112

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

Кто-нибудь еще сталкивался с этим? Мне нужно иметь 3 ключа SSH для разных репозиториев, и это меня очень сдерживает.

Руденат3
источник
2
Windows 10 скрывает папки с точками?
Леланд Бартон
Нет, это то, о чем я думал сначала, но после установки было добавлено несколько.
Rudenate3 04
2
Пожалуйста, переместите свой вопрос к суперпользователю . Здесь это не по теме .
Мартин Прикрыл 05
3
@MartinPrikryl Поскольку много кода в Linux, использование Github и т. Д. Связано с ключами ssh и .ssh, я бы сказал, что это очень актуально для Stackoverflow.
haziz 07
2
Я согласен с Мартином. Вопрос программирования - это вопрос о написании программы, а не вопрос, который может задать программист.
Bacon Bits

Ответы:

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

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

Цифровое безумие
источник
36
это выглядит отлично, но не работает. нет командыssh-keygen
Роберто Томас 05
10
по какой-то причине мне пришлось запустить ssh-keygenкоманду в оболочке git-bash вместо cmd-shell.
Olian04
6
Для этого вы можете использовать Git Bash sheel или git cmd, вы не можете использовать Windows cmd.
Паван Т
6
По состоянию на декабрь 2018 года в Win 10 у меня все работало из коробки
Урс
1
@Suncatcher Да. Для входа в Github, DigitalOcean и т. Д. Вам понадобится открытый ключ, который находится в «id_rsa.pub» в той же папке. Откройте его с помощью текстового редактора, такого как блокнот, и скопируйте и вставьте туда, где вам нужно добавить свой SSH-ключ.
Goose
57

2019-04-07 ОБНОВЛЕНИЕ: Сегодня я тестировал новую версию 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 UDPATE:

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

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

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


ssh-keygenне устанавливается с окнами. Вот как создать ключ 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

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

Франк
источник
6
ssh-keygen включен в Windows 10, не знаю, какая версия, в «Управлении дополнительными функциями»
sebbu
1
@sebbu Действительно, теперь в Windows 10 вы можете установить бета-версию Open SSH Server в разделе «Управление дополнительными функциями», и это даст вам ssh-keygen вместе с некоторыми другими вещами. Но он не установлен, и его не так просто найти. Я обновлю свой ответ.
franksands
1
@KarlMorrison pagent - это графический интерфейс для выполнения аутентификации ssh. обычно находится в меню «Пуск».
franksands
1
Вам не нужно устанавливать Open SSH Server. Функция Open SSH Client включает ssh-keygen.
Оноц
1
@Onots Я тестировал новую версию Windows 10 (октябрьское обновление 2018), и не только открытого ssh-клиента достаточно, но он уже установлен: D Я
обновлю
31

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

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

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

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

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

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

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

кот ~ / .ssh / id_rsa.pub | зажим

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

Даниэль
источник
13
  1. Откройте командную строку Windows (введите «cmd» в поле поиска и нажмите Enter).
  2. По умолчанию это будет ваша домашняя папка, поэтому вам не нужно cdиспользовать другую.
  3. Тип mkdir .ssh
аруанок
источник
9

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

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

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

Андрей
источник
Так где же большинство приложений ожидают от вас хранения ключей?
wcochran
3
наверное в папке, которую windows случайно удаляет при обновлении windows 10?
Эндрю
8

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

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

Щит Спасения
источник
5

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

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

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

( С помощью администратора командной строки и Windows 10 Pro )

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

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

  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.

K - Токсичность в SO растет.
источник
2

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

аделаидав
источник
1

Если у вас 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"      
    }
}

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

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

Рад
источник
0

Кроме того, вы можете попробовать (для Windows 10 Pro) запустить Powershell от имени администратора и ввести ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

чави
источник