Salta la barra di navigazione [1] - Vai alla barra di navigazione [3] - Scrivimi una mail [4]

Usare SSH-server con Raspberry Pi

Sommario - Novità - Tutorial - Taccuino - Progetti - Risorse - Non solo elettronica

Le connessioni a Raspberry PI

Raspberry Pi permette la connessione diretta ai dispositivi periferici tipici del desktop: monitor, tastiera, mouse. Se a questi cavi aggiungiamo la rete, l'alimentazione e (spesso, per quanto mi riguarda) il connettore GPIO otteniamo un piccolo circuito stampato sommerso da oggetti ben più grandi e pesanti di lui. Direi qualcosa di impossibile da tenere fermo... o spostare. Senza contare che non sempre abbiamo un monitor e una tastiera a portata di mano...

Per questo, secondo me, è opportuno connettersi a Raspberry Pi remotamente attraverso SSH (headless), usando un normale PC. Tra l'altro questo permette velocemente la connessione ad internet, la lettura della posta o di PDF, il copia e incolla immediato... Anzi: questo è il metodo che uso sempre per lavorare con le mia macchine linux, reali o virtuali che siano.

Installare SSH-server

La prima cosa da fare è verificare l'installazione su Raspberry Pi del server SSH e, in caso negativo, provvedere. Ovviamente per fare ciò è necessario usare tastiera e monitor (nota 1)

Per installare il server SSH è possibile utilizzare lo strumento di configurazione generale presente in Raspbian:

vv@vv-raspberrypi:~$ sudo raspi-config

In alternativa è possibile lavorare al modo Debian:

vv@vv-raspberrypi:~$ sudo aptitude install ssh

Occorre a questo punto verificare il funzionamento. Ma prima occorre scoprire l'indirizzo IP, visto che è in genere attivo nella rete un server dhcp (nota 5):

pi@vv-rpi2:~ $ ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:a6:e0:af brd ff:ff:ff:ff:ff:ff
inet 192.168.111.13/24 brd 192.168.111.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::dc3a:2f30:4700:5fd6/64 scope link
valid_lft forever preferred_lft forever

Tutto bene! Ora non occorre far altro che connettersi, usando dal PC principale ssh (oppure puTTY o simili, per chi ancora è rimasto a MS Windows): (nota 4)

vv@vv-15rse:~$ ssh 192.168.111.13 -l pi
pi@192.168.111.13's password:

In alternativa, dall'identico significato:

vv@vv-15rse:~$ ssh pi@192.168.111.13

Se si utilizza una macchina con installato un X-server (qualunque desktop Linux è adatto) è possibile anche utilizzare programmi con interfaccia grafica. Al momento della connessione occorre specificarlo nella linea di comando:

vv@vv-15rse:~$ ssh -X 192.168.111.13 -l pi

Per chi trova scomodo digitare ogni volta la password, consiglio vivamente di caricare sul Raspberry Pi la propria chiave pubblica.

vv@vv-15rse:~$ ssh-copy-id pi@192.168.111.13

Scoprire l'indirizzo IP di Raspberry

Ora ci rimane un solo problema: scoprire l'indirizzo IP del Raspberry Pi. Nel caso precedente era relativamente facile: avevamo monitor e tastiera collegati! Ma questo è proprio quello che vogliamo evitare...

Propongo diverse strade, da usare a seconda dei casi e delle preferenze.

DHCP e DNS

Se usate una rete minimamente complessa questa opzione dovrebbe essere automatica: non dovete far nulla! Occorre che la rete disponga di un server DHCP ed un server DNS, integrati tra di loro. Se così è (e lo è in tutte le reti che uso regolarmente, ma in genere non nelle semplici reti SOHO) per connettersi basta digitare il nome del proprio Raspberry Pi:

vv@vv-15rse:~$ ssh vv-raspberrypita per

Il problema potrebbe sorgere se due Raspberry Pi hanno lo stesso nome... Per questo è bene personalizzarne da subito il nome:

vv@vv-raspberrypi:~$ sudo joe /etc/hostname

Inutile dire che è il metodo che preferisco di gran lunga, con il solo "piccolo" problema di richiedere servizi di rete configurati. Chiedete eventualmente al vostro SysAdmin (oppure RTFM, dove F sta per amichevole, senza ironia).

IP statico

Se l'IP di Raspberry Pi è statico... non ci sono ovviamente problemi! Per fare ciò occorre modificare il file /etc/interfaces, come nell'esempio di seguito mostrato:

vv@vv-raspberrypi:~$ cat /etc/network/interfaces
auto lo

iface lo inet loopback
# iface eth0 inet dhcp <- Configurazione originale

auto eth0
iface eth0 inet static
address 192.168.123.250
netmask 255.255.255.0
network 192.168.123.0
broadcast 192.168.123.255
gateway 192.168.123.254

Per modificare il file /etc/network/interfaces è possibile semplicemente inserire la scheda SD in un normale PC linux e modificare il file, con un qualunque editor di testo (come root). Ovviamente gli indirizzi vanno adattati alla propria rete.

Per accedere via SSH occorre poi digitare l'IP statico, come già mostrato. Se ritenete noioso digitare ogni volta un numero, potete inserirlo nel vostro file /etc/hosts.

Problema: se cambio rete (vado a scuola o da un amico) devo modificare il file /etc/network/interfaces per accedere ad internet o comunque utilizzare i servizi della rete a cui sono collegato.

IP statico - bis

Occorre aggiungere all'interfaccia eth0 (già automaticamente configurata come dinamica) un secondo IP, statico, associato ad un alias eth0:XX. Per fare ciò occorre modificare il file  /etc/network/interfaces, come di seguito mostrato come esempio:

vv@vv-raspberrypi:~$ cat /etc/network/interfaces
auto lo

iface lo inet loopback
iface eth0 inet dhcp

auto eth0:1
iface eth0:1 inet static
address 192.168.123.250
netmask 255.255.255.0
network 192.168.123.0
broadcast 192.168.123.255

Per accedere via SSH occorre digitare l'IP statico (ovviamente sul PC utilizzato occorre aver opportunamente definito le rotte e/o gli indirizzi IP) oppure quello dinamico, se già noto per altre strade.

IP (quasi) statico - ter

Molti server DHCP, inclusi quelli integrati in molti router/AP, permettono di assegnare sempre lo stesso IP ad uno specifico indirizzo MAC. Per fare ciò occorre leggere il manuale del proprio dispositivo.

Per conoscere L'indirizzo MAC del proprio Raspberry;

vv@vv-raspberrypi:~$ ifconfig
eth0 Link encap:Ethernet HWaddr b8:27:eb:f8:31:71
...

Occorre dire che molti DHCP server tendono a riassegnare lo stesso IP alla stessa macchina, ottenendo un risultato simile anche se assolutamente non garantito.

NMAP

Un po' lungo se la rete locale è grande; di buono c'è che non si richiede nulla né alla rete né al Raspberry Pi. (nota 2)

root@vv-15rse:/home/vv# nmap -sP 192.168.111.1-255
...
Nmap scan report for vv-raspberrypi.village (192.168.111.31)
Host is up (0.00083s latency).
MAC Address: B8:27:EB:F8:31:71 (Raspberry Pi Foundation)
...

IPv6

IPv6 permette la configurazione automatica dell'indirizzo usato nella rete locale partendo dall'indirizzo fisico della scheda di rete. In questo modo l'indirizzo è fisso e raggiungibile senza difficoltà. In termini tecnici useremo un indirizzo link-local (fe80::/10) con SLAAC e EUI/64.

IPv6 e SLAAC sono già attivi, ma occorre attivare EUI-64 in modo tale che l'indirizzo sia legato al MAC address:

pi@vv-rpi2:~ $ sudo nano /etc/dhcpcd.conf

# slaac private
slaac hardware

Dopo aver riavviato, avremo l'indirizzo IPv6, indipendente dalla rete, a cui collegarsi: (nota 3)

pi@vv-rpi2:~ $ ip addr
[...]
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether b8:27:eb:a6:e0:af brd ff:ff:ff:ff:ff:ff
inet 192.168.111.13/24 brd 192.168.111.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::ba27:ebff:fea6:e0af/64 scope link
valid_lft forever preferred_lft forever

vv@vv-15rse:~$ ssh pi@fe80::ba27:ebff:fea6:e0af%eth0

O anche:

vv@vv-15rse:~$ rpi3="pi@fe80::ba27:ebff:fea6:e0af%eth0"
vv@vv-15rse:~$ ssh $rpi3

Le connessioni a Raspberry... situazione decisamente migliorata
Direi che il risultato merita :-)

WiFi

Ovviamente il passaggio successivo è quello di togliere il cavo di rete ed usare una chiavetta WiFi. Nulla di più semplice! E magari anche l'alimentatore USB... sostituendolo con una normale batteria esterna da cellulare, per qualche ora di autonomia:

Le connessioni a Raspberry... wireless

Note

  1. Spesso sshd (il demone di ssh) è già installato e configurato fin dalla prima installazione. Per questo, volendo, è possibile un'installazione alla cieca.
  2. Potrebbe essere una buona idea stampare l'indirizzo MAC su un'etichetta, direttamente sul Raspberry Pi.
  3. Potrebbe essere una buona idea stampare gli indirizzi IPv6 e MAC su un'etichetta, direttamente sul Raspberry Pi
  4.  vv-15rse è il nome proprio del PC principale, pi l'utente utilizzato per la connessione
  5. vv-rpi2 è il nome proprio del Raspberry Pi e pi è l'utente, di default, utilizzato per la connessione

Parole chiave: SSH - Raspberry Pi - DHCP - DNS - IP - MAC - headless - Wifi

Ultima modifica di questa pagina: 13 giugno 2016


EN - Pagina principale - Sommario - Accessibilità - Note legali e privacy policy - Posta elettronica

XHTML 1.0 Strict - CSS 3