Ricerca nel sito web

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:

  1. Devi aver installato il client OpenSSH sul tuo desktop Linux.
  2. 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:

  1. /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.
  2. ~/.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:

  1. 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.
  2. host1, host2 sono semplicemente alias host da utilizzare sulla riga di comando, non sono i nomi host effettivi degli host remoti.
  3. 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.
  4. Per un'opzione come ssh_option2=value1 value2, viene considerato prima il valore value1, quindi value2.
  5. 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:

  1. corrisponde all'alias host host1 nel file di configurazione e applica le opzioni impostate nell'intestazione della definizione, Host host1.
  2. 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.
  3. 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.
  4. 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.

  1. 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) .
  2. Utente: specifica l'utente con cui accedere.
  3. 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.
  4. 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.
  5. IdentityFile: specifica un file da cui viene letta l'identità di autenticazione DSA, Ed25519, RSA o ECDSA dell'utente.
  6. ForwardX11: definisce se le connessioni X11 verranno reindirizzate automaticamente sul canale sicuro e sul set DISPLAY. Ha due valori possibili: “sì” o “no”.
  7. Compressione – viene utilizzato per impostare la compressione durante la connessione remota con il valore “sì”. L'impostazione predefinita è "no".
  8. 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.
  9. ServerAliveCountMax – imposta il numero di messaggi attivi del server che possono essere inviati senza che ssh riceva alcuna risposta dal server.
  10. 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.