Cookie

VNC su SSH per connessioni sicure

Pubblicato da TheJoe il

Tempo di lettura stimato: 2 minuti

Attenzione


Questo articolo è stato pubblicato più di un anno fa, potrebbero esserci stati sviluppi.
Ti preghiamo di tenerne conto.

Oggi vediamo come controllare una macchina remota tramite gui con VNC attraverso un tunnel sicuro SSH.

Per chi non lo sapesse, in estrema sintesi, VNC (Virtual Network Computing) è un sistema per display remoto che permette di vedere un ambiente “desktop” (GUI) in funzione non solo sulla macchina su cui è in esecuzione, ma ovunque da internet da una grande varietà di architetture.

SSH (Secure SHell) invece è un programma per fare il login ed eseguire comandi su una macchina remota. La comunicazione avviene in modo cifrato (tunneling) tra due host inaffidabili su reti anche diverse. Attraverso SSH possono essere indirizzate connessioni X11 e porte TCP/IP.

Ed è proprio X11 che vogliamo indirizzare nel tunnel SSH. In questo modo avremo una connessione X11 non sicura all’interno di un tunnel SSH sicuro (rendendo tutta l’operazione sicura).

Alla fine non è una operazione complessa. Dobbiamo istruire SSH alla creazione di un tunnel locale che inoltri localhost sulla porta 5901 alla medesima porta su una macchina remota, ma attraverso la porta SSH di default (22). Il requisito essenziale è quindi l’accesso alla macchina remota tramite la porta 22. Prestiamo attenzione, quindi, anche al port-forwarding sul router, ai firewall fisici e ad eventuali firewall software (iptables) installati su client e server. Senza, la procedura non può funzionare.

Cosa serve?

Sulla macchina locale:

  • OpenSSH
  • VNC Viewer (qualsiasi viewer VNC)

Sulla macchina remota:

  • OpenSSH server
  • VNC server

L’installazione è molto elementare. Per Debian e derivate:

~# apt install openssh vnc-server vnc-viewer

Per RedHat e derivate:

~# yum install openssh-server openssh-clients vnc-server vnc-viewer

Possiamo usare qualsiasi viewer VNC. Io preferisco usare il classico viewer presente nei repository.

Guarda qui:  Testare la velocità della connessione con Linux

Creare il tunnel SSH

La prima cosa da fare è creare la connessione cifrata che instradi i pacchetti da localhost (porta 5901) all’host remoto (porta 5901) attraverso la porta 22. Lo facciamo in un singolo comando:

~$ ssh -L 5901:localhost:5901 user@REMOTE_IP

Con user intendiamo l’utente esistente nella macchina remota, con REMOTE_IP intendiamo l’IP remoto della macchina a cui vogliamo connetterci. Attenzione: non sempre root è configurato per accettare connessioni SSH in ingresso.

Se è la prima volta che ti connetti in SSH con quell’host ti verrà chiesto se vuoi aggiungere quel particolare host alla lista degli host conosciuti: ~/.ssh/known_hosts.

A questo punto occorre inserire la password dell’utente registrato nella macchina remota a cui vogliamo connetterci.

Per una connessione ancora più sicura sarebbe consigliabile usare l’autenticazione SSH su chiavi. Forse ne parlerò in qualche articolo più avanti.

Collegare il client VNC

Ora dobbiamo attivare il client VNC. Come già detto non importa quale usi, quello che importa è l’indirizzo che usi per stabilire la connessione. Anziché scrivere l’IP della macchina remota dovremo scrivere localhost:5091. Questo perché abbiamo già creato un tunnel dal client:5901 al server:5901. Una volta che ci connetteremo con localhost il client VNC userà il tunnel SSH appena creato per connettersi al server sulla porta 5901.

Benché esistano client che integrano la funzione SSH all’interno di VNC viewer questo è il metodo più semplice per capire cosa succede quando inoltriamo un flusso dati su SSH.


TheJoe

Mantengo questo blog a livello amatoriale dal 2009. Sono appassionato di grafica, tecnologia, software Open Source. Fra i miei articoli non sarà difficile trovarne circa la musica, ed alcuni di riflessioni personali, ma preferisco indirizzare la linea del blog principalmente verso la tecnologia. Per informazioni contattami.

0 commenti

Lascia un commento

Segnaposto per l'avatar

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.