Як мені сказати Git для Windows, де знайти свій приватний ключ RSA?


487

Моя настройка Git працює нормально в Linux, але коли я намагаюся налаштувати речі під Windows (використовуючи Git для Windows та TortoiseGit ), я не знаю, куди поставити свій приватний ключ SSH (або, ще краще, як сказати, sshде це розташований). Я використовую стандартний параметр ssh.exe під час інсталяції Git для Windows. Установка працює нормально, якщо я дозволяю автентифікацію пароля (замість RSA) на сервері.


У мене така ж проблема: я можу потрапити у вікно свого розробника, використовуючи відкритий ключ як "root", використовуючи програму "Git Bash", встановлену з "Git для Windows", але я не можу увійти як "git" зі своїм ключ, навіть якщо я скопіював свій файл "авторизовані_ ключі" з мого "root" на мого користувача "git" і правильно встановив власників та дозволи. Чому я не можу ввійти як "git", коли "root" працює з таким самим файлом "санкціонованих_ ключів". Замість "git" він передає всі приватні ключі, які точно такі, що працюють з "root" і запитують пароль. Це, до речі, сервер Centos 5.5.

@fuzzy lollipop: Чи маєте ви правильні дозволи на файл дозволеного_кейса вашого користувача git? Він повинен бути chmod 600 і повинен належати користувачеві git. Якщо він належить кореневому користувачеві, він не буде працювати
Dan McClain

так, усі файли та каталоги є правильними власниками та дозволами

Відповіді:


486

Для Git Bash

Якщо ви працюєте з msysgit (я припускаю, що ви є) і хочете запустити Git Bash (я рекомендую його через TortoiseGit, але я схиляюся до CLI більше, ніж GUI зараз), вам потрібно розібратися, що ваш домашній каталог для Git Bash, запустивши його, потім введіть pwd(У Windows 7 це буде щось подібне, як C:\Users\phsrя думаю). Поки ти в Git Bash, ти повинен mkdir .ssh.

Після того, як у вас є домашня директорія та .sshпапка під цим, ви хочете відкрити PuTTYgen та відкрити створений раніше ключ (.ppk-файл). Щойно ваш ключ відкритий, його потрібно вибрати Conversions -> Export OpenSSH keyта зберегти HOME\.ssh\id_rsa. Після того, як у вас буде ключ у цьому місці, Git Bash розпізнає ключ та використовуватиме його.

Примітка: коментарі вказують, що це працює не у всіх випадках. Можливо, вам доведеться скопіювати ключ OpenSSH в Program Files\Git\.ssh\id_rsa(або Program Files (x86)\Git\.ssh\id_rsa).

Для TortoiseGit

Під час використання TortoiseGit потрібно встановити ключ SSH через вказівки pacey . Це потрібно зробити для кожного сховища, з яким ви використовуєте TortoiseGit.


4
Інструкції pacey для tortoisegit не працюватимуть, поки у вас не буде сховища (оскільки "віддалений" конфігураційний параметр не з'являється, якщо ви не дієте на репо), і ви, ймовірно, не можете отримати сховище в першу чергу, якщо зможете " t аутентифікувати себе, щоб клонуватись із походження. Хитрий!
Кілотан

43
За допомогою GitBash я виявив, що мені довелося скопіювати свій ~/.ssh/id_rsaфайл Program Files\Git\.ssh\id_rsa- що було трохи заплутано, але тепер IntelliJ та Windows cmd можуть надсилати на сховища git, які використовують автентифікацію ключів.
JP.

7
Так само. Я щойно встановив git-for-windows, запускаю його з cmd.exe. Мені потрібно було помістити файли id_rsaі id_rsa.pubв c:\program files (x86)\Git\.ssh. .sshРеж вже був присутній. Дякую, JP.
Cheeso

5
Другий абзац був золотим. :)
Bjørn

4
@Damon: Це повинно бути id_rsaбез розширення. Це ім'я файлу, це не каталог
Dan McClain

107

Використовуючи вбудований клієнт SSH, що постачається разом з Git для Windows, потрібно встановити змінну середовища HOME, щоб клієнт Git SSH міг знайти ключ.

Наприклад, при установці Windows Vista це можна зробити, видавши setx HOME c:\Users\admin\в командному рядку.

Це зробило мій день і вирішило проблему з Git за умови, що ваш приватний ключ не захищений паролем. Якщо ви хочете використовувати ssh-агент, ви, ймовірно, можете запустити ssh-агент cmd.exe (хоча я цього ніколи не робив) та ssh-add, як зазвичай.

Зауважте, що всі інструменти Git / SSH повинні бути запущені з cmd.exe, щоб не моргати вікно.

Якщо це не працює належним чином, використання plink може бути досягнуто, налаштувавши GIT_SSH . Зверніться до всіх навчальних посібників SVN + ssh; це в основному та сама сантехніка, яку вам потрібно встановити.


16
Це те, що я шукав, оскільки я намагаюся використовувати командний рядок Windows, а не git bash.
Джон Руїз

Гарне, просте виправлення, але без цього було б важко зрозуміти!
thaddeusmt

Важливо також, щоб не було пробілів між HOME = і c: \ ... Рішення Oct зробило для мене хитрість. :-)
Луц

2
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use Cmd` замість цього.
трейдер

2
+1GIT_SSH=c:\pathto\plink.exe
Нік Грілі

54

Ви можете вказати ключове місце для TortoiseGit наступним чином:

  • Відкрийте вікно провідника.
  • Відкрийте контекстне меню та перейдіть до TortoiseGitНалаштування
  • У відкритому вікні перейдіть до GitRemote
  • Встановіть шлях до вашої кнопки PuTTY у відповідному полі введення.

Знімок екрана нижче:

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


8
Крім того, якщо вам потрібно перетворити приватний ключ у формат '.ppk' з іншого формату, ви можете дотримуватися ЦЕ
Tariq M Nasim

Це працювало для мене.
Максим Єлісєєв

6
Git> Remote з'являється лише після того, як ви успішно клонували сховище.
Стів Пітчерс

5
Набагато простіше рішення - налаштувати все на належну роботу в git (використовуючи openSSH), а потім сказати TortoiseGit використовувати ssh.exe, що використовується git. Дивіться stackoverflow.com/a/33328628/318317 Таким чином, це потрібно виправити лише один раз.
Даніель Роуз

50

Жодна з попередніх відповідей не працювала для мене. Ось що для мене спрацювало врешті-решт. Це насправді досить просто, якщо ви знаєте, що набрати. Це не потрібно PuTTY.

  • Відкрийте підказку Git Bash
  • Введіть 'ssh-keygen'
    • Прийміть місце за замовчуванням
    • Виберіть порожню парольну фразу (тому просто натисніть "ввести" на всі питання ")
  • Тепер скопіюйте відкритий ключ на свій сервер, наприклад: scp ~ / .ssh / id_rsa.pub someuser@someserver.com: ~

Це трохи на власному комп’ютері зроблено. Тепер sshна сервері призначення, потім зробіть

mkdir -p ~/.ssh
cd ~/.ssh
cat ../id_rsa.pub >> authorized_keys
rm ../id_rsa.pub

Це воно! Ви закінчили! З Git Bash зробіть наступне, щоб перевірити:

ssh someuser@someserver.com ls

Якщо він перелічить файли у вашому домашньому каталозі на сервері Git, і тоді ви закінчили!

Для GitHub у вас немає доступу до оболонки на їхній сервер, але ви можете завантажити ключ за допомогою їх веб-сайту, тому для біта "зараз скопіюйте на ваш сервер" виконайте:

  • У Git Bash введіть 'cat ~ / .ssh / id_rsa.pub', виберіть результат та скопіюйте його у буфер обміну.
  • На веб-сайті GitHub перейдіть до розділу «Налаштування облікового запису», «Ключі SSH та GPG», натисніть «Новий ключ SSH» та вставте ключ.

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

14
Ви відповідаєте на неправильне запитання. Питання - як вказати на існуючий приватний ключ.
Орангутех

7
@GregB, я дивлюся на це так: будь-який сервер, для якого я створюю ключ, не захищений паролем, настільки ж безпечний, як мій ноутбук, це розширення периметра безпеки мого ноутбука. Насправді, навіть не, оскільки мій домашній каталог зашифрований ;-) Отже, він настільки ж безпечний, як зашифрований домашній розділ на моєму ноутбуці, що, на мою думку, є «досить хорошим» для забезпечення доступу до github. (що може залежати від вашої думки, звичайно!)
Х'ю Перкінс

3
@GregB Не впадай у параної! :] Впевнений, що використання захищених паролем ключів набагато безпечніше, ніж використання паролів, але стверджувати, що ключ, який не захищений паролем, так само легко зламати, як зберігання паролів у текстовому файлі - явна помилка. Я бачив багато посібників, які спонукають користувачів використовувати захищені паролем ключі, але я ніколи не бачив жодного твердження, що використання їх без паролів взагалі не захищено. Плюс: деякі системи не підтримують рішення щодо запам'ятовування пароля ключа, введеного користувачами, і запитують його, кожен раз, коли використовується ключ. Що робить використання ключів SSH безглуздим у цій ситуації.
trejder

4
Заради розмови, яка відступила від початкового запитання, ключі SSH, безумовно, більш криптографічно захищені, ніж паролі, але ця безпека піддається ризику, не шифруючи ваші SSH ключі. Мій особистий підхід - розблокувати свої ключі на початку дня за допомогою агента SSH, який потім зберігає розшифровані ключі в пам'яті, щоб мені не потрібно було вводити пароль протягом дня. Як коментує @Hugh Perkins, і я перефразую, ви всі знаєте свої вимоги безпеки краще, ніж я / ми :).
GregB

38

Якщо ви використовуєте msysgit з інструментами OpenSSH, вам потрібно створити ~/.ssh/id_rsaабо створити конфігурацію Git, в ~/.ssh/configякій вказується ваш ключ.

Ось приклад конфігурації Git для Bitbucket, який використовуватиме правильне ім’я користувача та ключ, відмінний від типового ключа (якщо ви підтримуєте один ключ для з'єднань SSH, а інший для облікових записів Git).

~ / .ssh / config :

Host bitbucket.org
    Hostname bitbucket.org
    User git
    IdentityFile /C/keys/yourkey.key

Отримавши Git Bash, ви можете запустити дві команди, щоб додати свій ключ до ssh-агента поточного сеансу, щоб уникнути необхідності повторного введення пароля ключа.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key

1
Я зробив це, але для github.com: Хост github.com IdentityFile ~ / .ssh / github_rsa
Сара

1
Якщо у вас є пробіл на шляху, ви повинні використовувати лапки: IdentityFile "/ C / Мої ключі / ключ"
r03,

Я вважаю за краще цей спосіб, тому що це дозволило мені швидко підключити існуючі ключі від іншого ПК
Кирило Гусятин

Мій .gitconfig має розділи. Під якими розділами слід поставити ці хости?
Стів Яковенко

16

Я просто встановив% HOME% =% HOMEPATH%

Це має перевагу роботи для всіх користувачів, які ввійшли в систему (кожен отримує окремі .ssh папки).

У Vista:

  1. Клацніть правою кнопкою миші на комп'ютері
  2. Виберіть "Властивості"
  3. Клацніть на Розширені налаштування системи
  4. Клацніть на Змінні середовища
  5. У нижньому розділі (Змінні системи) натисніть кнопку Створити
  6. Для типу імені змінної: HOME
  7. Для типу змінного шляху:% HOMEPATH%
  8. Натисніть кнопку ОК

6
У моєму випадку я додав HOME =% USERPROFILE%
igor

1
Зверніть увагу, що %HOMEPATH%він не містить літери накопичувача, тому якщо ваш джерело не ввімкнено, C:вам потрібно зробити попереднє C:завдання %HOME%.
Graeme Perrow

set %HOME%=%HOMEPATH%працював на мене! Дякую!!
тенг

7

Ваш приватний ключ потрібно додати до агента SSH на робочій станції. Як ви цього досягнете, може залежати від того, який клієнт git ви використовуєте, однак puTTY та його асоційований агент (виступ) можуть зробити для вас трюк, ось посилання на офіційні бінарні файли та джерело:

http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html


Вище я заявив, що використовую Git для Windows і використовую ssh.exe (упакований w / git) замість шпаклівки. Повинна бути якась стандартна практика додавання приватного ключа, я просто не можу зрозуміти, як це зробити. Хоча перемикання програмного забезпечення може дійсно дозволяти мені увійти, повинен бути спосіб це зробити за допомогою стандартної установки Git, ні?
бінаорганічний

Вибачте, я не працюю на Windows, тільки Linux. Але ключ повинен бути у вашому агенті SSH. чи є агент.exe чи щось подібне?
Declan Shanaghy

1
Так, налаштування було тортом на стороні Linux. Але я, на жаль, маю це працювати на Windows, на жаль. У папці git / bin у вікні Windows є кілька виконуваних файлів, що стосуються ssh (ssh, ssh-add, ssh-agent, ssh-keygen & ssh-keyscan), але я не знаю, як зробити будь-який з них зробити що-небудь. Вони просто блимають вікно cmd, яке відкривається та закривається одразу. Я тупаю.
бінаорганічний

8
Pageant справді вирішує проблему для мене - у мене є ярлик в папці Startup (" C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup)" в меню "Пуск", що вказує на те "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", що він завантажує мої SSH-ключі при запуску, і це змушує GIT "просто працювати": o)
Owen Blacker

@OwenBlacker OMFG! Ви обов'язково повинні написати цей коментар як повнорозмірну відповідь ! Це єдине рішення , яке насправді допомогло мені і вирішило мою проблему! Шкода, що я можу тобі дати лише +1! :]
трейдер

6

У моєму випадку я використовував Git для Windows у контейнері Docker windowsservercore.

Мій Git був встановлений Chocolatey до C:\Program Files\Git.

Мені довелося оновити файл C:\Program Files\Git\etc\ssh\ssh_configіз цим:

Host example.com
   Identityfile ~/.ssh/id_rsa

Тоді я міг використовувати ключ від C:\Users\<user>\.ssh\id_rsa

Якщо ви використовуєте Git для Windows разом із OpenSSH для Windows. Git все ще використовує своє ssh.

Крім того, якщо ви плануєте використовувати ssh-keyscan host.com > known_hostsвід OpenSSH, будьте обережні , тому що вихід трубопроводу з stdoutз keyscan(на Windows) змінює кодування UCS-2, але OpenSSH може читати тільки UTF-8! Тому переконайтеся, що змінили known_hostsкодування файлу.


Це допомогло, але для всіх, хто використовує ключ id_dsa, вам також потрібно буде додати "PubkeyAcceptedKeyTypes ssh-dss" під своїм хостом.
Майкл Руссо

4

Добре, я переглянув пропозицію ..

Але розміщувати свої приватні ключі SSH у загальнодоступній папці, я не вважав, що це гарна ідея, тому я почав шукати, де знаний хост.

Тож, якщо ви хочете правильно захистити свій ключ SSH, вам потрібно ввести його в наступний каталог:

Для Windows 7, 8 та 8.1 32-розрядні:

C: \ Користувачі \\ AppData \ Місцеві \ VirtualStore \ Програмні файли \ Git \

64-розрядні для Windows 7, 8 та 8.1:

C: \ Користувачі \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \


Це було найпростішим рішенням на моїй машині Win7. Як і ви, я шукав known_hosts. Звичайно, це було в C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Помістивши мій файл ключа (id_rsa) у цей каталог, ssh змогло його знайти без скарги. Я трохи почитав - ось як Windows обробляє (застаріле) програмне забезпечення, намагаючись записати в заборонені області (наприклад, "C: \ Program Files \"), тож Git's ssh абсолютно не знає, що пише в каталог VirtualStore, Windows поводиться з цим прозоро. Принаймні ці файли належать користувачеві!
DaveGauer

4

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

  1. Завантажити pageant.exe, puttygen.exe, putty.exeі plink.exeз веб - сайту PuTTY в. Помістіть їх у C:\puttyToolsкаталог.
  2. Біжи puttygen.exe.
  3. Натисніть кнопку Generate.
  4. Помахуйте мишкою у верхній частині вікна до повного заповнення панелі прогресу, як програма просить вас зробити.
  5. Надайте парольну фразу та повторіть її в наступному текстовому полі.
  6. Натисніть "Зберегти приватний ключ". Звичайний каталог для їх збереження - це %USERPROFILE%\_ssh(на моєму комп’ютері це карта C:\Users\andres\.ssh\). Не має значення, як ви називаєте ключ, але для демонстраційних цілей я його зателефоную github.ppk. Цей файл повинен мати розширення .ppk.
  7. Скопіюйте текст у верхнє текстове поле в PuTTYgen, накресленому міткою, Public key for pasting into OpenSSH authorized_keys fileі вставте його в новий ключ SSH у налаштуваннях GitHub. Дайте назву, в якій описується, на якій машині знаходиться ключ (наприклад, "Робочий ноутбук").
  8. Виконати pageant.exe, з'явиться нова піктограма символу.
  9. Клацніть правою кнопкою миші на значку -> Додати ключ.
  10. Знайдіть файл ppk, введіть свою парольну фразу.
  11. Створіть ці нові змінні середовища користувача (через пошук програми Environчерез WindowsMenu, який знайде Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"іSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Відкрийте putty.exe і спробуйте підключитися до хоста, де ви розміщуєте свої сховища Git. Наприклад, спробуйте підключитися до github.com через SSH, і діалогове вікно запитає, чи приймаєте ви відбиток сервера: натисніть YES.
  13. Запустіть новий примірник MINGW64консолі Git і переконайтеся, що змінні середовища існують, написавши команду env | grep -i ssh.
  14. Ви повинні бути все налаштовані. Спробуйте клонувати протокол Git + SSH від вашого хоста.

(Спочатку витягнуто з цих двох посібників, які я поєднав в одному: Як налаштувати Git для Windows та налаштувати MinGW-W64 + MSYS для використання PuTTY Plink / Pageant .)


3

Під час змішування GitHub для Windows та Git GUI для Windows, ви можете зіткнутися з проблемами, коли Git GUI постійно запитує вас на ім’я користувача та пароль. Цією метою є зміна віддаленої URL-адреси https:(саме з цього створюється GitHub для Windows) на протокол Git. У .gitкаталозі у файлі конфігурації знайдіть:

[remote "origin"]
   url = https://github.com/**username**/**reponame**.git
   fetch = +refs/heads/*:refs/remotes/origin/*

Змініть його на:

[remote "origin"]
    url = git@github.com:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*

Так, це дуже дратує. Природно і легко клонувати репо з github для GUI для Windows, але при використанні git cui поза git shell не вдалося. Цікаво, як працює команда git в оболонці git з URL-адресою https ...
hiroshi

для SSH - це префікс завжди git@{SERVER URL}?
nmz787

Так, наскільки я коли-небудь бачив :)
IDisposable

Вже було це - досі мене просять весь час
Ян Грінґер

3

Стандартне місце для файлів знаходиться в %USERPROFILE%\.ssh.

%USERPROFILE%є еквівалентом $ HOME в Unix (зазвичай карта на щось подібне c:\users\youruserid).

Якщо ви використовуєте інструменти SSH, що постачаються разом з Git, які є стандартними інструментами командного рядка в стилі Unix, ви можете тут використовувати щось на зразок мого сценарію для роботи з ssh-агентом у всіх оболонках.


Для майбутніх читачів %USERPROFILE% is the equivalent of $HOMEце не еквівалент $HOME. Дуже багато прикладних програм Linux, що переносяться на Windows, відносяться до тих самих, але до них не слід ставитися однаково.
Micah Zoltu

Міхе, чи можете ви повідомити про різницю у намірах для цього? Крім того, навіть з різним наміром, здавалося б, що якщо всі інструменти використовують один як інший, то чи не ефективно це стає рівнозначним?
Ерік Блейд

Інструменти, які використовують %USERPROFILE%у Windows так само, як і $HOMEв Linux, порушують добре задокументовані найкращі практики / рекомендації щодо розробки Windows (опубліковані MS давно і оновлені з часом). Існує багато інструментів, які роблять це, але аргумент за ними слід схожий на аргумент "X мочиться в пулі, тому ми також повинні". USERPROFILEтам, де користувач зберігає документи, які вони створюють / зберігають (наприклад, діалогове вікно збереження). APPDATAпризначений для даних конфігурації кожного користувача. LOCALAPPDATAпризначений для кешів користувачів та великих файлів. PROGRAMDATAпризначений для загальномашинної конфігурації та кешу.
Micah Zoltu

Загалом, єдиними інструментами, які не поводяться з USERPROFILE, є інструменти, написані розробниками Linux, а потім перенесені в Windows. Як розробник, ви, ймовірно, використовуєте багато з них, тому відчуваєте, що "всі це роблять", але поза екосистемою для розробки інструментів більшість програм Windows насправді є хорошими громадянами. Навіть Microsoft іноді робить помилку, не ставлячи речі в потрібне місце (вони є величезною компанією), хоча загалом, коли ви їм це вказуєте, вони докладають зусиль для вирішення проблеми та дотримуйтесь інструкцій щодо ОС.
Micah Zoltu

1
(вибачте, обмеження символів StackExchange в коментарях). Ось докладніші відомості про папки та короткий опис того, що йде в кожній. Є й інші ресурси, в тому числі більш споживані повідомлення в блогах, але цей пропонує найбільш технічну точність: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Micah Zoltu

2

У мене були подібні питання, і жодна з відповідей тут не вирішила проблему. Виявляється, моя пара ключів спочатку генерувалася із порожньою парольною фразою. (Я знаю, німий.)

Як тільки я створив нове ключове слово та завантажив відкритий ключ у GitHub, все почало працювати знову.


1
це. ухххххххххххх. до побачення 2 години
Scoop

1

Ця відповідь також стосується цього питання при запуску ssh з облікового запису служби Windows: Jenkins (Служба Windows) з Git через SSH


Перейшовши за посиланням, яке ви надали, я зміг отримати налаштування Дженкінса. Мені потрібно було встановити змінну середовища HOME на шлях програми Git, який містив каталог .ssh, в якому я створив свій ключ SSH.
Spechal

1

Ви можете вказати як шлях до ключа, так і ім'я файлу ключів так (на Ubuntu). Наприклад:

ssh -i /home/joe/.ssh/eui_rsa

Це абсолютно вирішує проблему і дозволяє зберігати ключі там, де вам завгодно.
DaveGauer

Питання стосувалося конкретно про вікна. У мене на моїй машині Ubuntu працює так, але я не можу сказати, що потрібно встановити GIT_SSH_COMMANDна своїй машині Windows.
mjaggard

1

Pageant (агент SSH, що постачається разом із пакетом PuTTY ) вирішує проблему для мене.

У папці "Пуск" ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup) у мене вказується ярлик ( ), який вказує на те "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", що він завантажує мої SSH клавіші при запуску, і це змушує Git "просто працювати": o)


4
Я думаю, вам потрібні кілька інших правильних налаштувань, щоб це працювало (наприклад, GIT_SSH встановлено на TortoisePLink.exe, я думаю?), І хоча це працювало для мене в минулому, у мене часто виникають проблеми з цим на інших машинах. :-(
Саймон Схід

Я отримую "Неможливо відкрити файл" від Pageant :( Що я знаю, налаштовано правильно, оскільки я використовую його для TortoiseGit :(
Ian Grainger

1

Багато відповідей говорять про це, але для мене недостатньо швидко!

у Windows за допомогою msys (стандартна консоль Windows) C:\Users\{you}\.ssh\id_rsa

В основному, це не турбує сканування встановлених ключів (принаймні, не на моєму новому ноутбуці), і так потрібно конкретно id_rsa

Я зіткнувся з цим, бажаючи клонувати деякі приватні робочі репо в рубіновій MSYS CLI для Windows 10 64-розрядні


0

Якщо ви перебуваєте в ОС Windows 7/8, вам слід зазирнути в C: \ Users \ Your_User_Name.ssh Просто скопіюйте і вставте сюди свій файл id_rsa, і це все вийде поза вікном.


0

Однією помилкою, яку я зробив під час використання SSH у Windows, було те, що коли я намагався використовувати ключі через клієнт Git Bash, усі файли в ~ / .ssh були неправильними дозволами, але він не намагався сказати мені, що це проблема.

Як тест, переконайтеся, що ви все в каталозі ~ / .ssh встановили на chmod 600.


0

Якщо у вас є необхідні дозволи на машині Windows, і ваша політика це дозволяє, я б радив встановити Cygwin ( https://cygwin.com/ ), особливо враховуючи, що у вас є попередній досвід роботи з Linux. Cygwin дозволить обробляти ваші ssh-ключі, як і на будь-якій іншій машині Linux / Unix. І це забезпечує доступ майже до всіх інструментів cli для Linux.


1
Цілком розумно робити такі пропозиції, як коментарі. Але оскільки питання явно вимагає git для windows, ви повинні очікувати відхилення голосів за повідомлення про це як відповідь.
пограбувати

0

TortoiseGit дозволяє вказати ключ, який слід використовувати під час клонування сховища. Просто встановіть прапорець "Завантажити ключ шпаклівки" та перейдіть до .ppkфайлу, як на скріншоті:https://i.stack.imgur.com/lAyzT.png


Якщо ця функція відключена, перевірка Settings... -> Network -> SSH clientбуде встановленоC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Микита Bosik

0

Я вирішив вищезазначене питання, створивши

~ / .ssh / config

файл і покладіть:

IdentityFile C:\Users\adria\.ssh\mysshkey

0

Читаючи ваш коментар до відповіді Деклана, спробуйте спочатку відкрити командний рядок (Пуск → Виконатиcmd ), а потім перейдіть до цієї папки git / bin та запустіть ssh-keygen. Теоретично це створить ключ RSA і помістить його у відповідний каталог. Тоді ви просто повинні його знайти і поділитися своїм відкритим ключем зі світом.

Причиною того, що вікно "блимає", є те, що Windows запускає програму, і коли вона виконується, вона закриває командний рядок, думаючи, що ви зробили з нею, коли вам дійсно потрібен вихід.


0

Використовуючи v0.17 Git Gui для Windows, я натиснув таку команду меню: ДовідкаПоказати SSH ключ .

З’явилося діалогове вікно під назвою Ваш відкритий ключ OpenSSH . Я згенерував ключ і скопіював його до буфера обміну. Потім я продовжував виконувати інструкції setup-ssh щодо githelp від третього кроку далі. Після цього Гіт Гі мовчки спілкувався з GitHub - не потрібно вводити жодні облікові дані.


0

У моїй системі Windows 7 Git Gui шукає ключ RSA в userprofile/.sshпапці або більш конкретно c:/users/yourusername/.ssh/.

Складною частиною моєї настройки стало отримання спільним хостом у hostmonster прийняти ключ. Єдиний спосіб я міг змусити його працювати, використовуючи Git Gui для створення пар ключів (без пароля), а потім копіювати та вставляти відкритий ключ через панель управління, ssh, керувати ключами.

Для початку слід створити ключі в Git Gui, перейшовши в меню Довідка , Показати SSH ключ , а потім Створити ключ . Тепер у вас буде два нових ключі в .sshкаталозі. Відкрийте .pubфайл і скопіюйте вміст.

Увійдіть на панель керування на спільному хості та перейдіть до SSH , Керування ключами SSH та Імпортування ключа . Вставте у загальнодоступне поле і переконайтесь, що ви назвали його правильним ім'ям без розширення - моє було id_rsa. Тепер ви повинні авторизувати ключ за допомогою посилання управління авторизацією, щоб він змістився у authorized_keysфайл.

Тепер ваш Git Gui і ваш Git Bash повинні мати можливість натиснути за допомогою SSH, не вводячи пароль. Як не дивно, мені вдалося натиснути за допомогою SSH через Git Bash та Git Gui просто на моїх власних серверах під управлінням Linux, мені підходив лише спільний хостинг. Я сподіваюся, що це допомагає комусь, оскільки на це потрібно було кілька годин спроб і помилок - і це так просто!


0

Якщо ви використовуєте командний рядок Git для Windows, ви можете зробити наступне:

Відкрити cmd.exeта виконати setx HOME c:\PATH_TO_PRIVATE_KEY.

Створіть нову папку, .ssh(, якщо її немає) всередині c:\PATH_TO_PRIVATE_KEYі скопіюйте у неї id_rsaфайл (ваш приватний ключ).

Зроблено. Тепер ви можете нормально використовувати командний рядок Git.


0

Мій msysgit OpenSSL / Bash Git досвід (не пункція PuTTY) полягає в тому, що порядок пошуку вашої .ssh/папки виглядає наступним чином.

  1. %HOME%/.ssh/
  2. %HOMEDRIVE%%HOMEPATH%/.ssh/
  3. %USERPROFILE%/.ssh/

Отже, чому так багато людей пропонують налаштувати, HOMEякщо один з інших - це не те, чого ви очікуєте. Що ще важливіше, ви можете перевірити на собі; для налагодження використання ssh -vна сервері, який використовує аутентифікацію відкритих ключів наступним чином:

$ ssh -v git@github.com
OpenSSH_4.6p1, OpenSSL 0.9.8e 23 Feb 2007
debug1: Reading configuration data /d/.ssh/config
...
debug1: identity file /d/.ssh/identity type -1
debug1: identity file /d/.ssh/id_rsa type 1
debug1: identity file /d/.ssh/id_dsa type -1
...
debug1: Next authentication method: publickey
debug1: Trying private key: /d/.ssh/identity
debug1: Offering public key: /d/.ssh/id_rsa
..
Hi kcd83! You've successfully authenticated, but GitHub does not provide shell access.

Ми знайшли sshпошук на незрозумілому диску, і жодна з попередніх відповідей, здавалося, не пояснювала побачене.

Іноді %HOMEDRIVE%%HOMEPATH%це картографічний мережевий накопичувач (наприклад H:/), який викликає непотрібні збої, коли виникають проблеми з мережею / файловим сервером, навіть коли %USERPROFILE%/.sshє C:/Users/Username/.sshта має ключі локально. Установка %HOME%для %USERPROFILE%зупинки він дивиться на домашньому диску віддаленого.


0

Ви також можете завантажити агента PuTTY (конкурс) та додати приватний ключ, який ви створили за допомогою PuTTY для сервера.

Git визнає це і використовує це для push / pull.


0

Я використовував TortoiseGit, а також Git Bash для Windows, залежно від потреби. Я все додав у TortoiseGit, і він працював чудово, але Git Bash не взяв його, навіть якщо клавіші були у правильному каталозі. Виявляється, мені довелося це зробити від Git Bash:

ssh-add C:\\Users\\<YOUR_USER>\\.ssh\\id_rsa

Звичайно, ви можете змінити шлях до місця, де знаходиться ваш ключ, запам'ятавши його \\як роздільник.


0

Якщо ви використовуєте Git для Windows, після створення ключів SSH вам слід додати ключ SSH до ssh-агента.

Див. Розділ Створення нового ключа SSH та додавання його до ssh-агента .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa

Ласкаво просимо до помилки сервера. На це питання вже є широко прийнята відповідь, прийнята кілька років тому. Продовжуйте шукати новіші запитання або ті, які можна значно покращити.
Меттью Ветмор

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