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ć, ssh
gdzie 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.
487
Odpowiedzi:
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ś takiegoC:\Users\phsr
, jak myślę). Będąc w Git Bash, powinieneśmkdir .ssh
.Po utworzeniu katalogu domowego i
.ssh
folderu pod nim, chcesz otworzyć PuTTYgen i otworzyć wcześniej utworzony klucz (plik .ppk). Po otwarciu klucza wybierz goConversions -> Export OpenSSH key
i zapisz wHOME\.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
(lubProgram 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.
źródło
~/.ssh/id_rsa
plikProgram 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.id_rsa
iid_rsa.pub
wc:\program files (x86)\Git\.ssh
..ssh
Reż był już obecny. Dzięki, JP.id_rsa
bez rozszerzenia. To jest nazwa pliku, to nie jest katalogKorzystają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ć.
źródło
setx HOME c:\Users\admin` command doesn't seems to be working in Git Bash. You have to use
Cmd` zamiast.GIT_SSH=c:\pathto\plink.exe
Możesz określić kluczową lokalizację TortoiseGit w następujący sposób:
Zrzut ekranu znajduje się poniżej:
źródło
Ż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.
To trochę zrobione na twoim komputerze. Teraz
ssh
przejdź do serwera docelowego, a następnie zróbOtóż to! Jesteś skończony! W Git Bash wykonaj następujące czynności, aby przetestować:
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:
źródło
Jeśli używasz msysgit z narzędziami OpenSSH, musisz albo utworzyć
~/.ssh/id_rsa
, albo utworzyć konfigurację Git, w~/.ssh/config
któ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 :
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.
źródło
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:
źródło
%HOMEPATH%
nie zawiera litery dysku, więc jeśli nie masz źródłaC:
, musisz przejśćC:
do%HOME%
.set %HOME%=%HOMEPATH%
pracował dla mnie! Dziękuję Ci!!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
źródło
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)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_config
o: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_hosts
z OpenSSH, należy zachować ostrożność, ponieważ wyjście z rurociągówstdout
zkeyscan
(w systemie Windows) zmienia kodowanie do UCS-2, ale OpenSSH mogą tylko czytać UTF-8! Dlatego pamiętaj, aby zmienićknown_hosts
kodowanie pliku.źródło
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:
W systemie Windows 7, 8 i 8.1 64-bit:
źródło
known_hosts
. Rzeczywiście byłoC:\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!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:
pageant.exe
,puttygen.exe
,putty.exe
aplink.exe
ze strony PuTTY za. Umieść je wC:\puttyTools
katalogu.puttygen.exe
.%USERPROFILE%\_ssh
(na moim komputerze to mapujeC:\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.Public key for pasting into OpenSSH authorized_keys file
i wklej go do nowego klucza SSH w ustawieniach GitHub. Nadaj mu tytuł opisujący, na jakim komputerze znajduje się klucz (np. „Laptop do pracy”).pageant.exe
, pojawi się nowa ikona paska zadań.Environ
za pomocą WindowsMenu, które znajdzieEdit environment variables for your account
):GIT_SSH = "C:\puttyTools\plink.exe"
iSVN_SSH = "C:\puttyTools\PuTTY\plink.exe"
MINGW64
konsoli Git i sprawdź, czy istnieją tam zmienne środowiskowe, pisząc polecenieenv | grep -i ssh
.(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 .)
źródło
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.git
katalogu w pliku konfiguracyjnym znajdź:Zmień na:
źródło
git@{SERVER URL}
?Standardowa lokalizacja plików to
%USERPROFILE%\.ssh
.%USERPROFILE%
jest odpowiednikiem $ HOME w Uniksie (zwykle odwzorowuje coś podobnegoc:\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.
źródło
%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
%USERPROFILE%
w systemie Windows w taki sam sposób, jak$HOME
w 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”.USERPROFILE
to miejsce, w którym użytkownik przechowuje dokumenty, które tworzą / zapisują (np. okno dialogowe zapisywania).APPDATA
jest dla danych konfiguracyjnych dla użytkownika.LOCALAPPDATA
jest dla pamięci podręcznych dla poszczególnych użytkowników i dużych plików.PROGRAMDATA
służy do konfiguracji i pamięci podręcznej dla całego komputera.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.
źródło
Poniższa odpowiedź dotyczy również tego pytania podczas uruchamiania ssh z konta usługi Windows: Jenkins (usługa Windows) z Git przez SSH
źródło
Możesz podać zarówno ścieżkę do klucza, jak i nazwę pliku klucza tak (w Ubuntu). Na przykład:
źródło
GIT_SSH_COMMAND
na moim komputerze z systemem Windows.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)źródło
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
źródło
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.
źródło
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.
źródło
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.
źródło
TortoiseGit pozwala określić klucz, który ma być używany podczas klonowania repozytorium. Po prostu zaznacz „Załaduj klucz szpachlowy” i przejdź do
.ppk
pliku, jak na zrzucie ekranu:źródło
Settings... -> Network -> SSH client
jest ustawionaC:\Program Files\TortoiseGit\bin\TortoiseGitPlink.exe
Rozwiązałem powyższy problem, tworząc
zarchiwizuj i umieść:
źródło
Czytając komentarz do odpowiedzi Declana, spróbuj najpierw otworzyć wiersz polecenia (Start → Uruchom → cmd ), 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.
źródło
Używając Git Gui w wersji v0.17 w systemie Windows, kliknąłem następujące polecenie menu: Pomoc → Pokaż 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ń.
źródło
W moim systemie Windows 7 Git Gui szuka klucza RSA w
userprofile/.ssh
folderze, a dokładniejc:/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
.ssh
katalogu. Otwórz.pub
plik 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 doauthorized_keys
pliku.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!
źródło
Jeśli używasz wiersza polecenia Git dla systemu Windows, możesz wykonać następujące czynności:
Otwórz
cmd.exe
i uruchomsetx HOME c:\PATH_TO_PRIVATE_KEY
.Utwórz nowy folder,
.ssh
(jeśli nie istnieje) w środkuc:\PATH_TO_PRIVATE_KEY
i skopiuj do niego swójid_rsa
plik (klucz prywatny).Gotowy. Teraz możesz normalnie używać wiersza poleceń Git.
źródło
Moja msysgit OpenSSL / Bash Git doświadczenie (nie Putty za Plink) jest to, że kolejność wyszukiwania dla do
.ssh/
folderu jest następująca.%HOME%/.ssh/
%HOMEDRIVE%%HOMEPATH%/.ssh/
%USERPROFILE%/.ssh/
Dlatego tak wiele osób sugeruje ustawienie,
HOME
jeśli jeden z pozostałych nie jest tym, czego oczekujesz. Co ważniejsze, możesz sam sprawdzić; w celu debugowania użyjssh -v
na serwerze, który korzysta z uwierzytelniania klucza publicznego w następujący sposób:Szukaliśmy
ssh
na niejasnym dysku i żadna z poprzednich odpowiedzi nie wyjaśniała tego, co zobaczyliśmy.Czasami
%HOMEDRIVE%%HOMEPATH%
jest mapowany dysk sieciowy (npH:/
) co powoduje niepotrzebnych awarii, gdy istnieje sieć / zagadnienia fileserver, nawet kiedy%USERPROFILE%/.ssh
jestC:/Users/Username/.ssh
i ma klucze lokalnie. Ustawianie%HOME%
się%USERPROFILE%
zatrzyma go patrząc na zdalnym dysku domowego.źródło
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.
źródło
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:
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.źródło
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 .
źródło