Ключі SSH для Windows 10


112

Мені дуже важко завести і запустити свої SSH ключі після встановлення Windows 10. Нормальний метод - це створити його і запустити його в акаунт користувача під .ssh. Здається, ця папка не доступна в Windows 10.

Хтось ще натрапив на це? Мені потрібно мати 3 SSH клавіші для різних репостів, і це насправді мене стримує.


2
Чи в Windows 10 ховаються крапки папки?
Leland Barton

Ні, це те, що я думав спочатку, але це додало декілька з моменту встановлення.
Rudenate3

2
Перекладіть своє запитання на Super User . Тут це поза темою .
Мартін Прикрил

3
@MartinPrikryl Оскільки багато кодування в Linux, використання Github і т.д. включає ключі ssh та .ssh, я можу стверджувати, що це дуже важливо для Stackoverflow.
хазіз

2
Я згоден з Мартіном. Питання програмування - це питання щодо написання програми, а не будь-яке запитання, яке може задати програміст.
шматочки бекону

Відповіді:


130
  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
roberto tomás

10
мені чомусь довелося запускати ssh-keygenкоманду в оболонці git-bash замість cmd-shell.
Olian04

6
Для цього ви можете використовувати шевелюру Git Bash або git cmd, Ви не можете використовувати Windows cmd.
Pavan T

6
Станом на грудень 2018 року, він вийшов з коробки у програмі Win 10 для мене
Urs

1
@Suncatcher Так. Для входу в Github, DigitalOcean тощо вам потрібен відкритий ключ, який знаходиться в "id_rsa.pub" у тій же папці. Відкрийте його за допомогою текстового редактора, наприклад блокнота, і скопіюйте та вставте туди, куди потрібно додати ключ SSH.
Гусь

57

ОНОВЛЕННЯ 2019-04-07: Сьогодні я протестував нову версію Windows 10 (збірка 1809, "Оновлення жовтня 2018 року"), і не тільки відкритий SSH-клієнт вже не знаходиться в бета-версії, оскільки він уже встановлений. Отже, все, що вам потрібно зробити, - це створити ключ і налаштувати свого клієнта на використання відкритого SSH замість шпаклівки (pagent):

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

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

2018-06-04 УДПАТ:

У Windows 10, починаючи з версії 1709 (win + R і введіть, winverщоб знайти номер збірки), Microsoft випускає бета-версію клієнта та сервера OpenSSH. Щоб створити ключ, вам потрібно буде встановити сервер OpenSSH. Для цього виконайте наступні дії:

  1. відкрити меню "Пуск"
  2. Введіть "додаткову функцію"
  3. виберіть "Додати додаткову функцію"
  4. Натисніть "Додати функцію"
  5. Встановити "Відкрити клієнт SSH"
  6. Перезавантажте комп'ютер

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


ssh-keygenне встановлюється з вікнами. Ось як створити ключ ssh за допомогою Putty:

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

Для відкритих клавіш потрібно виконати ще кілька кроків:

  1. скопіюйте текст із текстового поля "Публічний ключ для вставки" та збережіть його як "id_rsa.pub"
  2. Щоб зберегти приватний ключ у форматі opensh, перейдіть до Конверсії-> Експорт ключа OpenSSH (якщо ви не визначили ключ, він попросить підтвердити, що ви не хочете ключ проходу) меню для перетворення ключа у формат OpenSSH
  3. Збережіть це як "id_rsa"

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

Пам'ятайте, що pagentдля роботи автентифікації потрібно працювати


6
ssh-keygen включений у Windows 10, не впевнений, у якій версії, в "Керувати додатковими функціями"
sebbu

1
@sebbu Дійсно, тепер у Windows 10 ви можете встановити бета-версію Open SSH-сервера в розділі "Керування додатковими функціями", і ви отримаєте ssh-keygen разом із ще кількома речами. Але він не встановлюється, і його знайти не зовсім просто. Я оновлю свою відповідь.
франки

1
Патент @KarlMorrison - це інструмент для здійснення ssh-аутентифікації. зазвичай він знаходиться в меню "Пуск".
франки

1
Вам не потрібно встановлювати Open SSH Server. Функція Open SSH Client включає ssh-keygen.
Онот

1
@Onots Я перевірив нову версію Windows 10 (оновлення жовтня 2018 року), і не тільки відкритий ssh-клієнт достатній, але він уже встановлений: D Я
оновлю

31

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

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

Подивіться у каталог сміття. Існує файл 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, не потребуючи редагування дозволів чи чогось іншого (хоча у File Explorer я вибрав "Показати приховані файли, папки та диски"): введіть тут опис зображення

Клавіші зберігаються у текстовому файлі з назвою known_hosts, який виглядає приблизно так: введіть тут опис зображення


5

Я виявив помітне виключення, що в Windows 10, використовуючи описаний маршрут, записував файли в папку лише в тому випадку, якщо імена файлів там, де не вказано в генераторі ssh-keygen.

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

  • Відкрийте командний рядок Windows
  • Тип ssh-keygen
  • Залиште ім’я файлу порожнім, просто натисніть клавішу return,
  • Встановіть свою парольну фразу
  • Створіть ваші ключові файли. Вони зараз існуватимуть. і зберігати вc:/Users/YourUserName/.ssh/

( за допомогою командного рядка адміністратора та Windows 10 Pro )


@Braineeee негативний. Це НЕ буде перезаписати ваші ключі, якщо в даний час ключі існують у пункті призначення, то у вікні командного рядка він запитає, чи бажаєте ви перезаписати ці ключі. Інші клавіші цієї ж папки не виконуються . Я знаю, як прочитавши ваш коментар, я зробив тестовий пробіг і виявив, що це так.
Мартін

Ви коли-небудь з'ясовували, чому?
Damainman

@Damainman, на жаль, я ще не мав можливості вивчити це більше, так що ні:-/
Мартін

1
Дякую @Martin, ти врятував мені день. Я вмію створювати файли з різними назвами. Ми повинні забезпечити роздільник шляху unix! Наступне працювало для мене. ssh-keygen -t ed25519 -C "Мій ключ Github" Введіть файл, у якому потрібно зберегти ключ (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.


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"

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.