Per impostazione predefinita, ssh cerca id_dsa
e id_rsa
file. Le chiavi non devono essere nominate in questo modo, puoi anche nominarle mykey
o anche posizionarle in una directory diversa. Tuttavia, se si esegue una di queste, è necessario fare riferimento esplicito alla chiave nel comando ssh in questo modo:
ssh user@server -i /path/to/mykey
Se un comando non accetta -i
, ad esempio sshfs
, utilizzare l' IdentityFile
opzione:
sshfs -o IdentityFile=/path/to/mykey user@host:/path/on/remote /mountpoint
Come funziona
Quando generi una chiave, otterrai due file: id_rsa
(chiave privata) e id_rsa.pub
(chiave pubblica). Come suggeriscono i loro nomi, la chiave privata deve essere mantenuta segreta e la chiave pubblica può essere pubblicata al pubblico.
L'autenticazione con chiave pubblica funziona con una chiave pubblica e una privata. Sia il client che il server hanno le proprie chiavi. Quando si installa openssh-server
il server, le chiavi pubbliche e private vengono generate automaticamente. Per il cliente, dovrai farlo da solo.
Quando l'utente (client) si connette a un server, vengono scambiate le chiavi pubbliche. Riceverai i server uno e il server tuo. La prima volta che ricevi la chiave pubblica del server, ti verrà chiesto di accettarla. Se questa chiave pubblica cambia nel tempo, verrai avvisato perché è in corso un possibile attacco MITM (Man in the middle) che intercetta il traffico tra il client e il server.
Il server verifica se è consentito connettersi (definito in /etc/ssh/sshd_config
) e se la chiave pubblica è elencata nel ~/.ssh/authorized_keys
file. Possibili motivi per cui viene negata la chiave pubblica:
/etc/ssh/sshd_config
:
AllowUsers
o AllowGroups
è specificato, ma l'utente del server non è elencato nell'elenco dei gruppi o degli utenti (impostazione predefinita non definita, non ponendo alcuna limitazione agli utenti o ai gruppi dall'accesso).
DenyUsers
o DenyGroups
è specificato e ci si trova nell'elenco utenti o gruppi.
- Stai tentando di accedere come root, ma
PermitRootLogin
è impostato su No
(impostazione predefinita yes
).
PubkeyAuthentication
è impostato su No
(impostazione predefinita yes
).
AuthorizedKeysFile
è impostato su una posizione diversa e le chiavi pubbliche non vengono aggiunte a quel file (impostazione predefinita .ssh/authorized_keys
, relativa alla home directory )
~/.ssh/authorized_keys
: la tua chiave pubblica non viene aggiunta in questo file (tieni presente che questo file viene letto come utente root)
Utilizzando più chiavi
Non è raro usare più chiavi. Invece di correre ssh user@host -i /path/to/identity_file
, è possibile utilizzare un file di configurazione, ~/.ssh/config
.
Le impostazioni comuni sono IdentityFile (le chiavi) e la porta. La configurazione successiva controllerà "id_dsa" e "bender" solo quando ci si connette con ssh youruser@yourhost
:
Host yourhost
IdentityFile ~/.ssh/id_dsa
IdentityFile ~/.ssh/bender
Se si omette Host yourhost
, le impostazioni verranno applicate a tutte le connessioni SSH. Altre opzioni possono anche essere specificati per questa partita ospite, come User youruser
, Port 2222
, ecc Questo permetterebbe di collegare con l'abbreviazione ssh yourhost
al posto di ssh -p2222 youruser@yourhost -i ~/.ssh/id_dsa -i ~/.ssh/bender
.