comprensione del passaggio "Offerta pubblica chiave RSA" durante l'inizializzazione della connessione SSH

16

Durante l'inizializzazione della connessione SSHv2, è presente il seguente messaggio di debug:

debug1: Offering RSA public key: /home/user/.ssh/id_rsa

Ho corretto che in realtà nessuna chiave pubblica è stata inviata al server? Inoltre, /home/user/.ssh/id_rsa è la mia chiave privata. Che cosa significa esattamente questo messaggio Offering RSA public key ?

    
posta Martin 28.02.2017 - 15:56
fonte

2 risposte

13

Quando il client SSH visualizza questo messaggio, sta tentando di autenticare l'utente sul server ( userauth_pubkey in sshconnect2.c ). Il client deve dimostrare di avere la chiave privata corrispondente a una chiave pubblica autorizzata sul server. Il nome del file visualizzato nel messaggio di debug è il nome del file della chiave privata (ad esempio, passato come argomento a -i o come direttiva di configurazione IdentityFile ).

Nel punto in cui viene visualizzato questo messaggio, il client non utilizza la chiave privata, ma solo la chiave pubblica. Tuttavia, il client vuole sapere che la chiave privata è disponibile, perché se il server accetta di utilizzare questa chiave pubblica, il client dovrà dimostrare di conoscere la chiave privata. Il client invia un messaggio SSH_MSG_USERAUTH_REQUEST al server con publickey metodo contenente la chiave pubblica. Se il server accetta di utilizzare questa chiave pubblica ("debug1: Server accetta chiave"), il client utilizzerà successivamente la chiave privata per firmare una richiesta inviata dal server in un altro messaggio SSH_MSG_USERAUTH_REQUEST (in sign_and_send_pubkey - the have_sig byte cambia da 0 ("dimmi se ti piace questa chiave") a 1 ("ecco una prova che sono io, fammi entrare")).

    
risposta data 01.03.2017 - 00:50
fonte
3

La mia ipotesi sarebbe che il client annuncia la coppia di chiavi che sta usando , dando la chiave pubblica (ovviamente!). Ma in effetti, la chiave fornita con quel messaggio è una chiave privata, che non capisco del tutto perché. Ho provato con ssh -vvv con un server che uso

debug1: Offering RSA public key: /home/user/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-keyex,gssapi-with-mic,password
debug1: Trying private key: /home/user/.ssh/id_dsa
debug3: no such identity: /home/user/.ssh/id_dsa: No such file or directory
debug1: Trying private key: /home/user/.ssh/id_ecdsa
debug3: no such identity: /home/user/.ssh/id_ecdsa: No such file or directory
debug1: Offering ED25519 public key: /home/user/.ssh/id_ed25519
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Server accepts key: pkalg ssh-ed25519 blen 51

Dato che ho due chiavi su questo computer: quella RSA e quella ECDSA, sembra che il server abbia rifiutato la mia chiave RSA. Va bene, non ho fornito la chiave RSA a questo server . Quindi, cerca di trovare una chiave DSA e una chiave ECDSA, ma non ho nessuna di queste, quindi la "nessuna identità" è comprensibile. Quindi, possiedo una chiave ED25519, e prova questo. E ciò va bene, dal momento che ho registrato questa coppia di chiavi su quel server. Nota che accetta la mia chiave pubblica adesso!

Quindi, il protocollo continua a superare una sfida in cui il server ora sa quale chiave pubblica utilizzare per criptare la sfida e il client (la mia macchina) sa quale chiave privata utilizzare per questa sfida.

    
risposta data 28.02.2017 - 18:20
fonte

Leggi altre domande sui tag