Accesso Remoto al Raspberry Pi

Transcript

Accesso Remoto al Raspberry Pi
Accesso Remoto al Raspberry Pi
Usare il Raspberry Pi senza esservi davanti, o senza periferiche connesse
di Filippo Rigotto
SSH
Il protocollo SSH (abilitato di default nel sistema, o attraverso raspi-config) consente di accedere a
una schermata di terminale del Raspberry da qualsiasi pc nella LAN: a tal scopo usare Putty, una
piccola utility senza setup configurabile per l’accesso remoto via SSH: è scaricabile da qui
selezionando la versione per Intel x86, in seguito aprire e impostare come parametri: l’IP del
Raspberry, un utente (pi) e aprire la connessione: sarà chiesta la password corrispondente
(raspberry) e poi si potranno impartire comandi di terminale (al primo avvio accettare l’avviso).
VNC
Più interessante è invece avere il video in remoto, per questo si usa il servizio VNC (che funziona
su X Window System, gestore grafico standard in sistemi Unix-like). Il servizio si compone di un
server (installato sulla macchina da comandare) e un client (o viewer, installato sulla macchina
remota che comanda), per cui l’installazione avviene su due sistemi differenti.
Il software TightVNC è gratuito e multipiattaforma, si scarica qui e contiene nello stesso pacchetto
sia server che client (di questo setup si userà più avanti il modo client).
Sul Raspberry, che opererà in modo server invece, il setup è più elaborato: da terminale
sudo apt-get install tightvncserver per installare il pacchetto, poi tightvncserver per
configurare: bisogna definire una password per l’accesso e una opzionale per sola lettura.
Il servizio si può ora avviare con: vncserver :1 –geometry 1920x1080 –depth 24
0 è il numero del display, geometry è la risoluzione.
Se i caratteri sono della dimensione sbagliata, aggiungere –dpi 96 a fine riga.
Automatizzare il tutto avviando il servizio di video remoto al boot, mediante un cron job:
export EDITOR=nano && sudo crontab –e per aprire il file, poi aggiungere alla fine
@reboot /usr/bin/vncserver :1 –geometry 1920x1080 –depth 24 (-dpi 96).
Chiudere con Ctrl+X, Y/S, Invio.
Prova di funzionamento: da un pc remoto aprire il client installato prima, scrivere l’indirizzo IP del
Raspberry Pi e quando richiesto inserire la password scelta al momento della configurazione.
Controllo in remoto via Web
I servizi/programmi installati sui pc normalmente non sono raggiungibili dall’esterno della rete
locale, per motivi di sicurezza (il router blocca la comunicazione dall’esterno, permette
ovviamente il verso contrario, pena la mancata navigazione in Internet, salvo eccezioni nei casi
dove non si è amministratori della rete in uso). Il router può essere configurato, chi più chi meno,
in base a marca e modello, per bloccare o lasciar passare il traffico di pacchetti di dati in entrambe
le direzioni. Alla sezione port forwarding o sigle simili del router è possibile aprire una “porta” così
che si possa accedere dal web alla rete locale. La prassi standard è usare per questa procedura ippc, tipo porta, porta interna e porta esterna: connessioni dall’esterno con il protocollo
descritto in tipo porta (TCP o UDP) saranno dirottate alla porta interna dell’indirizzo IP dato.
IMPORTANTE! Aprire una porta significa concedere l’accesso alla rete locale dall’esterno, questo
può essere veicolo di malware e/o virus. Prestare quindi attenzione! (evitare porte standard ben
conosciute o eventualmente proteggersi con un firewall).
SSH: il servizio usa la porta TCP 22 per lo scambio di dati
VNC: Il servizio opera sulla porta TCP 590X, dove X è il numero del desktop usato dal server
DNS e IP Dinamico
Nel caso si voglia accedere a servizi o programmi dall’esterno occorre sapere l’IP (pubblico) del
router ed aver aperto la porta per il servizio (vedi capitolo precedente). Ogni router connesso alla
rete possiede un indirizzo IP, che gli è fornito dall’ISP con cui è stato stipulato il contratto.
Solitamente però il Web si naviga con indirizzi testuali (domini) e non numerici.
ⓘ l’indirizzo IP pubblico nella rete si può scoprire dal proprio router o da www.whatismyip.com.
Per fare lo stesso con l’indirizzo IP del router di casa è necessario registrarsi a vari servizi (gratuiti o
meno) con cui è possibile avere dei nomi di dominio e assegnarli all’indirizzo IP scelto.
Tra i servizi gratuiti si cita FreeDNS che tramite registrazione gratuita mette a disposizione domini
di terzo livello su siti pubblici (come ad esempio mooo.com (molto comico) o ignorelist.com, il
dominio completo registrato sarà quindi nomeScelto.mooo.com): dopo essersi registrati e aver
attivato l’account, andare alla sezione Subdomains e scrivere il nome scelto, il dominio a cui farlo
appartenere, A come tipo, l’indirizzo IP pubblico del router.
Il problema principale è che gli indirizzi IP dei router sono assegnati dagli ISP in modo dinamico alla
connessione e cambiano anche con un semplice riavvio: sarà quindi necessario aggiornare spesso
l’indirizzo a cui punta il nome scelto. O si esegue tale procedura manualmente, oppure ci si affida a
Inadyn, un semplice programma che automatizza tutto. Si parla allora di Dynamic DNS o DynDNS.
Dal sito FreeDNS andare sulla sezione Dynamic DNS, dopo essersi autenticati. Aprire il link
DirectURL presente appena sotto un dominio registrato e copiare tutto ciò che compare nella
barra indirizzi dopo ? (d’ora in poi chiamato caratteri).
Sul Raspberry quindi digitare, da terminale:
sudo apt-get install inadyn
per installare il programma
sudo nano /etc/inadyn.conf
per creare un file di configurazione, con testo:
--username user
--password password
(vede se serve aggiornare l’IP ogni 5 minuti)
--update_period_sec 600
--forced_update_period 43200 (aggiorna comunque ogni 12 ore)
--alias dominio,caratteri
--background
--dyndns_system [email protected]
--syslog
Cambiare utente, password, dominio, caratteri con gli appropriati, poi Ctrl+X, Y/S, Invio per uscire.
Ora Inadyn è configurato, per impostare l’avvio al boot usare il servizio cron: sudo crontab –e
poi aggiungere alla fine del file @reboot /usr/bin/inadyn Chiudere con Ctrl+X, Y/S, Invio.
Si può verificare se Inadyn è attivo con ps –A | grep inadyn
Le operazioni effettuate sono visibili con more /var/log/messages | grep INADYN
ⓘ invece di Inadyn si può sfruttare Wget, già presente nel sistema, per aggiornare l’IP: da FreeDNS
andare su Dynamic DNS, poi su Quick Cron Example per il dominio scelto: scrivere l’ultima riga del
file aperto alla fine del file di cron (chiamando sudo crontab –e, con nano come editor).