Per impostazione predefinita, ssh cerca id_dsae id_rsafile. Le chiavi non devono essere nominate in questo modo, puoi anche nominarle mykeyo 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' IdentityFileopzione:
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-serveril 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_keysfile. Possibili motivi per cui viene negata la chiave pubblica:
/etc/ssh/sshd_config:
AllowUserso 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).
DenyUserso 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 yourhostal posto di ssh -p2222 youruser@yourhost -i ~/.ssh/id_dsa -i ~/.ssh/bender.