GNU/Linux >> Linux Esercitazione >  >> Linux

Utilizzo del file di configurazione SSH

Se ti connetti regolarmente a più sistemi remoti tramite SSH, scoprirai che ricordare tutti gli indirizzi IP remoti, nomi utente diversi, porte non standard e varie opzioni della riga di comando è difficile, se non impossibile.

Un'opzione sarebbe quella di creare un alias bash per ogni connessione al server remoto. Tuttavia, c'è un'altra soluzione, molto migliore e più semplice a questo problema. OpenSSH ti consente di impostare un file di configurazione per utente in cui puoi memorizzare diverse opzioni SSH per ogni macchina remota a cui ti connetti.

Questo articolo illustra le nozioni di base del file di configurazione del client SSH e spiega alcune delle opzioni di configurazione più comuni.

Prerequisiti #

Supponiamo che tu stia utilizzando un sistema Linux o macOS con un client OpenSSH installato.

Posizione del file di configurazione SSH #

Il file di configurazione lato client OpenSSH è denominato config , ed è memorizzato nel .ssh directory nella directory home dell'utente.

Il ~/.ssh viene creata automaticamente quando l'utente esegue ssh comando per la prima volta. Se la directory non esiste sul tuo sistema, creala usando il comando seguente:

mkdir -p ~/.ssh && chmod 700 ~/.ssh

Per impostazione predefinita, il file di configurazione SSH potrebbe non esistere, quindi potrebbe essere necessario crearlo utilizzando il touch comando:

touch ~/.ssh/config

Questo file deve essere leggibile e scrivibile solo dall'utente e non accessibile da altri:

chmod 600 ~/.ssh/config

Struttura e modelli del file di configurazione SSH #

Il file di configurazione SSH ha la seguente struttura:

Host hostname1
    SSH_OPTION value
    SSH_OPTION value

Host hostname2
    SSH_OPTION value

Host *
    SSH_OPTION value

Il contenuto del file di configurazione del client SSH è organizzato in stanze (sezioni). Ogni stanza inizia con l'Host direttiva e contiene opzioni SSH specifiche utilizzate quando si stabilisce una connessione con il server SSH remoto.

L'indentazione non è richiesta ma è consigliata in quanto rende il file più facile da leggere.

L'Host la direttiva può contenere un pattern o un elenco di pattern separati da spazi bianchi. Ciascun modello può contenere zero o più caratteri diversi da spazi o uno dei seguenti identificatori di modello:

  • * - Corrisponde a zero o più caratteri. Ad esempio, Host * corrisponde a tutti gli host, mentre 192.168.0.* corrisponde agli host nel 192.168.0.0/24 sottorete.
  • ? - Corrisponde esattamente a un carattere. Il modello, Host 10.10.0.? corrisponde a tutti gli host in 10.10.0.[0-9] intervallo.
  • ! - Se utilizzato all'inizio di un pattern, nega la corrispondenza. Ad esempio, Host 10.10.0.* !10.10.0.5 corrisponde a qualsiasi host nel 10.10.0.0/24 sottorete eccetto 10.10.0.5 .

Il client SSH legge il file di configurazione stanza per stanza e, se più di un pattern corrisponde, le opzioni della prima stanza corrispondente hanno la precedenza. Pertanto dovrebbero essere fornite più dichiarazioni specifiche per l'host all'inizio del file e sostituzioni più generali alla fine del file.

Puoi trovare un elenco completo delle opzioni ssh disponibili digitando man ssh_config nel tuo terminale o visitando la pagina man di ssh_config.

Il file di configurazione SSH viene letto anche da altri programmi come scp , sftp e rsync .

Esempio di file di configurazione SSH #

Ora che abbiamo trattato le basi del file di configurazione SSH, diamo un'occhiata al seguente esempio.

In genere, quando ci si connette a un server remoto tramite SSH, è necessario specificare il nome utente, il nome host e la porta remoti. Ad esempio, per accedere come utente denominato john a un host chiamato dev.example.com sulla porta 2322 dalla riga di comando, dovresti digitare:

ssh [email protected] -p 2322

Per connettersi al server utilizzando le stesse opzioni fornite nel comando precedente, è sufficiente digitare ssh dev , inserisci le seguenti righe nel tuo "~/.ssh/config file:

~/.ssh/config
Host dev
    HostName dev.example.com
    User john
    Port 2322

Ora quando digiti ssh dev , il client ssh leggerà il file di configurazione e utilizzerà i dettagli di connessione specificati per dev ospite:

ssh dev

Esempio di file di configurazione SSH condiviso #

Questo esempio fornisce informazioni più dettagliate sui modelli host e sulla precedenza delle opzioni.

Prendiamo il seguente file di esempio:

Host targaryen
    HostName 192.168.1.10
    User daenerys
    Port 7654
    IdentityFile ~/.ssh/targaryen.key

Host tyrell
    HostName 192.168.10.20

Host martell
    HostName 192.168.10.50

Host *ell
    user oberyn

Host * !martell
    LogLevel INFO

Host *
    User root
    Compression yes
  • Quando digiti ssh targaryen , il client ssh legge il file e applica le opzioni dalla prima corrispondenza, che è Host targaryen . Quindi controlla le stanze successive una per una per uno schema corrispondente. Il prossimo corrispondente è Host * !martell (che significa tutti gli host tranne martell ), e applicherà l'opzione di connessione da questa stanza. L'ultima definizione Host * corrisponde anche, ma il client ssh prenderà solo la Compression opzione perché l'User l'opzione è già definita nel Host targaryen strofa.

    L'elenco completo delle opzioni utilizzate quando si digita ssh targaryen è il seguente:

    HostName 192.168.1.10
    User daenerys
    Port 7654
    IdentityFile ~/.ssh/targaryen.key
    LogLevel INFO
    Compression yes
  • Durante l'esecuzione di ssh tyrell i modelli host corrispondenti sono:Host tyrell , Host *ell , Host * !martell e Host * . Le opzioni utilizzate in questo caso sono:

    HostName 192.168.10.20
    User oberyn
    LogLevel INFO
    Compression yes
  • Se esegui ssh martell , i modelli di host corrispondenti sono:Host martell , Host *ell e Host * . Le opzioni utilizzate in questo caso sono:

    HostName 192.168.10.50
    User oberyn
    Compression yes
  • Per tutte le altre connessioni, il client ssh utilizzerà le opzioni specificate in Host * !martell e Host * sezioni.

Sostituisci l'opzione del file di configurazione SSH #

Il client ssh legge la sua configurazione nel seguente ordine di precedenza:

  1. Opzioni specificate dalla riga di comando.
  2. Opzioni definite nel ~/.ssh/config .
  3. Opzioni definite in /etc/ssh/ssh_config .

Se vuoi sovrascrivere una singola opzione, puoi specificarla sulla riga di comando. Ad esempio, se hai la seguente definizione:

Host dev
    HostName dev.example.com
    User john
    Port 2322

e vuoi usare tutte le altre opzioni tranne per connetterti come utente root invece di john è sufficiente specificare l'utente sulla riga di comando:

ssh -o "User=root" dev

Il -F (configfile ) consente di specificare un file di configurazione per utente alternativo.

Per dire a ssh client per ignorare tutte le opzioni specificate nel file di configurazione ssh, utilizzare:

ssh -F /dev/null [email protected]

Conclusione #

Ti abbiamo mostrato come configurare il file di configurazione ssh dell'utente. Potresti anche voler configurare un'autenticazione basata su chiave SSH e connetterti ai tuoi server Linux senza inserire una password.

Per impostazione predefinita, SSH è in ascolto sulla porta 22. La modifica del porta SSH predefinito aggiunge un ulteriore livello di sicurezza al tuo server riducendo il rischio di attacchi automatici.

Se hai domande, lascia un commento qui sotto.


Linux
  1. Il mio sito ASP.NET sembra utilizzare il file Web.config errato

  2. Qual è il modo più semplice per SSH usando Python?

  3. Come modificare la configurazione di u-boot in Yocto

  4. Come fare in modo che ssh acceda come l'utente giusto?

  5. Rimuovi un file su Linux usando il numero di inode

Come modificare il memory_limit nel file .htaccess

Ssh:come velocizzare l'accesso Ssh troppo lento?

Ssh – I registri Sshd?

Ssh - Correggere le impostazioni del file di configurazione Ssh per eseguire il tunneling su una terza macchina?

Come impostare l'autenticazione basata su chiave Ssh per Github utilizzando il file ~/.ssh/config?

Come caricare un file utilizzando cPanel File Manager?