androide

Comando ssh

#GNU/#Linux desde la consola - Comando SSH y explicacion basica de funcionamiento

#GNU/#Linux desde la consola - Comando SSH y explicacion basica de funcionamiento

Sommario:

Anonim

Secure Shell (SSH) è un protocollo di rete crittografica 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.

Esistono numerosi client SSH disponibili sia gratuitamente che commerciali, con OpenSSH che è il client più utilizzato. È disponibile su tutte le principali piattaforme, tra cui Linux, OpenBSD, Windows, macOS e altri.

, spiegheremo come utilizzare il client della riga di comando ( ssh ) di OpenSSH 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 installate insieme al comando ssh .

Installazione del client OpenSSH su Linux

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

Installazione di OpenSSH su Ubuntu e Debian

sudo apt update sudo 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 un computer remoto 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, digitare il comando seguente:

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 al seguente:

Path: Online: True RestartNeeded: False

Installazione del client OpenSSH su macOS

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

Come usare il comando ssh

Per poter accedere a una macchina remota tramite SSH devono essere soddisfatti i seguenti requisiti:

  • Un server SSH deve essere in esecuzione sul computer remoto. La porta SSH deve essere aperta nel firewall del computer remoto. È necessario conoscere il nome utente e la password dell'account remoto. L'account deve disporre dei privilegi adeguati per l'accesso remoto.

La sintassi di base del comando ssh è la seguente:

ssh:HOST

Per utilizzare il comando ssh apri Terminal 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 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 memorizzata nel file ~/.ssh/known_hosts .

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

Warning: Permanently added 'ssh.linuxize.com' (ECDSA) to the list of known hosts. [email protected]'s password:

Dopo aver inserito la password, si accederà al computer remoto.

Quando non viene fornito il nome utente, il comando ssh utilizza l'attuale nome di accesso al sistema.

Per accedere come un altro utente, specificare il nome utente e l'host nel seguente formato:

ssh username@hostname

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

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 cambiando la porta SSH predefinita per aggiungere un ulteriore livello di sicurezza al server riducendo il rischio di attacchi automatizzati.

Per connettersi su una porta non predefinita, utilizzare l'opzione -p per specificare la porta:

ssh -p 5522 username@hostname

ssh -v username@hostname

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

Il comando ssh accetta una serie di opzioni.

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

File di configurazione SSH

Il client OpenSSH legge le opzioni impostate nel file di configurazione per utente ( ~/.ssh/config ). In questo file, è possibile memorizzare diverse opzioni SSH per ogni macchina remota a cui ci si connette.

Di seguito è mostrato un esempio di configurazione SSH:

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

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

ssh -p 4422 [email protected]

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

Autenticazione con chiave pubblica

Il protocollo SSH supporta vari meccanismi di autenticazione.

Il meccanismo di autenticazione basato su chiave pubblica consente di accedere al server remoto senza digitare la 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 su ciascun server remoto a cui si desidera accedere. Il server remoto deve essere configurato per accettare l'autenticazione con chiave.

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

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

Una volta che hai la tua coppia di chiavi, copia la chiave pubblica sul server remoto:

ssh-copy-id username@hostname

Immettere la password dell'utente remoto e la chiave pubblica verrà aggiunta al file user_keys dell'utente remoto.

Una volta caricata la chiave, è possibile accedere al server remoto senza che sia richiesta una password.

Impostando un'autenticazione basata su chiave, è possibile 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 trasportare dati di rete di servizi che utilizzano un protocollo non crittografato, come VNC o FTP, accedere a contenuti con restrizioni geografiche o bypassare i firewall intermedi. Fondamentalmente, è possibile inoltrare qualsiasi porta TCP e tunnelizzare il traffico su una connessione SSH sicura.

Esistono tre tipi di port forwarding SSH:

Port Forwarding locale

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

Per creare un port forwarding locale passare l'opzione -L al client ssh :

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

L'opzione -f dice al comando ssh di essere eseguito in background e -N non eseguire un comando remoto.

Port Forwarding remoto

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.

L'opzione -L dice a ssh di creare un port forwarding remoto:

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

Port Forwarding dinamico

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

Per creare un port forwarding dinamico (SOCKS) passare l'opzione -D al client ssh:

ssh -D LOCAL_PORT -N -f username@hostname

Per informazioni più dettagliate e istruzioni dettagliate, consultare l'articolo su Come impostare il tunneling SSH (Port Forwarding).

Conclusione

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

Sapere come utilizzare il comando ssh è essenziale per la gestione del server remoto.

terminale ssh