Klucze SSH systemu Windows 10

112

Naprawdę ciężko mi jest skonfigurować i uruchomić moje klucze SSH po zainstalowaniu systemu Windows 10. Normalna metoda polega na utworzeniu ich i wrzuceniu na konto użytkownika pod .ssh. Wydaje się, że ten folder nie jest dostępny w systemie Windows 10.

Czy ktoś jeszcze na to wpadł? Potrzebuję 3 kluczy SSH do różnych repozytoriów i to naprawdę mnie powstrzymuje.

Rudenate3
źródło
2
Czy system Windows 10 ukrywa foldery z kropkami?
Leland Barton
Nie, tak też myślałem na początku, ale od czasu instalacji dodałem kilka.
Rudenate3
2
Przenieś swoje pytanie do superużytkownika . To jest poza tematem .
Martin Prikryl
3
@MartinPrikryl Ponieważ wiele z kodowania w Linuksie, korzystania z Github itp. Wymaga kluczy ssh i .ssh, twierdziłbym, że jest to bardzo tematyczne dla Stackoverflow.
haziz
2
Zgadzam się z Martinem. Pytanie programistyczne to kwestia pisania programu, a nie pytanie, które mógłby zadać programista.
Bacon Bits

Odpowiedzi:

131
  1. Otwórz wiersz poleceń systemu Windows (wpisz „cmd” w polu wyszukiwania i naciśnij Enter).
  2. Domyślnie będzie to Twój folder domowy, więc nie musisz cdwybierać innego.
  3. Rodzaj ssh-keygen
  4. Postępuj zgodnie z instrukcjami i gotowe
  5. Twoje klucze ssh powinny być przechowywane w wybranym katalogu, domyślnie: /c/Users/YourUserName/.ssh/id_rsa.pub

ps: Jeśli zainstalowałeś git z integracją bash (tak jak ja) otwórz "Git Bash" zamiast "cmd" w pierwszym kroku

Cyfrowy szał zabawy
źródło
36
wygląda świetnie, ale nie działa. nie ma poleceniassh-keygen
roberto tomás
10
z jakiegoś powodu musiałem uruchomić ssh-keygenpolecenie w powłoce git-bash zamiast w powłoce cmd.
Olian04
6
W tym celu możesz użyć Git Bash sheel lub git cmd, nie możesz użyć Windows cmd.
Pavan T
6
Od grudnia 2018 r.
Urs
1
@Suncatcher Yes. Aby zalogować się do Github, DigitalOcean itp., Potrzebujesz klucza publicznego, który znajduje się w „id_rsa.pub” w tym samym folderze. Otwórz go za pomocą edytora tekstu, takiego jak notatnik, i kopiuj i wklejaj wszędzie tam, gdzie chcesz dodać klucz SSH.
Goose
57

AKTUALIZACJA 2019-04-07: Testowałem dzisiaj z nową wersją systemu Windows 10 (kompilacja 1809, „Aktualizacja z października 2018 r.”) I nie tylko otwarty klient SSH nie jest już w wersji beta, ponieważ jest już zainstalowany. Więc wszystko, co musisz zrobić, to utworzyć klucz i ustawić klienta tak, aby używał otwartego SSH zamiast putty (pagent):

  1. otwórz wiersz polecenia (cmd)
  2. wprowadź ssh-keygeni naciśnij enter
  3. naciśnij Enter, aby przejść do wszystkich ustawień. teraz twój klucz jest zapisany w c: \ Users \ .ssh \ id_rsa.pub
  4. Otwórz swojego klienta git i ustaw go na używanie otwartego SSH

Testowałem na rozszerzeniach Git i drzewie źródłowym i działało z moim osobistym repozytorium w GitHub. Jeśli korzystasz z wcześniejszej wersji systemu Windows lub wolisz graficznego klienta dla SSH, przeczytaj poniżej.

2018-06-04 UDPATE:

W winversystemie Windows 10, począwszy od wersji 1709 (win + R i wpisz numer kompilacji), Microsoft wypuszcza wersję beta klienta i serwera OpenSSH. Aby móc utworzyć klucz, musisz zainstalować serwer OpenSSH. Aby to zrobić, wykonaj następujące kroki:

  1. otwórz menu startowe
  2. Wpisz „funkcja opcjonalna”
  3. wybierz „Dodaj opcjonalną funkcję”
  4. Kliknij „Dodaj funkcję”
  5. Zainstaluj „Otwórz klienta SSH”
  6. Zrestartuj komputer

Teraz możesz otworzyć monit, a ssh-keygenklient zostanie rozpoznany przez okna. Nie testowałem tego. Jeśli nie masz systemu Windows 10 lub nie chcesz korzystać z wersji beta, postępuj zgodnie z poniższymi instrukcjami, jak używać szpachli.


ssh-keygennie jest dostarczany z systemem Windows. Oto jak utworzyć klucz ssh za pomocą Putty:

  1. Zainstaluj kit
  2. Otwórz PuttyGen
  3. Sprawdź typ klucza i liczbę bajtów do użyciaParametry PuttyGen
  4. Najedź myszą na pasek postępu generowanie klucza za pomocą myszy
  5. Teraz możesz zdefiniować hasło i zapisać klucze publiczny i prywatny klucz utworzony okno dialogowe

W przypadku kluczy openssh wymaganych jest jeszcze kilka kroków:

  1. skopiuj tekst z pola „Klucz publiczny do wklejania” i zapisz go jako „id_rsa.pub”
  2. Aby zapisać klucz prywatny w formacie openssh, przejdź do Conversions-> Export OpenSSH key (jeśli nie zdefiniowałeś klucza dostępu, poprosi Cię o potwierdzenie, że nie chcesz klucza) menu do konwersji klucza do formatu OpenSSH
  3. Zapisz jako „id_rsa”

Teraz, gdy klucze są zapisane. Uruchom pagenti dodaj tam klucz prywatny (plik ppk w formacie Putty) okno dialogowe kluczy stronicowanych

Pamiętaj, że pagentmusi być uruchomiony, aby uwierzytelnianie działało

franksands
źródło
6
ssh-keygen jest dołączony do systemu Windows 10, nie wiem, która wersja, w
sekcji
1
@sebbu Rzeczywiście, teraz w systemie Windows 10 możesz zainstalować wersję beta serwera Open SSH w „Zarządzaj funkcjami opcjonalnymi”, a to da ci ssh-keygen wraz z kilkoma innymi rzeczami. Ale nie jest zainstalowany i nie jest łatwo go znaleźć. Zaktualizuję odpowiedź.
franksands
1
Pagent @KarlMorrison to GUI do przeprowadzania uwierzytelniania ssh. zwykle znajduje się w menu Start.
franksands
1
Nie musisz instalować serwera Open SSH. Funkcja klienta Open SSH obejmuje ssh-keygen.
Onots
1
@Onots Testowałem z nową wersją systemu Windows 10 (aktualizacja z października 2018) i nie tylko otwarty klient ssh jest wystarczający, ale jest już zainstalowany: D Zaktualizuję moją odpowiedź
franksands
31

WINDOWS: Jeśli masz zainstalowany program git dla systemu Windows, przejdź do jego folderu.

wprowadź opis obrazu tutaj

Zajrzyj do katalogu bin. Jest plik sh.exe. Uruchom to.

wprowadź opis obrazu tutaj

Następnie wpisz:

ssh-keygen -t rsa -C "Twój e-mail tutaj"

Postępuj zgodnie z instrukcjami, a następnie wpisz:

cat ~ / .ssh / id_rsa.pub | spinacz

Kopiuje klucz do schowka. Teraz możesz wkleić ten klucz publiczny po stronie serwera.

Daniel
źródło
13
  1. Otwórz wiersz poleceń systemu Windows (wpisz „cmd” w polu wyszukiwania i naciśnij Enter).
  2. Domyślnie będzie to Twój folder domowy, więc nie musisz cdwybierać innego.
  3. Rodzaj mkdir .ssh
aruanoc
źródło
9

Ostrzeżenie: Jeśli zapisujesz klucze w C: /User/username/.ssh (miejsce domyślne), pamiętaj, aby gdzieś utworzyć kopię zapasową kluczy (np. Menedżera haseł).

Po ostatniej aktualizacji systemu Windows 10 (wersja 1607) mój folder .ssh był pusty. Tutaj zawsze były moje klucze, ale system Windows zdecydował się je usunąć podczas aktualizacji.

Na szczęście wykonałem kopię zapasową moich kluczy ... Ale ... Założę się, że niektórzy ludzie będą dziś przywracać swoje komputery.

Andrzej
źródło
Więc gdzie większość aplikacji oczekuje, że będziesz przechowywać klucze?
wcochran
3
prawdopodobnie w folderze, który system Windows losowo usuwa podczas aktualizacji systemu Windows 10?
Andrew,
8

Korzystam z systemu Microsoft Windows 10 Pro, wersja 10.0.17763, kompilacja 17763 i łatwo widzę mój folder .ssh w C: \ Users \ jrosario \ .ssh bez konieczności edytowania uprawnień lub czegokolwiek (chociaż w Eksploratorze plików wybrałem „Pokaż ukryte pliki, foldery i dyski”): wprowadź opis obrazu tutaj

Klucze są przechowywane w pliku tekstowym o nazwie znane_hosty, który wygląda mniej więcej tak: wprowadź opis obrazu tutaj

ShieldOfSalvation
źródło
5

Znalazłem znaczący wyjątek, że w systemie Windows 10, używając opisanej trasy, zapisałem pliki do folderu tylko wtedy, gdy nazwy plików nie zostały określone w generatorze ssh-keygen.

nadanie niestandardowej nazwy klucza spowodowało, że pliki zawierające klucze publiczne i prywatne RSA nie zostały zapisane w folderze.

  • Otwórz wiersz poleceń systemu Windows
  • Rodzaj ssh-keygen
  • Pozostaw nazwę pliku pustą, po prostu naciśnij Return,
  • Ustaw swoje hasło
  • Wygeneruj pliki kluczy. Teraz będą istnieć. i być przechowywane wc:/Users/YourUserName/.ssh/

( przy użyciu wiersza poleceń administratora i systemu Windows 10 Pro )

Jaskółka oknówka
źródło
@Braineeee negatywne. To NIE nadpisze twoich kluczy, jeśli klucze aktualnie istnieją w miejscu docelowym, to w oknie wiersza poleceń zapyta cię, czy chcesz nadpisać te klucze. Inne klucze w tym samym folderze nie są stosowane . Wiem, że po przeczytaniu twojego komentarza wykonałem test i stwierdziłem, że tak jest.
Martin
Czy kiedykolwiek domyśliłeś się, dlaczego?
Damainman
@Damainman niestety nie miałem jeszcze okazji tego więcej zbadać, więc nie:-/
Martin
1
Dzięki @Martin, uratowałeś mi dzień. Jestem w stanie stworzyć pliki o różnych nazwach. Musimy zapewnić separator ścieżek w sposób uniksowy! Poniższe zadziałały dla mnie. ssh-keygen -t ed25519 -C "My Github Key" Wprowadź plik, w którym ma zostać zapisany klucz (C: \ Users \ bilix / .ssh / id_ed25519): c: \ users \ bilix \ .ssh \ id_ed25519_github
Prakash P
@PrakashP cieszy się, że mogę pomóc!
Martin
4

Utwórz klucz prywatny / publiczny:

  1. Otwórz zacisk w górę ( git bash, PowerShell, cmd.exeitd.)
  2. Wpisz ssh-keygen
  3. Naciśnij Enter, aby zapisać domyślny plik ( ~/.ssh/id_rsa)
  4. Naciśnij Enter, aby ustawić domyślne hasło (bez hasła)
  5. Ponownie naciśnij klawisz Enter
  6. Spójrz na wyjście i upewnij się, że RSAjest 3072lub powyżej

Utworzyłeś parę kluczy prywatny / publiczny.

W przypadku GIT klucz musi mieć siłę 2048, musi znajdować się w .sshkatalogu użytkowników i mieć nazwę id_rsai id_rsa.pub. Wklejając klucze w dowolnym miejscu, upewnij się, że używasz programu, który nie dodaje nowych linii, takich jak VIM.

K - Toksyczność w SO rośnie.
źródło
2

W końcu udało mi się to uruchomić, uruchamiając wiersz poleceń z opcją „Uruchom administratora”, mimo że byłem już administratorem i mogłem ręcznie utworzyć katalog

adelaidedave
źródło
1

Jeśli masz system Windows 10 z klientem OpenSSH, możesz wygenerować klucz, ale będziesz mieć problem z skopiowaniem go do docelowego systemu Linux, ponieważ polecenie ssh-copy-id nie jest częścią zestawu narzędzi klienta.

Mając ten problem, napisałem małą funkcję PowerShell, aby rozwiązać ten problem, którą dodajesz do swojego profilu.

function ssh-copy-id([string]$userAtMachine, [string]$port = 22) {   
    # Get the generated public key
    $key = "$ENV:USERPROFILE" + "/.ssh/id_rsa.pub"
    # Verify that it exists
    if (!(Test-Path "$key")) {
        # Alert user
        Write-Error "ERROR: '$key' does not exist!"            
    }
    else {  
        # Copy the public key across
        & cat "$key" | ssh $userAtMachine -p $port "umask 077; test -d .ssh || mkdir .ssh ; cat >> .ssh/authorized_keys || exit 1"      
    }
}

Możesz uzyskać sedno tutaj

Krótko o tym napiszę tutaj

Rad
źródło
0

Możesz także spróbować (w systemie Windows 10 Pro) uruchomić Powershell jako administrator i wpisać ssh-keygen -t rsa -b 4096 -C "[email protected]"

chavy
źródło