Come configurare connessioni SSH personalizzate per semplificare l'accesso remoto
SSH (client SSH) è un programma per l'accesso remoto a una macchina, consente a un utente di eseguire comandi su un host remoto. È uno dei metodi più consigliati per accedere a un host remoto, poiché è progettato per fornire comunicazioni crittografate sicure tra due host non attendibili su una rete non sicura.
SSH utilizza sia un file di configurazione a livello di sistema che uno specifico dell'utente (personalizzato). In questo tutorial spiegheremo come creare un file di configurazione ssh personalizzato e utilizzare determinate opzioni per connettersi agli host remoti.
Requisiti:
- Devi aver installato il client OpenSSH sul tuo desktop Linux.
- Comprendere le opzioni comuni utilizzate per le connessioni remote tramite ssh.
File di configurazione del client SSH
Di seguito sono riportate le posizioni dei file di configurazione del client ssh:
/etc/ssh/ssh_config
– questo è il file di configurazione predefinito a livello di sistema. Contiene impostazioni che si applicano a tutti gli utenti della macchina client ssh.~/.ssh/config
o$HOME/.ssh/config
– è il file di configurazione personalizzato/specifico dell'utente. Ha configurazioni che si applicano a un utente specifico. Pertanto sovrascrive le impostazioni predefinite nel file di configurazione a livello di sistema. Questo è il file che creeremo e utilizzeremo.
Per impostazione predefinita, gli utenti vengono autenticati in ssh utilizzando le password, tuttavia, puoi impostare l'accesso senza password ssh utilizzando ssh keygen in 5 semplici passaggi.
Nota: nel caso in cui la directory ~/.ssh
non esista sul tuo sistema desktop, creala con le seguenti autorizzazioni.
mkdir -p ~/.ssh
chmod 0700 ~/.ssh
Il comando chmod sopra implica che solo l'utente può avere permessi di lettura, scrittura ed esecuzione sulla directory come richiesto dalle impostazioni ssh.
Come creare un file di configurazione SSH specifico per l'utente
Questo file in genere non viene creato per impostazione predefinita, quindi è necessario crearlo con le autorizzazioni di lettura/scrittura solo per l'utente.
touch ~/.ssh/config
chmod 0700 ~/.ssh/config
Il file precedente contiene sezioni definite dalle specifiche degli host e una sezione viene applicata solo agli host che corrispondono a uno dei modelli impostati nelle specifiche.
Il formato convenzionale di ~/.ssh/config
è il seguente e tutte le righe vuote e le righe che iniziano con '#'
sono considerate come commenti:
Host host1
ssh_option1=value1
ssh_option2=value1 value2
ssh_option3=value1
Host host2
ssh_option1=value1
ssh_option2=value1 value2
Host *
ssh_option1=value1
ssh_option2=value1 value2
Dal formato sopra:
- Host host1 – è una definizione di intestazione per host1, è qui che inizia la specifica di un host e termina con la definizione di intestazione successiva, Host host2 che crea una sezione.
- host1, host2 sono semplicemente alias host da utilizzare sulla riga di comando, non sono i nomi host effettivi degli host remoti.
- Le opzioni di configurazione come ssh_option1=value1, ssh_option2=value1 value2 si applicano a un host corrispondente e dovrebbero essere rientrate per una formattazione ben organizzata.
- Per un'opzione come ssh_option2=value1 value2, viene considerato prima il valore value1, quindi value2.
- La definizione dell'intestazione Host * (dove
*
è un modello – carattere jolly che corrisponde a zero o più caratteri) corrisponderà a zero o più host.
Sempre considerando il formato sopra, ecco come ssh legge il file di configurazione. Se esegui un comando ssh per accedere in remoto a host1 in questo modo:
ssh host1
Il comando ssh sopra farà le seguenti cose:
- corrisponde all'alias host host1 nel file di configurazione e applica le opzioni impostate nell'intestazione della definizione, Host host1.
- quindi passa alla sezione host successiva, Host host2 e rileva che il nome fornito sulla riga di comando non corrisponde, quindi da qui non viene utilizzata alcuna opzione.
- Procede all'ultima sezione, host *, che corrisponde a tutti gli host. Qui, applica tutte le opzioni in questa sezione alla connessione host. Ma non può sovrascrivere alcun valori di opzioni che sono già utilizzate nella sezione precedente.
- Lo stesso vale per host2.
Come utilizzare il file di configurazione SSH specifico dell'utente
Una volta capito come funziona il file di configurazione del client ssh, puoi crearlo come segue. Ricorda di utilizzare opzioni e valori (alias host, numeri di porta, nomi utente e così via) applicabili al tuo ambiente server.
Apri il file di configurazione con il tuo editor preferito:
vi ~/.ssh/config
E definire le sezioni necessarie:
Host fedora25
HostName 192.168.56.15
Port 22
ForwardX11 no
Host centos7
HostName 192.168.56.10
Port 22
ForwardX11 no
Host ubuntu
HostName 192.168.56.5
Port 2222
ForwardX11 yes
Host *
User tecmint
IdentityFile ~/.ssh/id_rsa
Protocol 2
Compression yes
ServerAliveInterval 60
ServerAliveCountMax 20
LogLevel INFO
Una spiegazione dettagliata delle opzioni di configurazione ssh di cui sopra.
- HostName – definisce il vero nome host a cui accedere, in alternativa è possibile utilizzare indirizzi IP numerici, è anche consentito (sia sulla riga di comando che nelle specifiche HostName) .
- Utente: specifica l'utente con cui accedere.
- Porta: imposta il numero di porta per connettersi all'host remoto, il valore predefinito è 22. Utilizza il numero di porta configurato nel file di configurazione sshd dell'host remoto.
- Protocollo: questa opzione definisce le versioni del protocollo che ssh dovrebbe supportare in ordine di preferenza. I valori abituali sono '1' e '2', più versioni devono essere separate da virgole.
- IdentityFile: specifica un file da cui viene letta l'identità di autenticazione DSA, Ed25519, RSA o ECDSA dell'utente.
- ForwardX11: definisce se le connessioni X11 verranno reindirizzate automaticamente sul canale sicuro e sul set DISPLAY. Ha due valori possibili: “sì” o “no”.
- Compressione – viene utilizzato per impostare la compressione durante la connessione remota con il valore “sì”. L'impostazione predefinita è "no".
- ServerAliveInterval – imposta un intervallo di timeout in secondi dopo il quale se non è stata ricevuta alcuna risposta (o dati) dal server, ssh invierà un messaggio attraverso il canale crittografato per richiedere una risposta dal server. Il valore predefinito è 0, il che significa che nessun messaggio verrà inviato al server, o 300 se è stata definita l'opzione BatchMode.
- ServerAliveCountMax – imposta il numero di messaggi attivi del server che possono essere inviati senza che ssh riceva alcuna risposta dal server.
- LogLevel: definisce il livello di dettaglio utilizzato durante la registrazione dei messaggi da ssh. I valori consentiti includono: QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 e DEBUG3. E l'impostazione predefinita è INFO.
Il modo standard per connettersi a qualsiasi host Linux remoto (CentOS 7 – nel mio caso), definito nella sezione due del file di configurazione sopra, normalmente digiteremmo il comando seguente:
ssh -i ~/.ssh/id_rsa -p 22 [email
Tuttavia, con l'utilizzo del file di configurazione del client ssh, possiamo semplicemente digitare il seguente comando:
ssh centos7
Puoi trovare ulteriori opzioni ed esempi di utilizzo nella pagina man di configurazione del client ssh:
$man ssh_config
Per ora è tutto, in questa guida ti abbiamo spiegato come utilizzare un file di configurazione del client ssh specifico per l'utente (personalizzato) in Linux. Utilizza il modulo di feedback qui sotto per scriverci in merito a questo articolo.