Sono confuso dalla differenza di comportamento dei client ssh che vedo su due host diversi. Per essere chiari, questo è lo scenario:
- "macbox" OS X che utilizza il client ssh OpenSSH_5.2p1
- "sunbox" Client ssh Solaris 10 OpenSSH_3.9p1
- "linuxbox" Ubuntu che esegue il server sshd OpenSSH_5.8p1
Tutti e tre gli host hanno un utente con lo stesso nome. Volevo impostare le cose in modo che macbox e sunbox potessero accedere a linuxbox usando solo le chiavi ssh, nessuna password. Su linuxbox, ho impostato sshd_config per consentire questo:
HostbasedAuthentication yes
# To enable empty passwords, change to yes (NOT RECOMMENDED)
PermitEmptyPasswords no
Notare il commento. Ho seguito il consiglio e non ho modificato l'impostazione relativa alle password vuote. Ho capito che per dire che linuxbox non permetterà l'autenticazione basata su host con le chiavi pubbliche che non hanno una password impostata per quella chiave.
Quindi, su macbox e su sunbox, ho fatto questo:
ssh-keygen -v -t dsa
E su entrambi, quando richiesto da ssh-keygen, ho fornito una password per la coppia di chiavi che stava generando. Successivamente, ho copiato il contenuto di "id_dsa.pub" (da macbox e sunbox) nel file ~ / .ssh / authorized_keys su linuxbox.
Da macbox, usando il programma integrato Terminal.app, ho provato ssh-ing su linuxbox. All'improvviso, stavo guardando il prompt della password della GUI, lanciato da Terminal, ma non in il terminale, e voleva la password per la coppia di chiavi che avevo generato. Ho inserito la password che ho dato al programma ssh-keygen quando ho generato quelle chiavi. Io NON non ho controllato l'offerta di casella per ricordare la password nel programma Keychain.app del mio Mac. Ho cliccato OK e sono entrato in una shell su Linux.
Successivamente, ho digitato "exit", quindi ssh-ed di nuovo in linuxbox una seconda volta, ma questa volta Terminal.app non ha chiesto una password. L'ho ripetuto più volte.
Poi sono andato al sunbox, ho provato un ssh a linuxbox. Sunbox ha richiesto la password della chiave pubblica tramite la shell (poiché non utilizzo un ambiente GUI / X11). Ho fornito la password e sono entrato nella shell su linuxbox. Poi ho digitato "exit", poi ho provato a ssh di nuovo in linuxbox e mi è stato chiesto di nuovo la password. A differenza del client ssh su macbox, il client ssh di sunbox mi chiede la password ogni volta che eseguo ssh su linuxbox.
Questa è una specie di cosa non documentata per la facilità d'uso di Mac OS X? O è un'impostazione in ssh_config? Il macbox ha tutto commentato in ssh_config. Sunbox ssh_config ha poche righe non commentate:
GSSAPIAuthentication yes
GSSAPIDelegateCredentials yes
PreferredAuthentications gssapi-with-mic,publickey,password,keyboard-interactive
Ho letto la manpage su ssh_config, ma non vedo come queste impostazioni possano spiegare la differenza nei comportamenti client ssh. Sono persino andato nel file Keychain.app dell'utente sul macbox e ho cercato una password salvata per la coppia di chiavi, e non c'è nessuna salvata lì.
Qualcuno può spiegare perché devo digitare una password chiave su sunbox ogni volta che eseguo ssh su linuxbox, ma mai (ancora) ho dovuto digitare una password chiave dopo il primo tempo che ho ssh-ed linuxbox da macbox?