OpenSSH è uno strumento estremamente versatile per collegarsi in modo sicuro a macchine remote. Nato nel lontano 1999 su OpenBSD, divenne subito standard in tutte le distribuzioni Linux e nel 2018 finalmente arrivò anche su MS Windows.
In questa pagina sono riportati alcuni esempi d'uso verificati solo in ambiente Debian Linux. Per una trattazione esaustiva in rete trovate un mare di documenti (oppure usate man) .
Negli esempi di questa pagina:
Per accedere come utente vv dalla macchina locale rpi2 alla macchina remota VincenzoV.it, due alternative:
pi@rpi2:~ $ ssh VincenzoV.it -l vv
pi@rpi2:~ $ ssh vv@VincenzoV.it
Alla prima connessione ad una macchina remota, viene richiesta la verifica dell'impronta digitale della macchina remota:
The authenticity of host 'VincenzoV.it (1.2.3.4)' can't be
established.
ECDSA key fingerprint is
SHA256:8lHfZVaGHXYwvizkvhIueQB1QpRvf2fPDc+VlZEjneE.
Are you sure you want to continue connecting (yes/no)?
Per conoscere l'impronta digitale della macchina remota:
vv@VincenzoV:~$ ssh-keygen -lf <(ssh-keyscan VincenzoV.it 2>/dev/null)
2048 SHA256:b+oTJr1HX+55HdqKt6E5jzJaUEGqbWIqOgj+rqTrJws
VincenzoV.it (RSA)
256
SHA256:8lHfZVaGHXYwvizkvhIueQB1QpRvf2fPDc+VlZEjneE VincenzoV.it
(ECDSA)
256 SHA256:gcHb/lA9OnqSNFyY29Clgk15qB0CC6IpD4xPG3IuiVk VincenzoV.it
(ED25519)
Per accedere senza digitare ogni volta la password del sistema remoto, serve creare una chiave pubblica/privata ed esportarla su server:
pi@rpi2:~ $ ssh-keygen
pi@rpi2:~ $ cat ~/.ssh/
authorized_keys id_rsa id_rsa.pub
id_rsa è la chiave privata (ovviamente da non divulgare...), id_rsa.pub è la chiave pubblica, da trasferire sulle macchine a cui si vuole accedere con il comando:
pi@rpi2:~ $ ssh-copy-id vv@VincenzoV.it
Ovviamente verrà richiesta la password dell'utente remoto vv. In alternativa è possibile copiare a mano la propria chiave pubblica nel file authorized_keys della macchina remota:
vv@VincenzoV:~$ nano ~/.ssh/authorized_keys
L'immagine seguente mostra un esempio di tale file che permette l'accesso senza password da sei diverse macchine (nota 1):
A volte il server non ascolta sulla porta 22, ma su un'altra (per esempio 3022). Per specificarla:
pi@rpi2:~ $ ssh vv@VincenzoV.it -p 3022
A volte alcuni servizi sono accessibili solo dalla macchina su cui girano (IP sorgente e destinazione: 127.0.0.1), per configurazione del servizio stesso o per impostazione del firewall; ssh può aggirare tali limitazioni, inoltrando il traffico di una porta locale al client ad una porta locale al server remoto.
Un esempio: VincenzoV.it esegue Apache che ascolta solo sull'indirizzo 127.0.0.1, porta 80 (nota 2); per accedere al sito remoto dalla macchina remota è sufficiente digitare (nota 3):
vv@VincenzoV:~$ lynx localhost # Funziona e coincide con "lynx localhost:80"
Fallisce invece l'accesso da locale, ovviamente:
pi@rpi2:~ $ lynx VincenzoV.it # NON funziona perché Apache non ascolta sull'IP pubblico
Il seguente comando permette di accedere anche da una macchina locale al server remoto, attraverso la porta 9000 locale (nota 4):
pi@rpi2:~ $ ssh -L 9000:localhost:80 vv@VincenzoV.it
pi@rpi2:~ $ lynx localhost:9000 # Funziona e accede a VincenzoV.it:80
Due vantaggi, per nulla secondari:
Se si preferisce non aprire un terminale sulla macchina remota e tornare immediatamente al terminale locale, il comando diventa:
pi@rpi2:~ $ ssh -NT -L 9000:localhost:80 vv@VincenzoV.it &
Lo stesso comando può essere usato per accedere ad un servizio attivo su una macchina raggiungibile dalla macchina remota, ma non da quella locale. Un esempio: il server web Vv.intranet (con IP privato) si trova nella rete locale di VincenzoV.it.
vv@VincenzoV:~$ lynx Vv.intranet # Funziona perché Vv.intranet e VincenzoV.it sono sulla sterra rete locale
pi@rpi2:~ $ lynx Vv.intranet # NON funziona perché Vv.intranet ha un IP privato
pi@rpi2:~ $ ssh -NT -L 9001:Vv.intranet:80 vv@VincenzoV.it &
pi@rpi2:~ $ lynx localhost:9001 # Funziona e accede a Vv.intranet
Pagina creata nel gennaio 2019
Ultima modifica di questa pagina: 10 gennaio 2019
Il taccuino tecnico - Permanentemente in fase di
riscrittura
Copyright 2013-2024, Vincenzo Villa (https://www.vincenzov.net)
Quest'opera è stata rilasciata con licenza Creative Commons | Attribuzione 4.0 Internazionale (CC BY 4.0)