#GNU/#Linux desde la consola - Comando SSH y explicacion basica de funcionamiento
Sommario:
- Installazione del client OpenSSH
- Installazione del client OpenSSH su Linux
- Installazione di OpenSSH su Ubuntu e Debian
- Installazione di OpenSSH su CentOS e Fedora
- Installazione del client OpenSSH su Windows 10
- Installazione del client OpenSSH su macOS
- Come usare il comando
ssh
- File di configurazione SSH
- Port forwarding
- Port Forwarding locale
- Port Forwarding remoto
- Port Forwarding dinamico
- Conclusione
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.
Il capo della rete aperta vede Verizon seguendo il suo comando

Il capo della nuova iniziativa di rete aperta di Verizon Wireless vede l'attività tradizionale del vettore in seguito al open ...
L'UE vuole prendere il comando della tecnologia "Web 3.0"

L'UE vuole prendere il comando della tecnologia "Web 3.0", afferma il commissario per le telecomunicazioni.
Cogli la riga di comando con il comando Take

Integra il prompt dei comandi, la GUI e un potente linguaggio batch con il potente toolkit Take Command.