„ssh-keygen” nie jest rozpoznawane jako polecenie wewnętrzne ani zewnętrzne

103

biegnę git push -u origin master

Mówi mi, że „Odmowa uprawnień (klucz publiczny) jest fatalna: zdalny koniec nieoczekiwanie się rozłączył”

Następnie wyszukałem w Internecie i stwierdziłem, że muszę wygenerować klucz ssh dla mojego konta na GitHub. Jednak gdy to zrobiłem, kiedy próbowałem wykonać ssh-keygen -t rsa "[email protected]", po prostu napisano, że ssh-keygen nie jest rozpoznawany. Próbowałem wykonać mkdir C: \ ssh, ale to nie zadziałało. Jeśli to pomaga, używam Ruby Rails i jestem na komputerze z systemem Windows. Czy ktoś mógłby mi pomóc?

user1567909
źródło

Odpowiedzi:

133

2012:
ssh-keygen.exejest częścią msysGit :

 C:\path\to\msysgit1.7.11\bin\ssh-keygen.exe

jeśli %PATH%obejmuje C:\path\to\msysgit1.7.11\bin\, będziesz mieć ssh-keygen.


Aktualizacja 2015:
ssh-keygen.exejest częścią Git For Windows , którego wydania obejmują PortableGit-2.4.3.1-2nd-release-kandydat-64-bit.7z

c:\path\to\PortableGit-2.4.3.1-2nd-release-candidate-64-bit\usr\bin\ssh-keygen.exe

Oznacza to, że %PATH%musi zawierać c:\path\to\PortableGit-2.4.3.1-2nd-release-candidate-64-bit\usr\bin(bez ssh-keygen.exe)

Jak wyjaśniłem wcześniej , Git dla Windows wkrótce wycofa msysgit.
W artykule „ Dlaczego jest tak, że jeśli pobierasz Git 2.0 z sieci, zawsze dostajesz pakiet instalatora 1.9.4? ”, Jak ta nowa wersja jest oparta na nowszym projekcie msys2 .

VonC
źródło
Czy bezpiecznie jest mieć ssh-keygen.exew PATH w systemie Windows? Czy muszę potem usunąć jego lokalizację?
Green
@Green właściwie jest częścią systemu Windows PATHtylko podczas sesji z git, ponieważ uruchamiasz specjalną sesję DOS z git-cmd.bat: github.com/msysgit/msysgit/blob/master/git-cmd.bat . To zakończy PATHi ustawi HOME.
VonC
Właściwie ścieżka powinna być bez ssh-keygen.exe. To znaczy u mnie działa tylko w ten sposób.
aleksander
1
@alexander Zgadzam się i zredagowałem odpowiedź, aby była bardziej widoczna.
VonC
7
dla mnie ścieżka byłaC:\Program Files (x86)\Git\usr\bin
rupinderjeet
65

Właśnie miałem ten problem i pomyślałem, że podzielę się tym, co uważałem za łatwiejszy sposób na obejście tego.

Otwórz git-bash i uruchom to samo polecenie z dodatkiem -C, ponieważ komentujesz w swoim adresie e-mail: ssh-keygen -t rsa -C "[email protected]"polecenie. Otóż ​​to.

git-bash powinien zostać zainstalowany podczas instalacji git. Jeśli nie możesz go znaleźć, sprawdź C: \ Program Files \ Git \ Git Bash

Za pierwszym razem nie udało mi się utworzyć folderu .ssh, więc musiałem otworzyć standardowy wiersz polecenia i mkdir C: \ Users \ twoja nazwa użytkownika \ .ssh

cjaypierson
źródło
15
+1 za nie sugerowanie instalacji innego pakietu oprogramowania
Chip McCormick
2
+1 jest to lepsze rozwiązanie, ponieważ nie potrzebujesz innej instalacji
guoleii
Mój klucz nie został zapisany w .sshfolderze. Został zapisany w tym samym katalogu, w którym Git Bashistnieje.
Ahmad Behzadi
51

Postępowałem poniżej w systemie Windows (z zainstalowanym Git dla Windows)

  1. Uruchom „Git Gui” (Start -> Git -> Git Gui)
  2. Kliknij Pomoc, a następnie Pokaż klucz SSH
  3. Kliknij Generuj klucz, jeśli jeszcze go nie masz

Uwaga: - powoduje to utworzenie plików kluczy w folderze profilu osobistego C: \ Users \ YourUserID \ .ssh \

wprowadź opis obrazu tutaj

Dinesh Rajan
źródło
Świetna odpowiedź - fajny, łatwy sposób na utworzenie nowego klucza SSH - TY :)
gav_aus_web
9

Znalazłem łatwe rozwiązanie, aby to naprawić:

W wierszu poleceń przejdź do katalogu git \ bin, a następnie wykonaj polecenia z tego miejsca

pirgauthier
źródło
6
W moim systemie Windows 10 plik ssh-keygen.exe został znaleziony w katalogu „git \ usr \ bin”.
Tarabass
9

Nie trzeba niczego dodawać do zmiennych środowiskowych! Po prostu otwórz git bash i wykonaj polecenie ssh-keygen tam.

Link do pobrania git bash tutaj

Bilton Tran
źródło
8

Jeśli zainstalowałeś Git i jest on zainstalowany w C: \ Program Files, wykonaj poniższe czynności

  1. Przejdź do „C: \ Program Files \ Git”
  2. Uruchom git-bash.exe, otworzy się nowe okno
  3. W nowym oknie basha uruchom "ssh-keygen -t rsa -C" "
  4. Pyta o plik, w którym zapisać klucz, nie wprowadzaj żadnej wartości - po prostu naciśnij enter
  5. To samo dotyczy hasła (dwa razy), po prostu naciśnij Enter
  6. Id_rsa i id_rsa.pub zostaną wygenerowane w twoim folderze domowym w .ssh
user3233126
źródło
4

Po prostu przejdź do heroku.bat i dodaj:

@SET PATH="D:\Program Files (x86)\Git\bin";%PATH% po @SET PATH=%HEROKU_RUBY%;%PATH%

w moim przypadku jest to D: \ Program Files (x86) \ Git \ bin, zmień to na ścieżkę, w której zainstalowałeś Git. (Właśnie zostawiłem to swoją ścieżką, żeby było jaśniej, jak to napisać)

Vlad
źródło
3

Myślę, że możesz dodać lokalizację pliku ssh-keygen.exe w zmiennej środowiskowej PATH. Postępuj zgodnie z instrukcjami: Przejdź do Mój komputer-> Kliknij prawym przyciskiem myszy-> Właściwości-> Zaawansowane ustawienia systemu-> Kliknij opcję Zmienne środowiskowe. Teraz kliknij ŚCIEŻKA, a następnie EDYTUJ. W polu wartości zmiennej przejdź na koniec i dodaj '; C: \ path \ to \ msysgit1.7.11 \ bin \ ssh-keygen.exe' (bez cudzysłowów)

Nehal J Wani
źródło
3

nie rób nic, po prostu wpisz wiersz poleceń

C:\> sh

wtedy masz taki

sh-4.4$ 
# type here 
ssh-4.4$ ssh-keygen -t rsa -b 4096 -C "[email protected]"

to powinno działać.

Osama Saeed
źródło
2

W przypadku systemu Windows możesz dodać to:

SET PATH="C:\Program Files\Git\usr\bin";%PATH%
oumina
źródło
1

Prawdopodobnie powinieneś to sprawdzić . Windows nie ma wbudowanego tego polecenia.

Benjamin Tan Wei Hao
źródło
0

Naprawiłem to, dodając tylko ssh-keygendo moich zmiennych środowiskowych.

Bartel De Brabandere
źródło
Co dokładnie zrobiliście?
Antony Hatchkins
0

dla tych, którzy nie wybiorą opcji BASH HERE. wpisz sh w cmd, a następnie powinny mieć dostęp do ssh-keygen.exe

Zeeshan Khan
źródło
0

W moim komputerze ssh-keygenbył dostępny z PowerShell.

mikeLundquist
źródło