Chiavi SSH di Windows 10


112

Sto attraversando un periodo davvero difficile per ottenere le mie chiavi SSH attive e funzionanti dopo l'installazione di Windows 10. Il metodo normale è crearlo e lanciarlo nell'account dell'utente sotto .ssh. Questa cartella non sembra essere disponibile in Windows 10.

Qualcun altro si imbatte in questo? Ho bisogno di 3 chiavi SSH per diversi repository e questo mi sta davvero trattenendo.


2
Windows 10 nasconde le cartelle di punti?
Leland Barton

No, è quello che avevo pensato anche all'inizio, ma ne ho aggiunti alcuni dall'installazione.
Rudenate3

2
Sposta la tua domanda in Super User . È fuori tema qui.
Martin Prikryl

3
@MartinPrikryl Poiché molta codifica su Linux, l'uso di Github, ecc. Coinvolge le chiavi ssh e .ssh, direi che è molto in tema per Stackoverflow.
Haziz

2
Sono d'accordo con Martin. Una domanda di programmazione è una domanda sulla scrittura di un programma, non una domanda che un programmatore potrebbe porre.
Bacon Bits

Risposte:


130
  1. Apri la riga di comando di Windows (digita "cmd" nella casella di ricerca e premi invio).
  2. L'impostazione predefinita sarà la tua cartella Inizio, quindi non è necessario che tu ne abbia cdun'altra.
  3. genere ssh-keygen
  4. Segui le istruzioni e sei a posto
  5. Le tue chiavi ssh dovrebbero essere archiviate nella directory scelta, l'impostazione predefinita è: /c/Users/YourUserName/.ssh/id_rsa.pub

ps: se hai installato git con l'integrazione di bash (come me) apri "Git Bash" invece di "cmd" al primo passaggio


36
sembra fantastico tranne che non funziona. non c'è nessun comandossh-keygen
roberto tomás

10
per qualche motivo ho dovuto eseguire il ssh-keygencomando nella shell git-bash invece di cmd-shell.
Olian04

6
Per questo puoi usare Git Bash sheel o git cmd, non puoi usare Windows cmd.
Pavan T

6
A partire da dicembre 2018, ha funzionato immediatamente in Win 10 per me
Urs

1
@Suncatcher Sì. Per accedere a Github, DigitalOcean, ecc. È necessaria la chiave pubblica che si trova in "id_rsa.pub" nella stessa cartella. Aprilo con un editor di testo come Blocco note e copia e incolla ovunque sia necessario aggiungere la tua chiave SSH.
Oca

57

AGGIORNAMENTO 2019-04-07: Ho provato oggi con una nuova versione di Windows 10 (build 1809, "aggiornamento di ottobre 2018") e non solo il client SSH aperto non è più in beta, poiché è già installato. Quindi, tutto ciò che devi fare è creare la chiave e impostare il tuo client per usare SSH aperto invece di putty (pagent):

  1. apri prompt dei comandi (cmd)
  2. entrare ssh-keygene premere invio
  3. premere invio per tutte le impostazioni. ora la tua chiave è salvata in c: \ Users \ .ssh \ id_rsa.pub
  4. Apri il tuo client git e impostalo per utilizzare SSH aperto

Ho provato su Git Extensions e Source Tree e ha funzionato con il mio repository personale in GitHub. Se utilizzi una versione precedente di Windows o preferisci un client grafico per SSH, leggi di seguito.

04/06/2018 UDPATE:

Su Windows 10, a partire dalla versione 1709 (win + R e digita winverper trovare il numero di build), Microsoft sta rilasciando una beta del client e del server OpenSSH. Per poter creare una chiave, dovrai installare il server OpenSSH. Per fare questo segui questi passaggi:

  1. aprire il menu di avvio
  2. Digita "funzione opzionale"
  3. seleziona "Aggiungi una funzione opzionale"
  4. Fai clic su "Aggiungi una funzione"
  5. Installa "Open SSH Client"
  6. Riavvia il computer

Ora puoi aprire un prompt ssh-keygene il client verrà riconosciuto da Windows. Non l'ho testato. Se non hai Windows 10 o non vuoi usare la beta, segui le istruzioni qui sotto su come usare lo stucco.


ssh-keygennon viene fornito con Windows. Ecco come creare una chiave ssh con Putty:

  1. Installa lo stucco
  2. Apri PuttyGen
  3. Controlla il tipo di chiave e il numero di byte da utilizzareParametri PuttyGen
  4. Muovi il mouse sulla barra di avanzamento generazione della chiave con l'input del mouse
  5. Ora puoi definire una passphrase e salvare le chiavi pubblica e privata finestra di dialogo creata con chiave

Per le chiavi openssh, sono necessari alcuni passaggi in più:

  1. copia il testo dalla casella di testo "Chiave pubblica per incollare" e salvalo come "id_rsa.pub"
  2. Per salvare la chiave privata nel formato openssh, vai su Conversioni-> Esporta chiave OpenSSH (se non hai definito una passkey ti verrà chiesto di confermare che non desideri una passkey) menu per convertire la chiave nel formato OpenSSH
  3. Salvalo come "id_rsa"

Ora che le chiavi sono state salvate. Avvia pagente aggiungi la chiave privata lì (il file ppk nel formato di Putty) finestra di dialogo tasti pagent

Ricorda che pagentdeve essere in esecuzione affinché l'autenticazione funzioni


6
ssh-keygen è incluso in Windows 10, non so quale versione, in "Gestisci funzionalità opzionali"
sebbu

1
@sebbu In effetti, ora su Windows 10 puoi installare una beta di Open SSH Server in "Gestisci funzionalità opzionali" e questo ti porterà ssh-keygen insieme ad alcune altre cose. Ma non viene installato e non è esattamente facile da trovare. Aggiornerò la mia risposta.
franksands

1
@KarlMorrison pagent è la gui per eseguire l'autenticazione ssh. di solito si trova nel menu di avvio.
franksands

1
Non è necessario installare Open SSH Server. La funzione Open SSH Client include ssh-keygen.
Onots

1
@Onots ho provato con una nuova versione di Windows 10 (aggiornamento di ottobre 2018) e non solo il client ssh aperto è sufficiente, ma viene già installato: D Aggiornerò la mia risposta
franksands

31

WINDOWS: se hai installato git per Windows, vai nella sua cartella.

inserisci qui la descrizione dell'immagine

Cerca nella directory bin. C'è un file sh.exe. Esegui quello.

inserisci qui la descrizione dell'immagine

Quindi digita:

ssh-keygen -t rsa -C "la tua email qui"

Segui le istruzioni e poi digita:

gatto ~ / .ssh / id_rsa.pub | clip

Copia la chiave negli appunti. Ora puoi incollare quella chiave pubblica sul lato server.


13
  1. Apri la riga di comando di Windows (digita "cmd" nella casella di ricerca e premi invio).
  2. L'impostazione predefinita sarà la tua cartella Inizio, quindi non è necessario che tu ne abbia cdun'altra.
  3. genere mkdir .ssh

9

Attenzione: se stai salvando le tue chiavi in C: /User/username/.ssh (la posizione predefinita), assicurati di eseguire il backup delle chiavi da qualche parte (ad esempio il tuo gestore di password).

Dopo l'ultimo aggiornamento di Windows 10 (versione 1607), la mia cartella .ssh era vuota. Qui è dove sono sempre state le mie chiavi, ma Windows ha deciso di eliminarle durante l'aggiornamento.

Per fortuna avevo eseguito il backup delle mie chiavi ... Ma ... scommetto che alcune persone ripristineranno i loro PC oggi.


Quindi dove la maggior parte delle app si aspetta che memorizzi le tue chiavi?
wcochran

3
probabilmente nella cartella che Windows elimina casualmente durante l'aggiornamento di Windows 10?
Andrew

8

Sto eseguendo Microsoft Windows 10 Pro, versione 10.0.17763 Build 17763 e vedo facilmente la mia cartella .ssh in C: \ Users \ jrosario \ .ssh senza dover modificare le autorizzazioni o altro (sebbene in Esplora file, ho selezionato "Mostra file, cartelle e unità nascosti"): inserisci qui la descrizione dell'immagine

Le chiavi sono archiviate in un file di testo denominato known_hosts, che somiglia più o meno a questo: inserisci qui la descrizione dell'immagine


5

Ho trovato un'eccezione notevole che in Windows 10, utilizzando il percorso descritto, scriveva i file nella cartella solo se i nomi dei file non erano specificati nel generatore ssh-keygen.

assegnando un nome di chiave personalizzato, i file contenenti le chiavi pubblica e privata RSA non venivano scritti nella cartella.

  • Apri la riga di comando di Windows
  • genere ssh-keygen
  • Lascia vuoto il nome del file, premi semplicemente Invio,
  • Imposta la tua passphrase
  • Genera i tuoi file chiave. Ora esisteranno. ed essere conservato inc:/Users/YourUserName/.ssh/

( utilizzando la riga di comando dell'amministratore e Windows 10 Pro )


@ Braineeee negative. Questo NON sovrascriverà le tue chiavi, se le chiavi esistono attualmente nella destinazione, allora nella finestra della riga di comando ti chiederà se desideri sovrascrivere queste chiavi. Le altre chiavi nella stessa cartella non vengono modificate . So che dopo aver letto il tuo commento ho fatto un giro di prova e ho scoperto che è così.
Martin

Hai mai capito perché?
Damainman

@Damainman purtroppo non ho ancora avuto la possibilità di esplorarlo di più, quindi no:-/
Martin

1
Grazie @Martin mi hai salvato la giornata. Sono in grado di creare file con nomi diversi. Dobbiamo fornire il separatore di percorso in modo unix! Quanto segue ha funzionato per me. ssh-keygen -t ed25519 -C "My Github Key" Immettere il file in cui salvare la chiave (C: \ Users \ bilix / .ssh / id_ed25519): c: \ users \ bilix \ .ssh \ id_ed25519_github
Prakash P

@PrakashP felice di aiutarti!
Martin

4

Crea chiave privata / pubblica:

  1. Aperta terminale up ( git bash, PowerShell, cmd.exeetc.)
  2. Digitare ssh-keygen
  3. Premere Invio per salvare il file predefinito ( ~/.ssh/id_rsa)
  4. Premere Invio per la passphrase predefinita (nessuna passphrase)
  5. Premere nuovamente invio
  6. Guarda l'output e assicurati che RSAsia 3072o superiore

Hai ora creato una coppia di chiavi pubblica / privata.

Per GIT la chiave deve avere una forza di 2048, deve trovarsi nella .sshdirectory degli utenti ed essere chiamata id_rsae id_rsa.pub. Quando si incollano i tasti ovunque, assicurarsi di utilizzare un programma che non aggiunga nuove righe come VIM.


2

Finalmente sono riuscito a farlo funzionare eseguendo l'apertura della riga di comando con "Esegui un amministratore" anche se ero già amministratore e potevo creare la directory manualmente


1

Se disponi di Windows 10 con il client OpenSSH potresti essere in grado di generare la chiave, ma avrai problemi a copiarla nel box Linux di destinazione poiché il comando ssh-copy-id non fa parte del set di strumenti client.

Avendo avuto questo problema, ho scritto una piccola funzione PowerShell per risolvere questo problema, che aggiungi al tuo profilo.

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"      
    }
}

Puoi ottenere il succo qui

Ho una breve recensione al riguardo qui


0

Inoltre, puoi provare (per Windows 10 Pro) Esegui Powershell come amministratore e digita ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.