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

  • From: Emanuele Olivetti <emanuele@xxxxxxxxxxxxxx>
  • To: linuxtrent@xxxxxxxxxxxxx
  • Date: Wed, 26 Mar 2014 10:14:31 +0100

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

--
Per iscriversi  (o disiscriversi), basta spedire un  messaggio con OGGETTO
"subscribe" (o "unsubscribe") a mailto:linuxtrent-request@xxxxxxxxxxxxx


Other related posts: