OpenSSH

Rete per SSH

In fase di sviluppo Leggere le avvertenze In fase di sviluppo

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:

Accedere alla macchina remota

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)

Accedere senza password

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):

~/.ssh/authorized_keys

Porte e tunnel

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

Inoltro di porte locali

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

Note

  1. Le chiavi sono molto lunghe, ben oltre i 100 caratteri
  2. Molti servizi hanno questa importazione predefinita, per esempio squid o MariaDB
  3. lynx è un browser testuale, ma la cosa funziona anche con Firefox e gli altri browser grafici. In modo predefinito usa, ovviamente, la porta 80
  4. La porta 9000 è scelta a caso, purché libera e non privilegiata


Pagina creata nel gennaio 2019
Ultima modifica di questa pagina: 10 gennaio 2019


Pagina principaleAccessibilitàNote legaliPosta elettronicaXHTML 1.0 StrictCSS 3

Vai in cima