[Linuxtrent] Re: ssh e raspberry.....

  • From: operativa <operativa@xxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 26 Mar 2014 10:36:53 +0100


Il 26/03/2014 10:14, Emanuele Olivetti ha scritto:
On 03/25/2014 08:28 PM, operativa wrote:

allora ho copiato il contenuto della chiave pubblica dentro authorized_keys del raspberry
ora quando mi collego dal portatile al raspberry mi dice:
The authenticity of host '192.168.0.3 (192.168.0.3)' can't be established.
ECDSA key fingerprint is 04:71...............
Are you sure you want to continue connecting (yes/no)?
mettendo yes mi chiede password e mi collego,,, sul portatile in .ssh crea un file known_hosts
nulla a che fare con la mia chiave privata credo....

Quello che vedi mi pare corretto. Per capire quanto ti appare, leggi oltre.

Il tuo messaggio contiene 3 concetti diversi, quindi la mia risposta e' in 3 parti.

Prima parte. il meccanismo della chiave pubblica e privata lo utilizzi tu come utente per autenticarti su un computer a cui ti connetti (il raspberry pi in questo caso). Non e' l'unico caso in cui viene utilizzato questo meccanismo. Anche il computer a cui ti connetti utilizza lo stesso meccanismo per identificarsi a te e darti modo di verificare che ti stai connettendo al tuo raspberry pi e non a un altro computer che potrebbe essersi intrufolato maliziosamente nella tua rete e avere ottenuto l'ip che tu credi sia quello del raspberry pi. Per questo motivo, quando ssh (server) e' installato sul raspberry pi, viene generata una coppia di chiavi pubblica e privata *di sistema* che servono appunto a permetterti di vericare l'identita del computer a cui ti stai collegando. Le chiavi si sistema le puoi vedere (sul raspberry pi) in /etc/ssh/ . Dovresti vedere:
---
ssh_host_dsa_key
ssh_host_dsa_key.pub
ssh_host_ecdsa_key
ssh_host_ecdsa_key.pub
ssh_host_rsa_key
ssh_host_rsa_key.pub
----
che sono le coppie di chiavi pubbliche/private create con diversi algoritmi
crittografici (dsa, ecdsa, rsa). La prima volta che ti connetti al
raspberry pi, il tuo laptop non conosce la macchina a cui si sta collegando,
ovvero non ne conosce la chiave pubblica (quella di sistema) e quindi
chiede a te di verificarla "a mano". Per aiutarti in questo a schermo vedi un riassunto (detto fingerprint) della chiave pubblica di sistema del raspberry pi: "04:71...". Per verificarla e' necessario che tu sia sul raspberry e digiti
  ssh-keygen -l -f /etc/ssh/ssh_host_ecdsa_key.pub
(ssh_host_ecdsa_key.pub dovrebbe essere il file giusto visto che nel
messaggio che hai scritto c'e' "ECDSA key fingerprint is...").

Oppure, piu' semplicemente, quando ti appare il messaggio "The authenticity of host '192.....", digita "yes" senza controllare, come fanno la maggior parte
delle persone - me incluso. Ma nota che e' un comportamente sbagliato in
generale.

Seconda parte. a questo punto ssh ti chiede una password. Se hai propagato correttamente la tua chiave pubblica dal laptop al raspberry pi, allora la password che ti viene chiesta NON e' quella dell'utente sul raspberry pi. Questa password e' quella che protegge chiave privata che hai generato sul tuo computer. Quando hai create la tua chiave pubblica e privata, con ssh-keygen, ti e' stato richiesto di proteggere la chiave privata con una password, se volevi. Lo hai fatto? Se si, allora quella e' la password che ora ti viene chiesta quando ti colleghi via ssh al raspberry pi. Nota che non e' il raspberry pi a chiedertela, ma il tuo computer perche' per autenticarti sul raspberry pi deve momentaneamente utilizzare la tua chiave privata, e se e' protetta da password non puo' far altro
che chiederti quella password.
Molti non mettono una password sulla chiave privata. In generale e' ovviamente
sbagliato.
(Se non hai messo una password sulla chiave privata, allora non capisco
il messaggio che vedi a schermo)

Terza parte. Dopo che finalmente la connessione ssh ha avuto successo, il
tuo client ssh (sul laptop)_ memorizza ip e fingerprint del raspberry pi e li salva in known_hosts, cosi' la prossima volta non ti chiedera' di verificare l'identita di quel computer (vedi prima parte). Quindi quello che leggi in known_hosts non
ha a che fare con la tua chiave pubblica/privata.
Nota: i dati nel file known_hosts non sono in chiaro, perche' altrimenti chi riesce a leggerti/copiarti quel file saprebbe subito a quali computer ti colleghi e magari, se riesce a copiarti la tua chiave privata senza password (.ssh/id_rsa), puo' pure collegarsi a quei computer... senza digitare la password e da ovunque si trovi! Questo e' un altro motivo per cui il contenuto di known_hosts appare oscuro.

Per concludere, penso che quello che osservi a schermo sia tutto corretto. Se volevi evitare del tutto di password via ssh, allora non dovevi mettere la password sulla tua chiave privata del laptop. Se vuoi davvero fare questo, allora devi cancellare la tua chiave pubblica/privata (id_rsa, id_rsa.pub) sul portatile, ricrearla senza
password con ssh_keygen e propagarla sul raspberry_pi. Nota che a questo
punto sarebbe meglio fare pulizia sul raspberry pi e eliminare la chiave vecchia in
authorized_key, visto che ora non serve piu'.

SSH e' un bellissimo strumento. Invito tutti quello che non l'hanno ancora fatto
a spendere un po' di tempo per impararlo.

Emanuele
wow grazie mille delle spiegazioni mo piano piano mi rileggo tutto e cerco di capirci qualcosa...
--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: