GNU/Linux >> Linux Esercitazione >  >> Linux

Comando SSH

Secure Shell (SSH) è un protocollo di rete crittografico utilizzato per una connessione crittografata tra un client e un server. Il client ssh crea una connessione sicura al server SSH su una macchina remota. La connessione crittografata può essere utilizzata per eseguire comandi sul server, tunneling X11, port forwarding e altro.

Sono disponibili numerosi client SSH, sia gratuiti che commerciali, con OpenSSH che è il client più utilizzato. È disponibile su tutte le principali piattaforme, inclusi Linux, OpenBSD, Windows e macOS.

Questo articolo spiega come utilizzare il client della riga di comando OpenSSH (ssh ) per accedere a una macchina remota ed eseguire comandi o eseguire altre operazioni.

Installazione del client OpenSSH #

Il programma client OpenSSH si chiama ssh e può essere richiamato dal terminale. Il pacchetto client OpenSSH fornisce anche altre utilità SSH come scp e sftp che vengono installati insieme a ssh comando.

Installazione del client OpenSSH su Linux #

Il client OpenSSH è preinstallato sulla maggior parte delle distribuzioni Linux per impostazione predefinita. Se sul tuo sistema non è installato il client ssh, puoi installarlo utilizzando il tuo gestore di pacchetti di distribuzione.

Installazione di OpenSSH su Ubuntu e Debian #

sudo apt updatesudo apt install openssh-client

Installazione di OpenSSH su CentOS e Fedora #

sudo dnf install openssh-clients

Installazione del client OpenSSH su Windows 10 #

La maggior parte degli utenti Windows utilizza Putty per connettersi a una macchina remota tramite SSH. Tuttavia, le ultime versioni di Windows 10 includono un client e un server OpenSSH. Entrambi i pacchetti possono essere installati tramite la GUI o PowerShell.

Per trovare il nome esatto del pacchetto OpenSSH, digita il seguente comando:

Get-WindowsCapability -Online | ? Name -like 'OpenSSH*'

Il comando dovrebbe restituire qualcosa del genere:

Name  : OpenSSH.Client~~~~0.0.1.0
State : NotPresent
Name  : OpenSSH.Server~~~~0.0.1.0
State : NotPresent

Una volta che conosci il nome del pacchetto, installalo eseguendo:

Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0

In caso di successo, l'output sarà simile a questo:

Path          :
Online        : True
RestartNeeded : False

Installazione del client OpenSSH su macOS #

macOS viene fornito con il client OpenSSH installato per impostazione predefinita.

Come utilizzare ssh Comando #

I seguenti requisiti devono essere soddisfatti per poter accedere a una macchina remota tramite SSH:

  • Deve essere in esecuzione un server SSH sulla macchina remota.
  • La porta SSH deve essere aperta nel firewall della macchina remota.
  • Devi conoscere il nome utente e la password dell'account remoto. L'account deve disporre dei privilegi appropriati per l'accesso remoto.

La sintassi di base di ssh il comando è il seguente:

ssh [OPTIONS] [USER@]:HOST

Per utilizzare ssh comando, apri il tuo Terminale o PowerShell e digita ssh seguito dal nome host remoto:

ssh ssh.linuxize.com

Quando ti connetti a una macchina remota tramite SSH per la prima volta, vedrai un messaggio come quello di seguito.

The authenticity of host 'ssh.linuxize.com (192.168.121.111)' can't be established.
ECDSA key fingerprint is SHA256:Vybt22mVXuNuB5unE++yowF7lgA/9/2bLSiO3qmYWBY.
Are you sure you want to continue connecting (yes/no)?

Ogni host ha un'impronta digitale univoca che è memorizzata nel ~/.ssh/known_hosts file.

Digita yes per memorizzare l'impronta digitale remota e ti verrà chiesto di inserire la tua password.

Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts.

[email protected]'s password:

Una volta inserita la password, verrai connesso alla macchina remota.

Quando il nome utente non viene fornito, ssh comando utilizza il nome di accesso del sistema corrente.

Per accedere come utente diverso, specifica il nome utente e l'host nel seguente formato:

ssh username@hostname

Il nome utente può anche essere specificato con -l opzione:

ssh -l username hostname

Per impostazione predefinita, quando non viene fornita alcuna porta, il client SSH tenterà di connettersi al server remoto sulla porta 22. Su alcuni server, gli amministratori stanno modificando la porta SSH predefinita per aggiungere un ulteriore livello di sicurezza al server riducendo il rischio di attacchi.

Per connetterti su una porta non predefinita, usa il -p opzione per specificare la porta:

ssh -p 5522 username@hostname

Se riscontri problemi di autenticazione o connessione, utilizza il -v opzione per dire a ssh per stampare messaggi di debug:

ssh -v username@hostname

Per aumentare il livello di verbosità, usa -vv o -vvv .

Il ssh il comando accetta una serie di opzioni.

Per un elenco completo di tutte le opzioni leggi ssh pagina man digitando man ssh nel tuo terminale.

File di configurazione SSH #

Se ti connetti quotidianamente 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.

Il client OpenSSH legge le opzioni impostate nel file di configurazione per utente (~/.ssh/config ). In questo file puoi memorizzare diverse opzioni SSH per ogni macchina remota a cui ti connetti.

Di seguito viene mostrata una configurazione SSH di esempio:

Host dev
    HostName dev.linuxize.com
    User mike
    Port 4422

Quando invochi il client ssh digitando ssh dev , il comando leggerà il ~/.ssh/config file e utilizzare i dettagli di connessione specificati per l'host di sviluppo. In questo esempio, ssh dev è equivalente al seguente:

ssh -p 4422 [email protected]

Per ulteriori informazioni, consulta l'articolo sul file di configurazione SSH.

Autenticazione chiave pubblica #

Il protocollo SSH supporta vari meccanismi di autenticazione.

Il meccanismo di autenticazione basato su chiave pubblica ti consente di accedere al server remoto senza dover digitare la tua password.

Questo metodo funziona generando una coppia di chiavi crittografiche utilizzate per l'autenticazione. La chiave privata viene archiviata sul dispositivo client e la chiave pubblica viene trasferita a ciascun server remoto a cui si desidera accedere. Il server remoto deve essere configurato per accettare l'autenticazione della chiave.

Se non hai già una coppia di chiavi SSH sul tuo computer locale, puoi generarne una digitando:

ssh-keygen -t rsa -b 4096 -C "[email protected]"

Ti verrà chiesto di digitare una passphrase sicura. Se vuoi usare una passphrase, dipende da te.

Una volta ottenuta la coppia di chiavi, copia la chiave pubblica sul server remoto:

ssh-copy-id username@hostname

Inserisci la password dell'utente remoto e la chiave pubblica verrà aggiunta all'utente remoto authorized_keys file.

Una volta caricata la chiave, puoi accedere al server remoto senza che ti venga richiesta una password.

Impostando un'autenticazione basata su chiave, puoi semplificare il processo di accesso e aumentare la sicurezza generale del server.

Port Forwarding #

Il tunneling SSH o il port forwarding SSH è un metodo per creare una connessione SSH crittografata tra un client e una macchina server attraverso la quale è possibile inoltrare le porte dei servizi.

L'inoltro SSH è utile per il trasporto di dati di rete di servizi che utilizzano un protocollo non crittografato, come VNC o FTP, per l'accesso a contenuti con restrizioni geografiche o per aggirare i firewall intermedi. Fondamentalmente, puoi inoltrare qualsiasi porta TCP e incanalare il traffico su una connessione SSH sicura.

Esistono tre tipi di port forwarding SSH:

Inoltro alla porta locale #

Il port forwarding locale consente di inoltrare una connessione dall'host client all'host del server SSH e quindi alla porta dell'host di destinazione.

Per creare un port forwarding locale, passa il -L opzione per ssh cliente:

ssh -L [LOCAL_IP:]LOCAL_PORT:DESTINATION_HOST:DESTINATION_PORT -N -f username@hostname

L'opzione -f dice a ssh comando da eseguire in background e -N non eseguire un comando remoto.

Inoltro porta remota #

Il port forwarding remoto è l'opposto del port forwarding locale. Inoltra una porta dall'host del server all'host del client e quindi alla porta dell'host di destinazione.

Il -R l'opzione dice ssh per creare un port forwarding remoto:

ssh -R [REMOTE:]REMOTE_PORT:DESTINATION:DESTINATION_PORT -N -f username@hostname

Inoltro dinamico delle porte #

Il port forwarding dinamico crea un server proxy SOCKS che consente la comunicazione su un intervallo di porte.

Per creare un port forwarding dinamico (SOCKS) passare il -D opzione per il client ssh:

ssh -D [LOCAL_IP:]LOCAL_PORT  -N -f username@hostname

Per informazioni più dettagliate e istruzioni dettagliate, consulta l'articolo su Come configurare il tunneling SSH (port forwarding).

Conclusione #

Per connetterti a un server remoto tramite SSH, usa ssh comando seguito dal nome utente remoto e dal nome host (ssh username@hostname ).

Saper usare il ssh comando è essenziale per la gestione dei server remoti.

Se hai domande, lascia un commento qui sotto.


Linux
  1. Passaggio di variabili nel comando ssh remoto

  2. linux esegue il comando da remoto

  3. Gruppo DH GEX fuori portata

  4. SSH - Come includere il comando -t nel file ~/.ssh/config

  5. Server di inoltro SSH con OpenSSH

Comando W in Linux

Al comando in Linux

Come trovare connessioni SSH attive su Linux

Come passare la password al comando SSH in Linux

Utilizzo del comando SSH nei sistemi Linux/Unix

Connettiti con OpenSSH (Windows)