Jak powiedzieć Git dla Windows, gdzie znajdę mój prywatny klucz RSA?

487

Moja konfiguracja Git działa poprawnie w systemie Linux, ale kiedy próbuję skonfigurować system pod Windows (używając Git dla Windows i TortoiseGit ), nie wiem, gdzie umieścić mój prywatny klucz SSH (a najlepiej, jak powiedzieć, sshgdzie to jest usytuowany). Korzystam ze standardowej opcji ssh.exe podczas instalacji Git dla Windows. Instalacja działa poprawnie, jeśli pozwolę na uwierzytelnianie hasła (zamiast RSA) na serwerze.

binarno-organiczny
źródło
Mam ten sam problem, mogę ssh do mojego okna dewelopera za pomocą klucza publicznego jako „root” za pomocą programu „Git Bash”, który jest zainstalowany z „Git dla Windows”, ale nie mogę zalogować się jako „git” za pomocą mojego klucz, mimo że skopiowałem plik „klucze autoryzowane” z mojego katalogu „root” do użytkownika „git” i poprawnie ustawiłem właścicieli i uprawnienia. Dlaczego nie mogę się zalogować jako „git”, gdy „root” działa z dokładnie tym samym plikiem „autoryzowane_klucze”. Zamiast „git” przekazuje wszystkie klucze prywatne, które są dokładnie takie same, jak w przypadku „root” i prosi o hasło. Nawiasem mówiąc, jest to serwer Centos 5.5.
@fuzzy lollipop: Czy masz odpowiednie uprawnienia do pliku autoryzowanego_kluczy użytkownika git? Powinien to być chmod 600 i powinien być własnością użytkownika git. Jeśli jest własnością użytkownika root, to nie zadziała
Dan McClain
tak, wszystkie pliki i katalogi są poprawnymi właścicielami i uprawnieniami

Odpowiedzi:

486

Dla Git Bash

Jeśli korzystasz z msysgit (zakładam, że tak) i chcesz uruchomić Git Bash (polecam to ponad TortoiseGit, ale teraz bardziej opieram się na CLI niż GUI), musisz dowiedzieć się, jaki jest twój katalog domowy dla Git Bash, uruchamiając go, a następnie wpisz pwd(w systemie Windows 7 będzie to coś takiego C:\Users\phsr, jak myślę). Będąc w Git Bash, powinieneś mkdir .ssh.

Po utworzeniu katalogu domowego i .sshfolderu pod nim, chcesz otworzyć PuTTYgen i otworzyć wcześniej utworzony klucz (plik .ppk). Po otwarciu klucza wybierz go Conversions -> Export OpenSSH keyi zapisz w HOME\.ssh\id_rsa. Po posiadaniu klucza w tej lokalizacji Git Bash rozpozna klucz i użyje go.

Uwaga: Komentarze wskazują, że nie działa to we wszystkich przypadkach. Może być konieczne skopiowanie klucza OpenSSH do Program Files\Git\.ssh\id_rsa(lub Program Files (x86)\Git\.ssh\id_rsa).

Dla TortoiseGit

Korzystając z TortoiseGit, musisz ustawić klucz SSH zgodnie ze wskazówkami Pacey . Musisz to zrobić dla każdego repozytorium, z którym korzystasz z TortoiseGit.

Dan McClain
źródło
4
instrukcje pacey dotyczące tortoisegit nie będą działać, dopóki nie będziesz mieć repozytorium (ponieważ ustawienie konfiguracji „zdalnej” nie pojawi się, chyba że wykonasz repozytorium) i prawdopodobnie nie możesz uzyskać repozytorium w pierwszej kolejności, jeśli możesz ” t uwierzytelnij się, aby sklonować od źródła. Zdradliwy!
Kylotan
43
Z GitBash odkryłem, że musiałem skopiować mój ~/.ssh/id_rsaplik Program Files\Git\.ssh\id_rsa- co było trochę mylące, ale teraz IntelliJ i Windows cmd mogą przesyłać do repozytoriów git, które używają uwierzytelniania klucza.
JP.
7
Również. Właśnie zainstalowałem git-for-windows, uruchamiam go z cmd.exe. Musiałem umieścić pliki id_rsai id_rsa.pubw c:\program files (x86)\Git\.ssh. .sshReż był już obecny. Dzięki, JP.
Cheeso
5
Drugi akapit był złoty. :)
Bjørn
4
@Damon: Powinno być id_rsabez rozszerzenia. To jest nazwa pliku, to nie jest katalog
Dan McClain
107

Korzystając z wbudowanego klienta SSH dostarczanego z Git dla Windows, należy skonfigurować zmienną środowiskową HOME, aby klient Git SSH mógł znaleźć klucz.

Na przykład w przypadku instalacji systemu Windows Vista można to zrobić, wydając setx HOME c:\Users\admin\polecenie w wierszu polecenia.

Uczyniło to mój dzień i naprawiło problem z Git, pod warunkiem, że twój klucz prywatny nie jest chroniony hasłem. Jeśli chcesz użyć ssh-agent, prawdopodobnie możesz uruchomić ssh-agent cmd.exe (chociaż nigdy tego nie zrobiłem) i ssh-add jak zwykle.

Zauważ, że wszystkie narzędzia Git / SSH powinny być uruchamiane z cmd.exe, aby nie mrugać oknem.

Jeśli to nie zadziała poprawnie, użycie plink można prawdopodobnie osiągnąć poprzez ulepszenie GIT_SSH . Zobacz wszystkie samouczki SVN + ssh; jest to w zasadzie ta sama instalacja hydrauliczna, którą musisz skonfigurować.

Paź
źródło
16
Właśnie tego szukałem, ponieważ próbuję użyć wiersza polecenia systemu Windows, a nie git bash.
John Ruiz
Ładna, łatwa naprawa, ale bez tego trudno byłoby to rozgryźć!
thaddeusmt
Ważne jest również, aby nie wstawiać żadnych odstępów między HOME = a c: \ ... Rozwiązanie Octa załatwiło sprawę. :-)
Lutz
2
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use Cmd` zamiast.
trejder,
2
+1GIT_SSH=c:\pathto\plink.exe
Nick Grealy,
54

Możesz określić kluczową lokalizację TortoiseGit w następujący sposób:

  • Otwórz okno Eksploratora.
  • Otwórz menu kontekstowe i nawiguj TortoiseGitUstawienia
  • W otwartym oknie przejdź do GitRemote
  • Ustaw ścieżkę do klucza PuTTY w odpowiednim polu wejściowym.

Zrzut ekranu znajduje się poniżej:

Wpisz opis zdjęcia tutaj

pacey
źródło
8
Dodatkowo, jeśli chcesz przekonwertować swój klucz prywatny na format „.ppk” z innego formatu, możesz śledzić TO
Tariq M Nasim,
To zadziałało dla mnie.
Maxim Eliseev,
6
Git> Remote pojawia się tylko po pomyślnym sklonowaniu repozytorium.
Steve Pitchers
5
O wiele łatwiejszym rozwiązaniem jest skonfigurowanie działania poprawnie w git (używając openSSH), a następnie powiedzenie TortoiseGit, aby używał ssh.exe używanego przez git. Zobacz stackoverflow.com/a/33328628/318317 W ten sposób wystarczy to naprawić tylko raz.
Daniel Rose
50

Żadna z poprzednich odpowiedzi nie działała dla mnie. Oto, co w końcu działało dla mnie. Jest to dość proste, jeśli wiesz, co wpisać. Nie potrzebuje PuTTY.

  • Otwórz monit Git Bash
  • Wpisz „ssh-keygen”
    • Zaakceptuj domyślną lokalizację
    • Wybierz puste hasło (więc po prostu naciśnij „enter” na wszystkie pytania)
  • Teraz skopiuj klucz publiczny na swój serwer, na przykład: scp ~ / .ssh / id_rsa.pub [email protected]: ~

To trochę zrobione na twoim komputerze. Teraz sshprzejdź do serwera docelowego, a następnie zrób

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

Otóż ​​to! Jesteś skończony! W Git Bash wykonaj następujące czynności, aby przetestować:

ssh [email protected] ls

Jeśli wyświetla listę plików w katalogu domowym na serwerze Git, i gotowe!

W przypadku GitHub nie masz dostępu do powłoki na ich serwerze, ale możesz przesłać klucz za pomocą ich strony internetowej, więc dla odrobiny „teraz skopiuj na swój serwer” wykonaj:

  • W Git Bash wpisz „cat ~ / .ssh / id_rsa.pub”, wybierz wynik i skopiuj go do schowka.
  • Na stronie GitHub przejdź do „Ustawienia konta”, „Klucze SSH i GPG”, kliknij „Nowy klucz SSH” i wklej klucz.
Hugh Perkins
źródło
8
Nie twórz kluczy bez haseł. To tak, jakby umieścić hasło w pliku tekstowym, tyle że wszyscy znają domyślną lokalizację kluczy prywatnych.
GregB
14
Odpowiadasz na złe pytanie. Pytanie Q oznacza, jak wskazać istniejący klucz prywatny.
Orangutech 17.04.13
7
@GregB, patrzę na to w ten sposób: każdy serwer, dla którego tworzę klucz bez hasła, jest tak samo bezpieczny jak mój laptop, jest rozszerzeniem obwodu bezpieczeństwa mojego laptopa. Właściwie nawet nie, ponieważ mój katalog domowy jest zaszyfrowany ;-) Tak więc jest tak bezpieczny, jak zaszyfrowana partycja domowa na moim laptopie, która moim zdaniem jest „wystarczająco dobra”, aby zapewnić dostęp do github. (co oczywiście może różnić się od twojej opinii!)
Hugh Perkins
3
@GregB Nie popadaj w paranoję! :] Jasne, że używanie kluczy chronionych hasłem jest znacznie bezpieczniejsze niż używanie hasła bez hasła, ale twierdzenie, że klucz bez hasła jest równie łatwy do złamania, jak przechowywanie haseł w pliku tekstowym, jest oczywistym fałszem. Widziałem wiele przewodników, które zachęcają użytkowników do korzystania z kluczy chronionych hasłem, ale nigdy nie widziałem żadnych roszczeń, że używanie ich bez haseł wcale nie jest bezpieczne. Plus: niektóre systemy nie obsługują rozwiązań w zakresie zapamiętywania hasła klucza, wprowadzonego przez użytkowników, i prosi o to przy każdym użyciu klucza. Co sprawia, że ​​używanie kluczy SSH w tej sytuacji jest bezcelowe.
trejder,
4
Ze względu na rozmowę, która odbiegała od pierwotnego pytania, klucze SSH są z pewnością bardziej bezpieczne kryptograficznie niż hasła, ale bezpieczeństwo to jest zagrożone przez nieszyfrowanie kluczy SSH. Moje osobiste podejście polega na odblokowaniu moich kluczy na początku dnia za pomocą agenta SSH, który następnie przechowuje odszyfrowane klucze w pamięci, dzięki czemu nie muszę ponownie wpisywać hasła przez cały dzień. Jak komentuje @Hugh Perkins, a ja parafrazuję, wszyscy znacie swoje wymagania bezpieczeństwa lepiej niż ja / my :).
GregB
38

Jeśli używasz msysgit z narzędziami OpenSSH, musisz albo utworzyć ~/.ssh/id_rsa, albo utworzyć konfigurację Git, w ~/.ssh/configktórej wskazuje twój klucz.

Oto przykład konfiguracji Git dla Bitbucket, która będzie używać prawidłowej nazwy użytkownika i klucza innego niż klucz domyślny (w przypadku, gdy utrzymasz jeden klucz dla połączeń SSH, a drugi dla kont Git).

~ / .ssh / config :

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

W Git Bash możesz uruchomić dwa polecenia, aby dodać klucz do agenta ssh bieżącej sesji, aby uniknąć konieczności wielokrotnego wpisywania hasła klucza.

eval `ssh-agent`
ssh-add /C/keys/yourkey.key
GregB
źródło
1
Zrobiłem to, ale dla github.com: Host github.com IdentityFile ~ / .ssh / github_rsa
Sarah Vessels
1
Jeśli masz miejsce na swojej drodze, musisz użyć cudzysłowów: IdentityFile "/ C / My Keys / key"
r03
Wolę w ten sposób, ponieważ pozwoliło mi to na szybkie połączenie istniejących kluczy z innego komputera
Kirill Gusyatin
Mój .gitconfig ma sekcje. W jakich sekcjach należy umieścić te hosty?
Steve Yakovenko
16

Właśnie ustawiłem% HOME% =% HOMEPATH%

Ma to tę zaletę, że działa dla wszystkich użytkowników zalogowanych do systemu (każdy z nich otrzymuje osobne foldery .ssh).

W systemie Vista:

  1. Kliknij komputer prawym przyciskiem myszy
  2. Wybierz Właściwości
  3. Kliknij Zaawansowane ustawienia systemu
  4. Kliknij Zmienne środowiskowe
  5. W dolnej części (Zmienne systemowe) kliknij Nowy
  6. W polu Nazwa zmiennej wpisz: HOME
  7. Dla zmiennej typu ścieżki:% HOMEPATH%
  8. Kliknij OK
Jono
źródło
6
W moim przypadku dodałem HOME =% USERPROFILE%
igor
1
Pamiętaj, że %HOMEPATH%nie zawiera litery dysku, więc jeśli nie masz źródła C:, musisz przejść C:do %HOME%.
Graeme Perrow,
set %HOME%=%HOMEPATH%pracował dla mnie! Dziękuję Ci!!
teng
7

Klucz prywatny należy dodać do agenta SSH na stacji roboczej. Jak to osiągnąć, może zależeć od tego, jakiego klienta git używasz, jednak puTTY i powiązany z nim agent (pageant) mogą załatwić sprawę, oto link do oficjalnych plików binarnych i źródła:

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

Declan Shanaghy
źródło
Powiedziałem powyżej, że używam Git dla Windows i używam ssh.exe (spakowany w / git) zamiast putty. Musi być jakaś standardowa praktyka dodawania klucza prywatnego, po prostu nie mogę się dowiedzieć, jak to zrobić. Chociaż zmiana oprogramowania może rzeczywiście pozwolić mi się zalogować, musi istnieć sposób, aby to zrobić za pomocą standardowej konfiguracji Git, prawda?
binarnoorganiczny
Przepraszam, nie działam w systemie Windows, tylko Linux. Ale klucz musi znajdować się w agencie SSH. czy istnieje agent.exe lub coś podobnego?
Declan Shanaghy,
1
Tak, konfiguracja była ciastem po stronie Linuxa. Ale muszę też niestety działać w systemie Windows. W folderze git / bin w systemie Windows znajduje się kilka plików wykonywalnych związanych z ssh (ssh, ssh-add, ssh-agent, ssh-keygen i ssh-keyscan), ale nie wiem, jak zrobić którykolwiek z nich Zrób cokolwiek. Po prostu mrugają, otwierając i zamykając okno cmd. Jestem zakłopotany.
binarny organiczny
8
Korowód rzeczywiście rozwiązuje dla mnie problem - mam skrót w folderze Autostart w menu Start ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup), który wskazuje "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", że ładuje moje klucze SSH podczas uruchamiania, a to sprawia, że ​​GIT „po prostu działa”: o)
Owen Blacker
@OwenBlacker OMFG! Jesteś zdecydowanie powinien napisać ten komentarz jako pełnowymiarowego odpowiedź ! To jedyne rozwiązanie , które naprawdę mi pomogło i rozwiązało mój problem! Szkoda, że ​​mogę dać ci tylko +1! :]
trejder,
6

W moim przypadku korzystałem z Git dla Windows w kontenerze Docker windowsservercore.

My Git został zainstalowany przez Chocolatey do C:\Program Files\Git.

Musiałem zaktualizować plik C:\Program Files\Git\etc\ssh\ssh_configo:

Host example.com
   Identityfile ~/.ssh/id_rsa

Wtedy mogłem użyć klucza z C:\Users\<user>\.ssh\id_rsa

Jeśli korzystasz z Git dla Windows razem z OpenSSH dla Windows. Git nadal używa własnego ssh.

Plus, jeśli masz zamiar korzystania ssh-keyscan host.com > known_hostsz OpenSSH, należy zachować ostrożność, ponieważ wyjście z rurociągów stdoutz keyscan(w systemie Windows) zmienia kodowanie do UCS-2, ale OpenSSH mogą tylko czytać UTF-8! Dlatego pamiętaj, aby zmienić known_hostskodowanie pliku.

oglop
źródło
Pomogło to, ale dla każdego, kto używa klucza id_dsa, musisz również dodać „PubkeyAcceptedKeyTypes ssh-dss” pod swoim hostem.
Michael Russo,
4

OK, spojrzałem na sugestię ..

Ale umieszczanie w moich prywatnych kluczach SSH w folderze publicznym nie wydawało mi się dobrym pomysłem, więc zacząłem szukać, gdzie jest znany host.

Jeśli więc chcesz poprawnie zabezpieczyć swój klucz SSH, musisz go umieścić w następującym katalogu:

W systemie Windows 7, 8 i 8.1 32-bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files \ Git \

W systemie Windows 7, 8 i 8.1 64-bit:

C: \ Users \\ AppData \ Local \ VirtualStore \ Program Files (x86) \ Git \

Bas van den Dikkenberg
źródło
To było najprostsze rozwiązanie na mojej maszynie Win7. Tak jak ty szukałem known_hosts. Rzeczywiście było C:\Users\Dave\AppData\Local\VirtualStore\Program Files (x86)\Git\.ssh. Umieszczając mój plik klucza (id_rsa) w tym katalogu, ssh mógł go znaleźć bez skargi. Zrobiłem małą lekturę - w ten sposób Windows obsługuje (starsze) oprogramowanie próbujące pisać w obszarach zabronionych (takich jak „C: \ Program Files \”), więc ssh Gita jest całkowicie nieświadomy, że pisze do katalogu VirtualStore, Windows zajmuje się tym w przejrzysty sposób. Przynajmniej te pliki należą do użytkownika!
DaveGauer
4

Najbardziej efektywnym sposobem jest użycie Pageant, ponieważ pozwoli ci napisać hasło tylko raz na początku sesji zamiast każdego push. Wszystkie odpowiedzi tutaj były zbyt krótkie, dlatego opublikuję szczegółowy przewodnik:

  1. Pobierz pageant.exe, puttygen.exe, putty.exea plink.exeze strony PuTTY za. Umieść je w C:\puttyToolskatalogu.
  2. Uruchom puttygen.exe.
  3. Kliknij przycisk Generate.
  4. Poruszaj myszką w górnej części okna, aż pasek postępu się zapełni, zgodnie z poleceniem programu.
  5. Podaj hasło i powtórz je w kolejnym polu tekstowym.
  6. Kliknij „Zapisz klucz prywatny”. Zwykle katalog, w którym je zapisujesz, to %USERPROFILE%\_ssh(na moim komputerze to mapuje C:\Users\andres\.ssh\). Nie ma znaczenia, jak nazywacie klucz, ale dla celów demonstracyjnych zamierzam to nazwać github.ppk. Ten plik powinien mieć rozszerzenie .ppk.
  7. Skopiuj tekst w górnym polu tekstowym w PuTTYgen, oznaczonym etykietą Public key for pasting into OpenSSH authorized_keys filei wklej go do nowego klucza SSH w ustawieniach GitHub. Nadaj mu tytuł opisujący, na jakim komputerze znajduje się klucz (np. „Laptop do pracy”).
  8. Uruchom pageant.exe, pojawi się nowa ikona paska zadań.
  9. Kliknij prawym przyciskiem myszy ikonę -> Dodaj klucz.
  10. Zlokalizuj plik ppk, wprowadź hasło.
  11. Utwórz nowe zmienne środowiskowe użytkownika (szukając aplikacji Environza pomocą WindowsMenu, które znajdzie Edit environment variables for your account): GIT_SSH = "C:\puttyTools\plink.exe"iSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
  12. Otwórz putty.exe i spróbuj połączyć się z hostem, na którym przechowujesz repozytoria Git. Na przykład spróbuj połączyć się z github.com przez SSH, a okno dialogowe zapyta, czy akceptujesz odcisk palca serwera: kliknij TAK.
  13. Uruchom nową instancję MINGW64konsoli Git i sprawdź, czy istnieją tam zmienne środowiskowe, pisząc polecenie env | grep -i ssh.
  14. Powinieneś być gotowy. Spróbuj sklonować za pomocą protokołu Git + SSH ze swojego hosta.

(Pierwotnie wyodrębniono z tych dwóch przewodników, które połączyłem w jeden: Jak skonfigurować Git dla Windows i skonfigurować MinGW-W64 + MSYS do korzystania z PuTTY Plink / Pageant .)

knocte
źródło
3

Podczas mieszania GitHub dla Windows i Git GUI dla Windows możesz napotkać problemy, w których Git GUI wyświetla monit o podanie nazwy użytkownika i hasła. Lekarstwem na to jest zmiana zdalnego adresu URL z https:(który tworzy GitHub dla Windows) na protokół Git. W .gitkatalogu w pliku konfiguracyjnym znajdź:

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

Zmień na:

[remote "origin"]
    url = [email protected]:**username**/**reponame**.git
    fetch = +refs/heads/*:refs/remotes/origin/*
IDisposable
źródło
Tak, to bardzo denerwujące. Jest to naturalne i łatwe do klonowania repo za pomocą github dla GUI systemu Windows, ale gdy użycie git cui poza powłoką git nie powiodło się. Zastanawiam się, jak polecenie git w powłoce git działa z adresem URL https ...
Hiroshi,
dla SSH jest zawsze prefiksem git@{SERVER URL}?
nmz787
Tak, o ile kiedykolwiek widziałem :)
IDisposable
Już to miałem - ciągle mnie pyta
Ian Grainger
3

Standardowa lokalizacja plików to %USERPROFILE%\.ssh.

%USERPROFILE%jest odpowiednikiem $ HOME w Uniksie (zwykle odwzorowuje coś podobnego c:\users\youruserid).

Jeśli używasz narzędzi SSH dostarczonych z Git, które są standardowymi narzędziami uniksowymi w stylu wiersza poleceń, możesz użyć czegoś takiego jak mój skrypt tutaj do pracy z ssh-agent we wszystkich powłokach.

Eric Blade
źródło
Dla przyszłych czytelników nie%USERPROFILE% is the equivalent of $HOME jest odpowiednikiem . Wiele źle działającego systemu Linux apps przeniesiony do systemu Windows treat t nimi ten sam adres e ale powinny one nie być traktowane tak samo. $HOME
Micah Zoltu
Micheasz, czy możesz poinformować o różnicach w tym celu? Ponadto, nawet z odmiennymi intencjami, wydaje się, że jeśli wszystkie narzędzia używają jednego z nich, to czy nie staje się ono skutecznie równoważne?
Eric Blade,
Narzędzia, które używają %USERPROFILE%w systemie Windows w taki sam sposób, jak $HOMEw systemie Linux, naruszają dobrze udokumentowane najlepsze praktyki / zalecenia dotyczące rozwoju systemu Windows (opublikowane przez MS dawno temu i aktualizowane z czasem). Jest wiele narzędzi, które to robią, ale argument za nimi jest podobny do argumentu „X szuka w puli, więc my też powinniśmy”. USERPROFILEto miejsce, w którym użytkownik przechowuje dokumenty, które tworzą / zapisują (np. okno dialogowe zapisywania). APPDATAjest dla danych konfiguracyjnych dla użytkownika. LOCALAPPDATAjest dla pamięci podręcznych dla poszczególnych użytkowników i dużych plików. PROGRAMDATAsłuży do konfiguracji i pamięci podręcznej dla całego komputera.
Micheasz Zoltu
Ogólnie rzecz biorąc, jedynymi narzędziami, które źle zachowują się w USERPROFILE, są narzędzia napisane przez programistów Linuksa, a następnie przeniesione do systemu Windows. Jako programista prawdopodobnie używasz ich dużo, więc wydaje się, że „wszyscy to robią”, ale poza ekosystemem narzędzi programistycznych większość aplikacji Windows jest w rzeczywistości dobrymi obywatelami. Nawet Microsoft czasami popełnia błąd, nie umieszczając rzeczy we właściwym miejscu (są to duże firmy), choć ogólnie, gdy im to wskazujesz, starają się rozwiązać problem i postępować zgodnie z wytycznymi systemu operacyjnego.
Micheasz Zoltu
1
(przepraszam, limity znaków StackExchange w komentarzach). Oto więcej szczegółów na temat folderów i krótki opis tego, co się w nich znajduje. Istnieją również inne zasoby, w tym więcej artykułów na blogu, ale ten oferuje najbardziej techniczną dokładność: technet.microsoft.com/en-us/library/cc749104(v=ws.10).aspx
Micah Zoltu
2

Miałem podobne problemy i żadna z odpowiedzi tutaj nie rozwiązała problemu. Okazuje się, że moja para kluczy została pierwotnie wygenerowana z pustym hasłem. (Wiem, głupi.)

Po utworzeniu nowej pary kluczy i przesłaniu klucza publicznego do GitHub wszystko zaczęło działać ponownie.

Eric Cloninger
źródło
1
to. ughhhhhhhhhhhh. do widzenia 2 godziny
Scoop
1

Poniższa odpowiedź dotyczy również tego pytania podczas uruchamiania ssh z konta usługi Windows: Jenkins (usługa Windows) z Git przez SSH

Alexander Pacha
źródło
Po podanym linku udało mi się uzyskać konfigurację Jenkins. Musiałem ustawić zmienną środowiskową HOME na ścieżkę programu Git, która zawierała katalog .ssh, w którym utworzyłem swój klucz SSH.
Spechal
1

Możesz podać zarówno ścieżkę do klucza, jak i nazwę pliku klucza tak (w Ubuntu). Na przykład:

ssh -i /home/joe/.ssh/eui_rsa
Jim
źródło
To absolutnie rozwiązuje problem i pozwala przechowywać klucze tam, gdzie chcesz.
DaveGauer
Pytanie dotyczyło konkretnie systemu Windows. Mam git na moim komputerze Ubuntu, który działa w ten sposób, ale nie mogę powiedzieć, co ustawić GIT_SSH_COMMANDna moim komputerze z systemem Windows.
mjaggard
1

Korowód (agent SSH dostarczany z pakietem PuTTY ) rozwiązuje dla mnie problem.

Mam skrót w folderze Autostart mojego menu Start ( C:\Users\owen.blacker\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup), który wskazuje "C:\Program Files (x86)\PuTTY\pageant.exe" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerPersonal.ppk" "C:\Users\owen.blacker\Documents\SSH\OwenBlackerWork.ppk", że ładuje moje klucze SSH podczas uruchamiania i to sprawia, że ​​Git „po prostu działa”: o)

Owen Blacker
źródło
4
Myślę, że potrzebujesz kilku innych poprawnych ustawień, aby to działało (na przykład GIT_SSH ustawiony na TortoisePLink.exe?), I chociaż to działało dla mnie w przeszłości, często mam problemy z tym na innych komputerach. :-(
Simon East
Otrzymuję komunikat „Nie można otworzyć pliku” z Pageant :( Wiem, że jest poprawnie skonfigurowany, ponieważ używam go do TortoiseGit :(
Ian Grainger
1

Wiele odpowiedzi mówi to, ale dla mnie nie dość szybko!

w systemie Windows za pomocą msys (standardowa konsola systemu Windows) C:\Users\{you}\.ssh\id_rsa

Zasadniczo nie przeszkadza to w skanowaniu zainstalowanych kluczy (przynajmniej nie na moim nowym laptopie) i dlatego potrzebuje konkretnie id_rsa

Spotkałem się z tym, że chciałem sklonować kilka prywatnych repozytoriów roboczych w rubinowym MSYS CLI dla Windows 10 64-bit

MrMesees
źródło
0

Jeśli korzystasz z systemu Windows 7/8, powinieneś zajrzeć do C: \ Users \ Your_User_Name.ssh Wystarczy skopiować i wkleić tutaj swój plik id_rsa, a wszystko będzie działać od razu po wyjęciu z pudełka.

sędzia
źródło
0

Jednym błędem, który popełniłem podczas korzystania z SSH w systemie Windows, było to, że kiedy próbowałem użyć kluczy za pośrednictwem klienta Git Bash, wszystkie pliki w ~ / .ssh miały złe uprawnienia, ale nie próbowałem powiedzieć, że to problem.

W ramach testu upewnij się, że ustawiłeś wszystko w swoim katalogu ~ / .ssh na chmod 600.

Spedge
źródło
0

Jeśli masz niezbędne uprawnienia na komputerze z systemem Windows i pozwalają na to twoje zasady, sugeruję zainstalowanie Cygwin ( https://cygwin.com/ ), szczególnie biorąc pod uwagę, że masz wcześniejsze doświadczenie z Linuksem. Cygwin umożliwi obsługę twoich kluczy ssh, tak jak na każdej innej maszynie z systemem Linux / Unix. I zapewnia dostęp do prawie wszystkich narzędzi CLI Linuksa.

torbenl
źródło
1
Sugestie takie jak komentarze są całkowicie uzasadnione. Ale ponieważ pytanie wyraźnie dotyczy git dla systemu Windows, należy spodziewać się zmniejszenia liczby głosów za opublikowanie tego jako odpowiedzi.
rob
0

TortoiseGit pozwala określić klucz, który ma być używany podczas klonowania repozytorium. Po prostu zaznacz „Załaduj klucz szpachlowy” i przejdź do .ppkpliku, jak na zrzucie ekranu:https://i.stack.imgur.com/lAyzT.png

NGNeer
źródło
Jeśli wyłączona, kontrola Settings... -> Network -> SSH clientjest ustawionaC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Nikita Bosik
0

Rozwiązałem powyższy problem, tworząc

~ / .ssh / config

zarchiwizuj i umieść:

IdentityFile C:\Users\adria\.ssh\mysshkey
Adrian Onu
źródło
0

Czytając komentarz do odpowiedzi Declana, spróbuj najpierw otworzyć wiersz polecenia (Start → Uruchomcmd ), a następnie przejdź do tego folderu git / bin i uruchom ssh-keygen. Teoretycznie wygeneruje klucz RSA i umieści go w odpowiednim katalogu. Następnie musisz go znaleźć i udostępnić swój klucz publiczny światu.

Powodem, dla którego okno „miga” jest to, że system Windows uruchamia program, a kiedy się uruchamia, zamyka wiersz polecenia, myśląc, że już z nim skończyłeś, kiedy naprawdę potrzebujesz danych wyjściowych.

naydichev
źródło
0

Używając Git Gui w wersji v0.17 w systemie Windows, kliknąłem następujące polecenie menu: PomocPokaż klucz SSH .

Pojawiło się okno dialogowe zatytułowane Twój klucz publiczny OpenSSH . Wygenerowałem klucz i skopiowałem go do schowka. Następnie kontynuowałem wykonywanie instrukcji setup-ssh na githelp od kroku trzeciego . Następnie Git Gui komunikował się cicho z GitHub - nie trzeba wprowadzać żadnych poświadczeń.

snow6oy
źródło
0

W moim systemie Windows 7 Git Gui szuka klucza RSA w userprofile/.sshfolderze, a dokładniej c:/users/yourusername/.ssh/.

Trudną częścią mojej konfiguracji było skłonienie hosta wspólnego do hostmonster do zaakceptowania klucza. Jedynym sposobem, w jaki mogłem go uruchomić, było użycie Git Gui do utworzenia par kluczy (bez hasła), a następnie skopiowanie i wklejenie klucza publicznego za pomocą panelu sterowania, ssh, zarządzanie kluczami.

Aby zacząć od początku, musisz utworzyć klucze w Git Gui, przechodząc do menu Pomoc , Pokaż klucz SSH , a następnie Wygeneruj klucz . Teraz będziesz mieć dwa nowe klucze w .sshkatalogu. Otwórz .pubplik i skopiuj zawartość.

Zaloguj się do panelu sterowania na współdzielonym hoście i przejdź do SSH , Zarządzaj kluczami SSH i Kluczem importu . Wklej do pola publicznego i upewnij się, że nadałeś mu właściwą nazwę bez rozszerzenia - moje było id_rsa. Teraz musisz autoryzować klucz za pomocą linku zarządzającego autoryzacją, aby został on konkatenowany do authorized_keyspliku.

Teraz Twoje Git Gui i Git Bash powinny móc przesyłać dane za pomocą SSH bez konieczności wpisywania hasła. Co dziwne, mogłem pchać używając SSH przez Git Bash i Git Gui na moich własnych serwerach z Linuksem, tylko hostowanie dzielone dawało mi pasowanie. Mam nadzieję, że to pomaga komuś, ponieważ wymyślenie tego zajęło mi wiele godzin prób i błędów - i to takie proste!

użytkownik228414
źródło
0

Jeśli używasz wiersza polecenia Git dla systemu Windows, możesz wykonać następujące czynności:

Otwórz cmd.exei uruchom setx HOME c:\PATH_TO_PRIVATE_KEY.

Utwórz nowy folder, .ssh(jeśli nie istnieje) w środku c:\PATH_TO_PRIVATE_KEYi skopiuj do niego swój id_rsaplik (klucz prywatny).

Gotowy. Teraz możesz normalnie używać wiersza poleceń Git.

duccom
źródło
0

Moja msysgit OpenSSL / Bash Git doświadczenie (nie Putty za Plink) jest to, że kolejność wyszukiwania dla do .ssh/folderu jest następująca.

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

Dlatego tak wiele osób sugeruje ustawienie, HOMEjeśli jeden z pozostałych nie jest tym, czego oczekujesz. Co ważniejsze, możesz sam sprawdzić; w celu debugowania użyj ssh -vna serwerze, który korzysta z uwierzytelniania klucza publicznego w następujący sposób:

$ ssh -v [email protected]
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.

Szukaliśmy sshna niejasnym dysku i żadna z poprzednich odpowiedzi nie wyjaśniała tego, co zobaczyliśmy.

Czasami %HOMEDRIVE%%HOMEPATH%jest mapowany dysk sieciowy (np H:/) co powoduje niepotrzebnych awarii, gdy istnieje sieć / zagadnienia fileserver, nawet kiedy %USERPROFILE%/.sshjest C:/Users/Username/.sshi ma klucze lokalnie. Ustawianie %HOME%się %USERPROFILE%zatrzyma go patrząc na zdalnym dysku domowego.

KCD
źródło
0

Możesz także załadować PuTTY Agent (pageant) i dodać klucz prywatny wygenerowany za pomocą PuTTY dla serwera.

Git rozpoznaje to i wykorzystuje to do push / pull.

deepakkt
źródło
0

Korzystałem z TortoiseGit oraz Git Bash w systemie Windows, w zależności od potrzeb. Dodałem wszystko do TortoiseGit i działało dobrze, ale Git Bash nie odebrał tego, mimo że klucze były we właściwym katalogu. Okazuje się, że musiałem to zrobić z Git Bash:

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

Możesz oczywiście zmienić ścieżkę do dowolnego miejsca, w którym znajduje się klucz, pamiętając o użyciu go \\jako separatora.

Vlad Schnakovszki
źródło
0

Jeśli używasz Git dla Windows, po wygenerowaniu kluczy SSH musisz dodać swój klucz SSH do ssh-agent.

Zobacz Generowanie nowego klucza SSH i dodawanie go do agenta ssh .

eval $(ssh-agent -s)

// Tell where the keys are located

ssh-add ~/.ssh/id_rsa
Matoeil
źródło
Witamy w usłudze Server Fault. To pytanie ma już powszechnie akceptowaną odpowiedź zaakceptowaną kilka lat temu. Szukaj nowych pytań lub pytań, które można znacznie poprawić.
Matthew Wetmore,
1
powszechnie akceptowana odpowiedź nie działała dla mnie, podczas gdy ta działała. Wierzę, że może to pomóc komuś wiedzieć, że klucz musi zostać dodany do agenta ssh i można to zrobić za pomocą 2 linii instrukcji
Matoeil