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