Chiave SSH che mi chiede una passphrase?


35

Ho una coppia di chiavi pubblica / privata. Nessuno dei due ha alcun tipo di passphrase associato con loro.

Ogni volta che provo a usare ssh usando il privato o il pubblico (e sono abbastanza sicuro che dovrei usare solo la chiave pubblica), mi viene chiesta una passphrase, e ovviamente non riesco a connettermi.

Qualcuno ha idea di come aggirare questo? Sto digitando un comando incorretamente? Sto provando a ssh in un server che ho installato nel mio file ~ / .ssh / config (correttamente, poiché questa stessa identica installazione funziona su un altro server) con la chiave memorizzata in ~ / .ec2 / key.ppk

Ho anche provato a usare puttygen.exe per generare una nuova chiave privata CON una passphrase, quindi usando quella chiave e quando scrivo la passphrase, continua a fallire.

Risposte:


28

Prima di tutto è la chiave privata che avrà la passphrase. Ciò convalida con la chiave pubblica memorizzata sul server remoto.

La migliore ipotesi è che stai provando a usare una chiave privata putty ( ppk) in formato chiave con openssh questo non funziona ... PuTTYgen ha un'opzione di esportazione per openssh se questo è il caso.

ssh-rsa AAAAB3NzaC1y...... etc

Suppongo anche che il server a cui stai tentando di eseguire lo ssh abbia la tua chiave pubblica memorizzata correttamente nel file di chiavi autorizzato (in ~/.ssh/authorized_keysgenerale).

Un'altra ipotesi sarebbe che la chiave corretta non fosse selezionata. Alcune cose che vorrei provare sono:

Ripristino della passphrase dei tasti utilizzando ssh-keygen, in questo modo ...

$ ssh-keygen -f ~/.ec2/key.ppk -p

Ciò confermerà se in effetti la tua chiave ha (o non ha) già una passphrose.

In secondo luogo, proverei a collegarmi usando un output dettagliato, specificando esplicitamente l'output della tua chiave pubblica:

$ ssh host -i ~/.ec2/key.ppk -vvv

Questo ti darà più di un'idea di ciò che sta succedendo.


Corretto, questa è una chiave generata da puttygen da una chiave che funziona in putty. Quando inserisco lo stucco nello stesso server (dalla macchina che ospita l'istanza di Cygwin) funziona perfettamente con la stessa chiave esatta. Quando provo a connettermi via ssh da Cygwin, si scatena. Sono confuso su come farlo funzionare.
llaskin,

6
Penso che il punto di mrverrall sia che il formato del file per la chiave privata PuTTY non sia lo stesso del formato del file usato per OpenSSH (il client ssh in cygwin). Quindi OpenSSH non riesce a utilizzare i dati della chiave privata perché non riesce a capire cosa significano i dati. Ma PuTTY ha un'opzione "export", quindi puoi ottenere i dati nel formato "PEM" necessario.
Phil P,

Questo errore viene visualizzato anche se il file è nel formato corretto, quindi controlla due volte e tre volte che hai copiato e incollato correttamente se lo crei manualmente.
Daniel Sokolowski,

Il ssh-rsa AAAAB3NzaC1y...... etcformato è da openssh, giusto? Ho questo formato nella mia chiave privata. L'intestazione afferma: PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6Ma il file è archiviato come file id_rsa. Questo significa che questo è ancora in formato .ppk, anche se il nome del file è giustoid_rsa
alpha_989

Scopri qui la risposta per i diversi formati. Nel mio caso, anche se l'estensione del file non aveva .ppk, era ancora in formato putty, il che mi confondeva, poiché mostrava tutti i tipi di errori, ma non mi dava alcun suggerimento diretto che il problema fosse con il formato della chiave : stackoverflow.com/a/44391850/4752883
alpha_989

18

È possibile eseguire ssh-agent. Vedi qui per una discussione.

La versione corta che ha funzionato per me (in bash):

$ ssh-agent
SSH_AUTH_SOCK=/tmp/ssh-rnRLi11880/agent.11880; export SSH_AUTH_SOCK;
SSH_AGENT_PID=11881; export SSH_AGENT_PID;
echo Agent pid 11881;

Ho preso le 3 righe che echeggia e le ho eseguite. Un altro modo per farlo è prendere l'output di -s:

$ eval `ssh-agent -s`

Quindi ho aggiunto le mie credenziali ad esso:

$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/me/.ssh/id_rsa: 
Identity added: /home/me/.ssh/id_rsa (/home/me/.ssh/id_rsa)

Ora l'agente fornisce le credenziali invece di dover digitare la mia passphrase.

Credo che ssh-agent scompaia quando lo fa la shell, quindi questo dovrebbe essere scritto all'avvio per la massima comodità. Il link che ho condiviso descrive anche lo scripting.


4

Quando imposti la tua chiave pubblica, probabilmente (forse inavvertitamente) la imposti con una passphrase.

Probabilmente dovrai ricominciare da capo: non ho usato puttygen, ma puoi eliminare (o rinominare) la chiave pubblica nella tua directory .ssh, usarla ssh-keygenper generarne una nuova (assicurandoti di non fornire una passphrase), e poi condividere public_key nel file authorized_keys sul server a cui si sta tentando di connettersi.

Potrebbe essere necessario rimuovere anche la vecchia chiave passphrase dal file delle chiavi autorizzate sul server a cui ti stai connettendo.


4

Controlla che la chiave privata id_rsanon abbia interruzioni di riga alla fine, in alcuni casi le interruzioni di riga extra faranno ssh-keygen per richiedere la passphrase, prova questo:

sed  '/^$/d' /path/to/key > id_rsa

test:

ssh-keygen -yf id_rsa

2
OMG questo era il mio problema. una nuova riga in più dopo che la -----END RSA PRIVATE KEY-----stava causando la richiesta della passphrase su una chiave che non ne aveva una!
edk750,

3

Una cosa da verificare, se il tuo file sshd_config ha StrictModes = yes, la directory $ HOME o $ HOME / .ssh non deve essere scrivibile in tutto il mondo a gruppi o altri. Altrimenti l'autenticazione fallisce, non importa quale.


1

Ho fatto l'errore di sovrascrivere accidentalmente il mio file ~ / .ssh / id_rsa con il mio ~ / .ssh / id_rsa.pub. In questo modo ssh chiederà una passphrase.


0

Mi sono imbattuto in questo problema l'altro giorno. In particolare, stavo cercando di copiare / incollare una chiave AWS privata da una macchina all'altra.

Ho la brutta abitudine di perdere il primo o l'ultimo personaggio. Si scopre che se non si afferrano tutti i trattini alla fine della chiave privata, anche se non ha nulla a che fare con il testo della chiave stessa, verrà richiesto un passphrase per la chiave privata fino a quando non si aggiunge ogni carattere dal chiave da cui hai copiato (nel mio caso ciò significava aggiungere un singolo trattino alla fine della chiave.)

Suppongo che ciò significhi che la migliore pratica è quella di SSH il file di testo attraverso il filo invece di provare a copiare e incollare tra le finestre del Terminale.


0

Su OSX sono stato in grado di eseguire solo:

$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)

La password è stata memorizzata dall'applicazione Accesso portachiavi, che si trova nella cartella Applicazioni> Utilità. Sono appena entrato id_nel campo di ricerca.


0

Prova a visualizzare i file di registro sul server. Vedi / var / log / auth log (ad esempio, / var / log / authlog per OpenSSH, anche se ho visto alcuni sistemi operativi usare Portable OpenSSH e usare /var/log/auth.log) e controllare la fine di quel file.

Le cause più comuni che ho visto sono permessi errati (come notato dalla risposta di TD1 ), sebbene altri problemi potrebbero riguardare il fatto che la chiave pubblica (memorizzata sul server) non si trova nel file giusto, o che la chiave venga commentata, o un nome utente errato.

Potrebbe anche essere utile (per la risoluzione dei problemi) fornire temporaneamente all'account una passphrase, solo per verificare che l'account possa essere correttamente connesso quando lo fai.

Se la visualizzazione del file di registro non ti porta rapidamente a una soluzione, ti suggerisco di pubblicare una nuova domanda (poiché si tratta di un'ottima domanda generalizzata) che include i dettagli specifici del file di registro, in modo da poter fornire indicazioni più specifiche.


0

Nel mio team, quando ciò accade, non è un problema con nulla a livello locale. La chiave ssh dell'utente e / o l'accesso non sono stati configurati correttamente sul server a cui si stanno connettendo (nel nostro caso una piattaforma di hosting). Per qualche motivo, questo fa scattare una richiesta per una chiave ssh inesistente.

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.