chiave pubblica che richiede sempre password e frase chiave


19

Sto provando a SSH da un NAS a un server web usando una chiave pubblica. L'utente NAS è "root" e l'utente del server web è "backup"

Ho tutte le autorizzazioni impostate correttamente e quando eseguo il debug della connessione SSH ottengo: (ultimo bit del debug)

debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Next authentication method: publickey
debug1: Offering DSA public key: /root/.ssh/id_dsa.pub
debug1: Server accepts key: pkalg ssh-dss blen 433
debug1: key_parse_private_pem: PEM_read_PrivateKey failed
debug1: read PEM private key done: type <unknown>
Enter passphrase for key '/root/.ssh/id_dsa.pub':

Sto usando il comando:

ssh -v -i /root/.ssh/id_dsa.pub backup@webserver.com

Il fatto che richieda una passphrase è sicuramente un buon segno, ma non voglio che richieda questa o una password (che viene dopo se premo 'return' sulla passphrase)

Risposte:


24

Questo perché la tua chiave privata è crittografata ...

È possibile aggiungere la chiave a un agente ssh utilizzando ssh-addo rimuovere la passphrase (e con essa la crittografia) dalla chiave utilizzando il comando seguente:

ssh-keygen -p -f /root/.ssh/id_dsa -N ''


MODIFICARE

Oh, ho appena realizzato che si tenta di utilizzare la chiave pubblica per l'autenticazione ... Si desidera utilizzare la chiave privata lì:

ssh -v -i /root/.ssh/id_dsa backup@webserver.com

E solo per essere assolutamente sicuri, il contenuto del file id_dsa.pubva ~backup/.ssh/authorized_keyssul server web. È possibile utilizzare il seguente comando per farlo automaticamente

ssh-copy-id -i /root/.ssh/id_rsa.pub backup@webserver.com

ancora ottenere il problema. Ha funzionato e mi ha concesso "la tua identificazione è stata salvata con la nuova passphrase". ma poi chiede ancora una passphrase la prossima volta che provo ad accedere. Non sono sicuro di cos'altro provare ...
Andrew Atkinson,

controlla la mia risposta aggiornata ... forse questo mi aiuta ...
andrekeller,

grazie, sembra che forse stavo cercando di confrontare la chiave pubblica con la chiave pubblica ... Non avevo bisogno di rimuovere la passphrase
Andrew Atkinson,

Il fatto era che stavo usando il mio pub per autenticarmi (uno stupido errore). Grazie!
Qix,

6

Questo mi è successo quando la chiave privata che avevo non era in formato OpenSSH.

Inizialmente ho generato la mia chiave su Windows usando PuttyGen e mi veniva rimbalzato con questa stessa cosa.

Sono stato in grado di risolverlo caricando la chiave in PuttyGen e facendo clic su "Conversioni" per ottenerlo nel formato OpenSSH.


2

Ci sono alcune cose

In primo luogo, se KEY richiede una password, la chiave è stata generata con essa. In secondo luogo, se dopo il sistema richiede una password, la chiave non esegue l'autenticazione. Ciò significa che dovrai rigenerare la tua chiave SSH (o modificarla come suggerito da @rbtux) e correggere i file authorized_keys.

ssh-keygen -t {dsa | rsa} -b {1024 | 2048 | 4096} -C "commento opzionale" -f id_examplekey

Gli elementi tra parentesi graffe sono opzioni, tipo e dimensione dei bit (per indicare l'ovvio: dsa> rsa, 4096> 1024 - in termini di "sicurezza").

Quindi è necessario aggiungere la chiave pubblica (.pub) ai file authorized_keyse authorized_keys2(è un malinteso comune dire che .pub è per uso locale, tuttavia è destinato a essere confrontato con) nella .sshcartella del server .

$ cat id_examplekey.pub >> authorized_keys {, 2}

Quindi, da parte tua, dovresti assicurarti che i permessi chiave siano chmod 600 id_examplee per alleviare la digitazione di tutto ciò, puoi impostare il file di configurazione: ~/.ssh/configsulla tua casella locale (che è uno scheletro, puoi personalizzarlo un sacco):

Host example.com
    User WHATEVERNAME
    IdentityFile ~/.ssh/id_examplekey

ma la sezione nel debug che recita: debug1: il server accetta la chiave: pkalg ssh-dss blen 433 questo non significa che la chiave è stata accettata? Ho ricreato di nuovo senza passphrase, sempre lo stesso? - Non ho più idee? Grazie
Andrew Atkinson,

@AndrewAtkinson Sembra che tu l'abbia ottenuto qui sotto. È necessaria la chiave privata sulla macchina from (locale, client, qualunque cosa) e la chiave public.pub aggiunta ai file authorized_keys. Altri miei suggerimenti dovrebbero aiutarti a risparmiare tempo: D Buona fortuna!
nerdwaller,

Si scrive "In primo luogo, se la chiave sta chiedendo una password, la chiave è stata generata con esso." <- sì anche se ho appena provato quello che ha fatto l'interrogante, quindi, facendo -i con la chiave pubblica $ ssh user@comp -i ~/.ssh/id_rsa.pube ha detto permessi errati e privata la chiave verrà ignorata .. quindi ho cambiato le autorizzazioni a 600 come sarebbe id_rsa e mi ha chiesto una passphrase. Quindi, in effetti, chiederà quindi una passphrase se si specifica la chiave pubblica, anche se sia la chiave pubblica che la chiave privata non sono state generate con una passphrase
barlop,

2

Per me, poiché la chiave stessa era crittografata, ho seguito i seguenti passaggi:

  • Avviare ssh-agent: $ ssh-agent bash
  • Aggiungi chiave di identità standard al gestore chiavi: $ ssh-add
  • Se vuoi aggiungere una chiave diversa, allora: $ ssh-add /location/of/key

Per controllare in qualsiasi momento, l'elenco delle chiavi attualmente caricate:

$ ssh-add -l

Maggiori dettagli possono essere ottenuti da questo link


1

prova https://wiki.gentoo.org/wiki/Keychain

È una specie di avvolgente su ssh-agentessh-add

Pro: Non è necessario inserire la password ripetutamente finché non si riavvia. Potrebbe essere utilizzato in crontab.

Potrebbe essere d'aiuto.


1

Potrebbe essere perché stai usando un pubkey DSA che è disabilitato di default in OpenSSH v7.

Se non è possibile modificare la coppia di chiavi, una possibile soluzione consiste nel dire al demone SSH su webserver.com di accettare quei tipi di chiave, aggiornando /etc/ssh/sshd_configo equivalendo aggiungendo la seguente riga

PubkeyAcceptedKeyTypes=+ssh-dss

E quindi riavviare il servizio

/etc/init.d/ssh restart                     # or equivalent

0

Su Mac OSX puoi aggiungere la tua chiave privata al portachiavi usando il comando:

ssh-add -K /path/to/private_key

Se la tua chiave privata è memorizzata in ~ / .ssh e si chiama id_rsa:

ssh-add -K ~/.ssh/id_rsa

Ti verrà quindi richiesta la password, che verrà memorizzata nel tuo portachiavi.


Cosa devo fare sul client Linux se il client Mac funziona?
bbaassssiiee
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.