Tortoisegit prosząc o hasło


84

Właśnie zacząłem pracować nad Gitem. Używam Windows 7 i zainstalowałem msysgit (1.7.8) i Tortoisegit (1.7.6). Repozytorium jest tworzone na serwerze Linux dostępnym przez sieć LAN. Problem, przed którym stoję, polega na tym, że nie jestem w stanie sklonować repozytorium za pomocą Tortoisegit, prosi o hasło i nie jestem pewien, o jakie hasło prosi. W tym samym czasie mogłem sklonować repozytorium za pomocą Git Gui i wykonać wszystkie operacje. Czy ktoś może mi pomóc w zrozumieniu, dlaczego Tortoisegit pyta o hasło, podczas gdy Git Gui tego nie robi. Próbowałem odinstalować Git i Tortoisegit, a następnie zainstalować ponownie, ale bez powodzenia.

Błąd Tortoisegit


Twój serwer git używa uwierzytelniania pubkey?
Felix Yan

Na TYM SAMYM klonie repozytorium, co robi TortoiseGit i co robi Git GUI?
manojlds

2
Kiedy klikniesz prawym przyciskiem myszy na Tortoise Git, kliknij Ustawienia. W Git jest link -> Remote, kliknij go. Z listy zdalnej kliknij źródło. Po prawej stronie zobaczysz URL. Zamiast Twojej nazwy użytkownika pod adresem URL wpisujesz: nazwa użytkownika: <twoje hasło>. Wreszcie, kiedy wykonasz operację git z Tortoise Git, zobaczysz, że nigdy nie pyta cię o hasło.
kamaci

1
Czy używasz http URI zamiast SSH? To był mój problem
gość z CAD

Dla "specjalnych" z nas (w tym mnie) pamiętaj, aby usunąć bit 'git clone' z przodu polecenia przed wklejeniem go do okna adresu URL okna Tortoise Git Clone - w przeciwnym razie otrzymasz podobne problemy
icc97

Odpowiedzi:


131

Mój kolega rozwiązał problem. Kroki:

  1. Kliknij prawym przyciskiem myszy -> TortoiseGit -> Ustawienia -> Sieć
  2. Klient SSH wskazywał na C:\Program Files\TortoiseGit\bin\TortoisePlink.exe
  3. Zmieniono ścieżkę do C:\Program Files (x86)\Git\bin\ssh.exe

Alternatywna ścieżka: C:\Users\...\AppData\Local\Programs\Git\usr\bin\ssh.exe


działa dla mnie z wersją żółwia 1.8.3 ... ten problem doprowadził mnie do szału !! na windowsXP @ 32-bitowy tortoisegit działa tylko z c: \ programmi \ git \ bin \ ssh.exe na Windows7 @ 64 działa dobrze z toirtoiseplink.exe (domyślnie)
Evilripper

Na moim komputerze z systemem Windows 8 skierowanie klienta SSH do pliku msysGit ssh.exe działało, gdy zapytanie o hasło w ogóle się nie pojawiło. Inny problem, ale to rozwiązanie jest zdecydowanie warte wypróbowania dla kogoś, kto ma problemy z SSH z TortoiseGit
Icermann

1
Mi to nie pomogło (przynajmniej łącząc się z GitHubem nie próbowałem innych repozytoriów).
Suma

2
Dzięki, działało idealnie. Chociaż moje ssh.exekłamstwa znajdują się w moim katalogu użytkownikaC:\Users\...\AppData\Local\Programs\Git\usr\bin
ppasler

7
Jak wspomniał @ppasler, ssh.exe znajduje się teraz w C: \ Program Files (x86) \ Git \ usr \ bin \ ssh.exe lub we wspomnianej lokalizacji, w zależności od instalacji.
Vlad Schnakovszki

33

Jeśli musisz użyć nazwy użytkownika / hasła, istnieje znacznie prostsze rozwiązanie niż obecna odpowiedź nr 2:

Right-click --> Tortoise Git --> Settings --> Git --> Credential --> Choose "Wincred, all Windows users" --> Hit apply

Następnym razem, gdy wprowadzisz hasło do repozytorium, zostanie ono automatycznie zapisane.


Jeśli używasz repozytorium, które wymaga kluczy SSH zamiast nazwy użytkownika / hasła (co brzmi jak oryginalny problem OP) , musisz

  1. Otwórz klucz SSH w PuTTY gen (instaluje się razem z Tortoise Git)
  2. W PuTTY gen zapisz klucz jako klawisz PuTTY.
  3. W repozytorium Right-click --> Tortoise Git --> Settings --> Git --> Remotes. Znajdź pilota (zwykle `` źródło ''), a następnie załaduj klucz PuTTY z kroku 2.

W moim przypadku działa to tylko wtedy, gdy używam nazwy użytkownika. Nie działa, gdy wpisujesz adresy e-mail użytkowników, więc miej to na uwadze.
Razze

3
to była najkrótsza i najjaśniejsza odpowiedź, dziękuję.
Alphas Supremum

Od zawsze szukałem tej dokładnej odpowiedzi!
NielW

23

Aby to zrobić bez kluczy ...

Kliknij prawym przyciskiem myszy na swoim folderze
Wybierz tortoiseGit-> ustawienia-> Git-> Remote
Select origin (lub cokolwiek, co oznaczyłeś głównym pilotem)

Pod adresem URL użyj tego formatu.

Https: // NAZWA UŻYTKOWNIKA: PASSWORD @ URL

Gdzie NAZWA UŻYTKOWNIKA to Twoja nazwa użytkownika
: dwukropek oddziela nazwę użytkownika i hasło i musi tam być.
HASŁO to Twoje hasło
@ oddziela dane uwierzytelniające z Twoim adresem
URL URL to adres URL, którego użyjesz do połączenia się z zasobem .git

Podziękowania dla Kamaci


3
To rozwiązanie działa również z kluczem. Clone https: // nazwa_użytkownika @ URL i jesteś w porządku.
Orace

2
Tak, z wyjątkiem tego, że nie rób tego, ponieważ kiedy wykonujesz scalanie, TortoiseGit jest skłonny umieścić cały adres URL w komunikacie zatwierdzenia!
mwardm

To idealne rozwiązanie. Ale czy istnieje sposób, aby ukryć hasło, ponieważ jest w postaci zwykłego tekstu.
Amit Kumar

1
Co jeśli hasło zawiera znak @?
Hammad Dar,

Użyłem tej odpowiedzi, ponieważ mam mingw64 i otrzymuję ten dziennik: Pomijanie wiersza polecenia „C: \ Program Files \ Git \ mingw64 \ bin \ .. \ usr \ bin \ bash.exe" '(' C: \ Program Files \ Git \ mingw64 \ bin \ .. \ usr \ bin \ bash.exe 'nie znaleziono) Potrzebny jest prawidłowy wiersz poleceń; Edytuj odpowiednio zasoby ciągów (3x) błąd: nie udało się wykonać skryptu zachęty (kod zakończenia 1)
RW4

14

Zapisywanie nazwy użytkownika i hasła z TortoiseGit

Zapisywanie danych logowania w TortoiseGit jest całkiem proste. Oszczędza konieczności wpisywania nazwy użytkownika i hasła za każdym razem, gdy wykonujesz pociągnięcie lub pchnięcie.

  1. Utwórz plik o nazwie _netrc z następującą zawartością:

    maszyna github.com
    zaloguj swoje
    hasło logowania yourpassword

  2. Skopiuj plik do C: \ Users \ (lub innej lokalizacji; tak się składa, że ​​jest tam, gdzie go umieściłem)

  3. Przejdź do wiersza poleceń, wpisz setx home C: \ Users \

Uwaga: jeśli używasz czegoś wcześniejszego niż Windows 7, polecenie setx może nie działać dla Ciebie. Zamiast tego użyj set i dodaj zmienną środowiskową home do systemu Windows za pomocą ustawień zaawansowanych w sekcji Mój komputer.

KREDYT NA: http://www.munsplace.com/blog/2012/07/27/saving-username-and-password-with-tortoisegit/


1
działa po prostu ładnie, ale czy istnieje sposób na zaszyfrowanie zwykłego hasła? Czułem się nieswojo, przechowując hasło github w zwykłym pliku tekstowym.
Dio Phung

@DioPhung Pomyśl o tym, co właśnie powiedziałeś. Jeśli hasło jest zaszyfrowane, musisz teraz zapamiętać (nowe) hasło do korzystania z hasła. Jeśli nie musisz pamiętać hasła, dobrze jest, jak nie mieć hasła (z punktu widzenia lokalnego zagrożenia). Albo chcesz wygody, albo bezpieczeństwa.
Camilo Martin,

1
@DioPhung Jeśli boisz się lokalnych administratorów, mogą z łatwością zainstalować keyloggera. Lokalny administrator może robić z Twoimi danymi, co tylko zechce, i jako takie, każde zabezpieczenie przed nimi byłoby zabezpieczeniem poprzez zaciemnienie (nawet narzędzia i sztuczki, których używają banki, nie mogą ochronić Cię przed kompetentnym i zdeterminowanym lokalnym administratorem, a oni staraj się mocno). Jeśli chodzi o haszysz, co masz na myśli? Hash jest nieodwracalny. A jeśli szyfrujesz przy użyciu samego hasła, nadal będziesz musiał je wpisywać za każdym razem ... Więc to to samo, co nie szyfrowanie go w pierwszej kolejności.
Camilo Martin,

1
Szyfrowanie @CamiloMartin nie wymaga hasła; istnieje wiele sposobów uwierzytelniania w systemie, które mogą być wygodniejsze niż hasło. Bezpieczeństwo to nie wszystko lub żadne.
Adam

1
Chociaż to rozwiązanie jest możliwe, lepszym pomysłem jest przechowywanie hasła w Windows PasswordVault . Ta możliwość była dostępna w TortoiseGit od marca 2013 roku poprzez implementację API git-credential-store . Prawdopodobnie jest też łatwiej: From within repo → Context-click → TortoiseGit → Settings → Git → Credential → wincred → OKi gotowe. Napisałem pełną odpowiedź na to pytanie dla zainteresowanych.
Adam

5

Jednym ze sposobów na to jest

  • wygeneruj parę kluczy za pomocą PuttyGen (lub zaimportuj do .ppk, jeśli masz już klucz)
  • załaduj klucz prywatny do peagenta
  • zaimportuj klucz publiczny do serwera gitosis (podaj swój klucz publiczny swojemu administratorowi)
  • a następnie użyj Plink jako klienta SSH

plink działa natywnie z peagentem, aby pobrać załadowany klucz.

można znaleźć plink.exe wraz z peagentem i innymi dodatkami w standardowej dystrybucji szpachli

aby go użyć przejdź do:

Ustawienia TortoiseGit -> Sieć -> Klient SSH.

Domyślnie zawiera ścieżkę do TortoisePlink.exe, zamiast ścieżki do plink.exe

Alternatywnie możesz użyć ssh (.exe) w dystrybucji msys (git), ale wtedy nie możesz użyć klucza prywatnego w kombinacji formatu .ppk / Peagent. Musisz albo wyeksportować swój klucz do formatu OpenSSH przez PuttyGen, albo utworzyć parę kluczy za pomocą ssh-keygen.


Co masz na myśli mówiąc „klient SSH zamiast TortoisePlink wskaż, aby połączyć”? Gdzie prawdopodobnie znajduje się ten program SSH?
Mikaël Mayer

przepraszam za brak interpunkcji, myślę, że to jest źródłem nieporozumień. Zaktualizowałem odpowiedź
mzzzzb

Nie musisz nic zmieniać w ustawieniach. Po prostu podaj prywatny klucz Putty podczas klonowania repozytorium przez SSH i gotowe. Pamiętaj, aby wprowadzić punkt końcowy SSH w oknie klonowania, a NIE HTTPS.
MoonStom

4

Aby zautomatyzować uwierzytelnianie, użyj:

  1. Klucze SSH, jak już wskazali inni, lub
  2. wbudowany pomocnik poświadczeń.

Oczywiście nie przechowuj hasła w pliku tekstowym, chyba że repozytorium nie jest ważne.

TortoiseGit> 1.8.1 instaluje pomocnika git-credential-winstore, który zapewnia lokalny interfejs API do uzyskiwania dostępu i przechowywania danych logowania w istniejącym, lokalnym magazynie poświadczeń systemu Windows .

Możesz zobaczyć zapisane poświadczenia, przechodząc do Panelu sterowania → Konta użytkowników → Menedżer poświadczeń i wybierając „Poświadczenia systemu Windows”. Wpisy rozpoczynające się od „git:” pochodzą z git-credential-winstore.

Możesz skonfigurować wincred na repozytorium przez:

(GUI)

  1. Przejdź do repozytorium w Eksploratorze plików.
  2. Kliknij prawym przyciskiem myszy → TortoiseGit → Ustawienia → Git → Credential
  3. Pomocnik poświadczeń: wincred - tylko to repozytorium
  4. Przy następnym uwierzytelnieniu w repozytorium poświadczenia zostaną zapisane.

(CLI, POSH)

  1. cmdkey /add:git:https://USERNAME@github.com /user:USERNAME /pass:PASSWORD
  2.  

    @"
    [credential]
            helper = wincred
    "@ | Out-File -FilePath $repoRoot\.git\config -Append
    

Możesz wyświetlić wszystkie poświadczenia przechowywane dla repozytoriów za pomocą cmdkey /list:git:*
Po zapisaniu hasła nie są wyświetlane przez cmdkey ( http://ss64.com/nt/cmdkey.html )

Aby wyświetlić wszystkie poświadczenia z hasłami, musisz użyć interfejsu API systemu Windows . W przypadku PowerShell jest CredMan :

. .\CredMan.ps1
.\CredMan.ps1 -ShoCred

4

Miałem ten sam problem. Moje środowisko to Windows 10 z TortoiseGit 2.3.0.0 i git w wersji 2.11.0.windows.1

Następujące rozwiązania rozwiązały mój problem:

  • Kliknij prawym przyciskiem myszy -> TortoiseGit -> Ustawienia -> Sieć
  • Zaktualizuj klienta SSH do C: \ Program Files \ Git \ usr \ bin \ ssh.exe

wprowadź opis obrazu tutaj


3

Adres URL i tytuł okna TortoisePlink wskazują, że żółw próbuje użyć ssh jako protokołu transportowego. git obsługuje więcej niż jeden protokół transportowy, w tym dostęp do systemu plików i dostęp ssh. W swoim pytaniu opisujesz, że chcesz uzyskać dostęp do zdalnego repozytorium przez dostęp do systemu plików. W takim przypadku zdalny adres URL powinien wyglądać mniej więcej tak file://server/path/to/repo. Sprawdź ponownie adres URL zdalnego repozytorium.


3

Co zrobiłem, aby to naprawić (Windows):

  1. Otwórz PuttyGen zaimportuj mój klucz ssh i przekonwertuj go na klucz putty, zapisz części publiczne i prywatne w folderze .ssh (% userprofile% .ssh)
  2. Otwórz Putty i przejdź do Connection-> SSH-> Auth, a następnie ustaw tam plik klucza prywatnego.
  3. Wróć do sesji, wybierz Ustawienia domyślne i naciśnij Zapisz.
  4. Teraz spróbuj ponownie sklonować, a zostaniesz poproszony o podanie hasła do klucza ssh, wprowadź je i powinno działać.

2

Odpowiedź firmy Pramodtech przestała działać dla mnie z obecną wersją oficjalnego klienta Windows Git. Przechowuje plik wykonywalny ssh w Git\usr\binzamiastGit\bin teraz (od wersji 2.5 wydanej w sierpniu 2015 r.).

Więc idź do TortoiseGit > Settings > Network i zmień ścieżkę klienta SSH na:

C:\Program Files\Git\usr\bin\ssh.exe (lub jakakolwiek jest ścieżka do twojej instalacji Git)

wprowadź opis obrazu tutaj



1

Ponieważ żadne z przedstawionych tutaj rozwiązań nie zadziałało, a po wielu rozczarowaniach z rozwiązaniami, które znalazłem online, w końcu udało mi się to naprawić na moim komputerze.

Nie wiem, kiedy i jak skonfigurowałem mój kit TortoiseGit, aby zawsze używał jednego określonego klucza, i oczywiście powodowało to wszystkie problemy, gdy próbowałem połączyć się z innym serwerem za pomocą nowej pary kluczy.

Jak więc rozwiązać problem i jak sprawdzić, czy rzeczywiście masz ten sam problem co ja:

  1. Pobierz plink.exena swój komputer stąd
  2. Otwórz wiersz polecenia systemu Windows w tym samym katalogu, w którym pobrałeś plik plink.exe
  3. Uruchom to polecenie: plink -v <path_to_your_git_clone_repo_link>
  4. Spójrz na wynik i zobacz, czy masz podobny wiersz Reading private key file "C:\Path\To\Some\privateKey.ppk"
  5. Jeśli widzisz taką linię i nie jest to plik klucza szpachlowego, którego chcesz użyć, po prostu przejdź i zmień nazwę / usuń / przenieś ten plik, aby plink nie mógł go załadować następnym razem
  6. Po zmianie nazwy problematycznego pliku wszystko powinno działać zgodnie z oczekiwaniami, jeśli uruchomisz polecenie z punktu 3. powinieneś zobaczyć, że plink nie może teraz załadować tego ppkpliku, a następnie powinien wypisać coś podobnego Pageant is running. Requesting keys.i faktycznie tego chcieliśmy

To jest to, jeśli ktoś wie, jak mogę wyłączyć ten „globalny domyślny klucz szpachlówki”, daj mi znać w komentarzach, a zaktualizuję tę odpowiedź o informacje.


1

Proszę nie adres URL zdalnego źródła repozytorium może powodować ten problem. Miałem stare repozytorium, które działało idealnie, i nowe, które właśnie sklonowałem i pytało mnie o hasło.

Po porównaniu informacji w Settings > Git > Remote > Urlzobaczyłem, że ten, który działał, miał:

git@github.com:githubAccount/repoName.git

Nowy, który nie działał, miał rozszerzenie https adres.

Zobacz również zrzut ekranu poniżej.

wprowadź opis obrazu tutaj


1

Wiersz poleceń Tortoise GIT DOS przestał pytać o moje hasło, gdy umieściłem mój prywatny i publiczny klucz w C: \ Users \ .ssh dir. Korzystam z systemu Windows 7.


1

Miałem ten sam problem. W moim przypadku nie było hasła, które mógłbym tam wprowadzić. Połączenie zostało skonfigurowane jako SSH, ale nie zdefiniowano żadnych kluczy dla repozytorium.

Sprawdź: konfiguracja TortoiseGIT SSH . Te instrukcje dotyczą cloudforge, ale w przypadku innych usług musisz zrobić to samo, po prostu podaj swój klucz publiczny dostawcy repozytorium git.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.