SSH è un protocollo sicuro utilizzato come mezzo principale per la connessione remota ai server Linux. Fornisce un'interfaccia basata su testo generando una shell remota. Dopo la connessione, tutti i comandi digitati nel terminale locale vengono inviati al server remoto e lì eseguiti.
Autenticazione
I client generalmente si autenticano utilizzando password o chiavi SSH. Le password sono meno sicure quindi le chiavi ssh sono sempre consigliate.
Per autenticarsi utilizzando le chiavi SSH, un utente deve disporre di una coppia di chiavi SSH sul proprio computer locale. Sul server remoto, la chiave pubblica deve essere copiata in un file all'interno della home directory dell'utente in ~/.ssh/authorized_keys
. Questo file contiene un elenco di chiavi pubbliche, una per riga, autorizzate ad accedere a questo account.
Generazione di una coppia di chiavi SSH
Genera combinazione di chiavi pub/private
ssh-keygen
# With options (Larger Number of Bits 4096 and file name)
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix
# Explicit comment
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_citizix -C citizix_key
I comandi precedenti genereranno una coppia di chiavi RSA SSH. Se il percorso del file non è specificato, si troverà nel .ssh
directory nascosta all'interno della directory home del tuo utente. I file predefiniti sono:
~/.ssh/id_rsa
:La chiave privata. NON CONDIVIDERE QUESTO FILE!~/.ssh/id_rsa.pub
:la chiave pubblica associata. Questo può essere condiviso liberamente senza conseguenze.
Rimozione o modifica della passphrase su una chiave privata
Se hai generato una passphrase per la tua chiave privata e desideri modificarla o rimuoverla, utilizza i seguenti comandi:
ssh-keygen -p
ssh-keygen -p -f ~/.ssh/id_citizix
Inserisci la vecchia passphrase che desideri modificare. Ti verrà quindi richiesta una nuova passphrase, oppure puoi semplicemente premere invio per lasciare vuoto.
Controlla l'impronta digitale della chiave SSH
Ogni coppia di chiavi SSH condivide una singola "impronta digitale" crittografica che può essere utilizzata per identificare in modo univoco le chiavi. Per scoprire l'impronta digitale di una chiave SSH, digita:
ssh-keygen -l
ssh-keygen -l -f ~/.ssh/id_citizix
Copiare la tua chiave SSH pubblica su un server
La copia della chiave pubblica su un server remoto consentirà l'accesso senza password:
# This will prompt for a password
ssh-copy-id [email protected]_host
Dopo aver digitato la password, il contenuto della tua chiave ~/.ssh/id_rsa.pub verrà aggiunto alla fine del file ~/.ssh/authorized_keys dell'account utente. Ora puoi accedere senza password:ssh [email protected]_host
Copia della chiave SSH pubblica su un server senza SSH-Copy-ID
Se non hai l'utilità ssh-copy-id disponibile, ma hai ancora accesso SSH basato su password al server remoto, puoi copiare il contenuto della tua chiave pubblica in un modo diverso.
-
Copia il contenuto in fondo al
~/.ssh/authorized_keys
del server remoto file. -
È possibile emettere il contenuto della chiave e inviarlo tramite pipe al comando ssh. Aggiungi a
~/.ssh/authorized_keys
file.cat ~/.ssh/id_rsa.pub | ssh [email protected]_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys"
Più hack
Genera chiave ssh pubblica da una chiave privata:
ssh-keygen -y -f ~/.ssh/id_rsa > ~/.ssh/id_rsa.pub
Esecuzione di un singolo comando su un server remoto
ssh [email protected]_host command_to_run
Accesso a un server con una porta diversa
ssh -p port_num [email protected]_host
Utilizzando un file di configurazione:
# File ~/.ssh/config
Host remote_alias
HostName remote_host
Port port_num
Aggiunta delle tue chiavi SSH a un agente SSH per evitare di digitare la passphrase
Se hai una passphrase sulla tua chiave SSH privata, ti verrà chiesto di inserire la passphrase ogni volta che la usi per connetterti a un host remoto.
Per evitare di doverlo ripetere ripetutamente, puoi eseguire un agente SSH. Questa piccola utility memorizza la tua chiave privata dopo che hai inserito la passphrase per la prima volta. Sarà disponibile per tutta la durata della tua sessione terminale, consentendoti di connetterti in futuro senza reinserire la passphrase.
Per avviare l'agente SSH, digita quanto segue nella sessione del terminale locale:
eval $(ssh-agent)
Ora aggiungi la tua chiave privata all'agente, in modo che possa gestire la tua chiave:
ssh-add
ssh-add -f ~/.ssh/id_citizix
Dovrai inserire la tua passphrase (se impostata). Successivamente, il tuo file di identità viene aggiunto all'agente, consentendoti di utilizzare la tua chiave per accedere senza dover reinserire nuovamente la passphrase.
Inoltro delle credenziali SSH da utilizzare su un server
Se desideri essere in grado di connetterti senza una password a un server dall'interno di un altro server, dovrai inoltrare le informazioni sulla tua chiave SSH. Ciò ti consentirà di autenticarti su un altro server tramite il server a cui sei connesso, utilizzando le credenziali sul tuo computer locale.
Devi aver avviato il tuo agente SSH e la tua chiave SSH aggiunta all'agente. Quindi connettiti al primo server con l'opzione -A
per inoltrare le tue credenziali al server per questa sessione
ssh -A [email protected]_host