Pràctica de connexió remota a una Raspberry Pi
Contingut
- 1 Identificació de les Raspberry Pi mitjançant protocol mDNS
- 2 Accés ssh mitjançant la IP
- 3 Adjunteu la Raspberry Pi a una VPN
- 4 Usuaris i grups
- 5 Accés amb el FileZilla
- 6 Feu accessible una nova carpeta mitjançant Samba
- 7 Accés sense contrasenya
- 8 Túnel Invers
- 9 AutoSSH
- 10 screen
- 11 Sortiu de la xarxa VPN gestionada per vosaltres
Identificació de les Raspberry Pi mitjançant protocol mDNS
Aquest tipus de Raspberry Pi Zero W es poden accedir des de la xarxa JESUITESFP d'aquesta manera:
A la foto hi surt r07 (pot haver-hi entre r00 i r30). Per accedir-hi mitjançant ssh des d'un sistema Linux:
ssh -o ServerAliveInterval=30 pi@rpizw07.local
L'opció ServerAliveInterval serveix per a que es pugui mantenir la connexió ssh i tramet un byte nul cada cert temps, en aquest cas cada 30 segons.
Aquest altra tipus de placa (rb05 a la foto) s'accedix des d'un un sistema Linux:
ssh -o ServerAliveInterval=30 pi@robot05.local
Accés ssh mitjançant la IP
a) Un cop heu entrat a la Raspberry Pi Zero W assignada, heu de trobar quina és la seva IP. Un cop ja sabeu quina és, i l'heu apuntat, heu de sortir de la connexió SSH.
b) Amb la IP trobada a l'apartat anterior accediu-hi mitjançant el programa putty fent servir la IP i no pas el seu nom (hostname)
Adjunteu la Raspberry Pi a una VPN
c) Adjunteu la Raspberry Pi Zero W assignada a una xarxa VPN de ZeroTier gestionada per vosaltres. Si sou un grup de dos heu d'ajuntar-ho a dues xarxes VPN de ZeroTier; una per membre del grup (l'àmbit de xarxa de cada usuari ha de ser diferent i ambdós han de ser diferents a 172.30.x.x).
d) Sortiu de la sessió. Entreu a la Raspberry Pi Zero W assignada fent servir una aplicació de mòbil. Feu una captura a on es vegi el nom de l'equip (hostname).
Usuaris i grups
Instal·leu el paquet de Debian per a poder fer servir mkpasswd:
sudo apt install whois
e) Afegiu-hi els usuaris usr01 i usr02 (amb contrasenyes contraSeNYa01 i contraSeNYa02, respectivament) membres d'un nou grup anomenat usuaris:
sudo useradd usr01 -g users -d /home/usr01 -m -s /bin/bash -p $(mkpasswd contraSeNYa01)
f) Feu que aquests dos nous usuaris siguin membres dels grup sudo i dialout:
sudo usermod -aG sudo usr01 sudo usermod -aG dialout usr01
també es podia haver fet al pas previ fent:
sudo useradd usr01 -g users -d /home/usr01 -m -s /bin/bash -G sudo,dialout -p $(mkpasswd contraSeNYa01)
g) Sortiu de la connexió ssh. Entreu remotament a la Raspberry Pi Zero W assignada autentique-vos, cada membre del grup, com a usr01 i usr02.
h) Dins del vostre directori /home/usr0x, feu una nova carpeta anomenada xxyyzz (essent xx les dues primeres lletres del vostre nom, yy les dues primeres del vostre primer cognom i z les dues primeres lletres del vostre segon cognom. Per exemple Josep Ros Pineda seria joropi).
Accés amb el FileZilla
i) Feu servir el programa Filezilla per a pujar a la vostra carpeta, feta a l'apartat anterior, un arxiu de text, anomenat quiSoc.txt, amb el contingut del vostre nom i dos cognoms.
j) Fent servir l'ordre cat al terminal remot visualitzeu el contingut de l'arxiu quiSoc.txt que acabeu de pujar.
Feu accessible una nova carpeta mitjançant Samba
k) Sortiu i hi entreu amb l'usuari pi. Instal·leu els paquets del servidor Samba:
sudo apt-get install samba cifs-utils
en cas de que aquests paquets ja hi siguin instal·lats, desinstal·leu-los:
sudo aptitude purge samba cifs-utils
i torneu-los a instal·lar.
l) Afegiu l'usuaris pi (amb contrasenya raspberry) a Samba:
sudo smbpasswd -a pi
m) Feu una còpia de seguretat de l'arxiu smb.conf:
sudo cp /etc/samba/smb.conf smb.old
n) Feu la carpeta /home/pi/compartit donant-li tots els permisos d'accés:
mkdir /home/pi/compartit chmod 0777 /home/pi/compartit
o) Editeu l'arxiu smb.conf:
sudo nano /etc/samba/smb.conf
i hi inseriu:
[pi Compartit] comment = Carpeta RPi compartida path = /home/pi/compartit writeable = yes create mask = 0777 browseable = Yes valid users @users force user = pi
p) Reinicieu el servei Samba:
sudo /etc/init.d/samba restart
q) Verifiqueu que podeu accedir des de Windows. Feu servir el navegador d'arxius per a pujar a la vostra carpeta un arxiu de text, anomenat quiSoc.txt, amb el contingut del vostre nom i dos cognoms. Des de la Raspberry Pi Zero W, fent servir el programa nano afegiu-hi cursant un cicle d'informàtica a l'Escola del Clot. Des de Windows verifiqueu que el contingut de l'arxiu quiSoc.txt ha estat modificat.
Accés sense contrasenya
r) Des de Linux a la Raspberry
Genereu una clau al vostre ordinador Linux (si no existeix ~/.ssh/id_rsa.pub):
1- Obriu una sessió de terminal.
2- Creeu la carpeta ~/.ssh, en cas de que no existeixi:
mkdir -p $HOME/.ssh
3- Aneu al directori ~/.ssh:
cd ~/.ssh
i premeu Enter
4- Genereu les vostres claus:
ssh-keygen -t rsa
5- Premeu Enter per a contestar totes les preguntes per defecte.
Desplegueu la clau a la Raspberry Pi Zero W assignada:
6- Des de la vostra màquina Linux, entreu (canviant robot01 pel vostre hostname assignat):
scp ~/.ssh/id_rsa.pub pi@robot01.local:temp_id_rsa_key.pub
premeu Enter i entreu la contrasenya quan us ho demani (la contrasenya per defecte és raspberry).
7- Obriu una sessió SSH a la vostra Raspberry Pi des del vostre ordinador Linux (canvieu robot01 pel vostre hostname assignat):
ssh -o ServerAliveInterval=30 pi@robot01.local
premeu Enter i entreu la contrasenya quan us ho demani (la contrasenya per defecte és raspberry).
8- Creeu la carpeta ~/.ssh, en cas de que no existeixi:
mkdir -p $HOME/.ssh
9- Afegiu la vostra clau a l'arxiu authorized_keys:
cat ~/temp_id_rsa_key.pub >> ~/.ssh/authorized_keys
10- Esborreu l'arxiu amb la clau temporal:
rm temp_id_rsa_key.pub
11- Protegiu l'arxiu de claus SSH:
chmod 600 ~/.ssh/authorized_keys
12- Protegiu el directori SSH:
chmod 700 ~/.ssh
13- Sortiu de la sessió i torneu-hi a entrar. Si tot ha anat bé, hi podeu accedir sense introduir la contrasenya.
s) Des de la Raspberry a Linux
Feu el procés invers de l'apartat anterior (a on diu Raspberry serà la vostra màquina Linux i a on diu Linux serà la vostra Raspberry).
Túnel Invers
t) Túnel invers
Des de Linux (canviant robot01.local per la IP assignada per la VPN del ZeroTier):
ssh -o ServerAliveInterval=30 -R 12345:localhost:22 pi@robot01.local
Fen servir el putty accediu a la Raspberry Pi Zero W assignada i feu una connexió a la vostra màquina Linux (canvieu smx2 pel vostre nom d'usuari a la màquina Linux):
ssh -p 12345 smx2@localhost
Un cop heu verificat el funcionament, sortiu dels dos terminals.
AutoSSH
Si el túnel invers deixa de funcionar (acostuma a ocórrer en xarxes molt ocupades o d'escassa qualitat, com el 3G), es pot utilitzar el paquet autossh en lloc de l'ssh per a establir la connexió que s’encarregarà de mantenir el túnel obert reiniciant automàticament la connexió.
u) autossh
Instal·leu l'autossh a la vostra màquina Linux:
sudo apt install autossh
Des de la vostra màquina Linux, executeu l'autossh (canvieu robot01.local per la IP assignada per la VPN del ZeroTier):
autossh -M 65500 -o ServerAliveInterval=30 -R 12345:localhost:22 pi@robot01.local
Fen servir el putty accediu a la Raspberry Pi Zero W assignada i feu una connexió a la vostra màquina Linux (canvieu smx2 pel vostre nom d'usuari a la màquina Linux):
ssh -p 12345 smx2@localhost
Un cop heu verificat el funcionament, sortiu dels dos terminals.
screen
Quan fem una connexió remota, i hem de fer accions que siguin llargues, pot haver el risc de perdre-hi la connexió (per exemple al fer un accés des del mòbil quan sou al tren i passeu per un túnel). Això implicarà haver de repetir l'acció.
Una bona idea és fer aquestes operacions en segon terme emprant l'screen
v) Persistència de les accions remotes
En cas de no tenir instal·lat l'screen a la Raspberry Pi Zero W assignada:
sudo apt install screen
Entreu a l'screen de la Raspberry Pi Zero W:
screen
Llegiu la informació i premeu Enter o espai per a saltar l'avís. Feu ping a una IP coneguda:
ping 1.1.1.1
Sortiu del screen prement Ctrl A + D (la tecla de Ctrl premuda al mateix temps que la tecla A i després, sense prémer ni el Ctrl ni la tecla A, premeu la tecla D)
Sortiu de la sessió:
exit
Torneu a entrar a la Raspberry Pi Zero W assignada i entreu:
screen -r
Malgrat heu sortit de la sessió, el ping ha seguit funcionant en segon terme. Per a cancel·lar el ping premeu Ctrl C.
Sortiu de la sessió de screen:
exit
Ara sou a la sessió normal. Sortiu de la sessió:
exit
Nota: Si per equivocació entreu a més d'un screen o es vol treballar amb més d'un screen alhora, per exemple:
pi@robot01:~ $ screen [detached from 17737.pts-1.robot01] pi@robot01:~ $ screen [detached from 17747.pts-1.robot01]
Per diferenciar a quin screen s'accedeix hem d'indicar-ho. En cas de no saber quants screens estan funcionant:
pi@robot01:~ $ screen -list There are screens on: 17747.pts-1.robot01 (07/03/19 12:11:21) (Detached) 17737.pts-1.robot01 (07/03/19 12:11:06) (Detached) 2 Sockets in /run/screen/S-pi.
Accés individualitzat als screens que estan funcionant:
pi@robot01:~ $ screen -r 17737.pts-1.robot01 [detached from 17737.pts-1.robot01] pi@robot01:~ $ screen -r 17747.pts-1.robot01 [detached from 17747.pts-1.robot01]
Sortiu de la xarxa VPN gestionada per vosaltres
x) Assegureu-vos d'accedir a la Raspberry Pi Zero W assignada fent servir el nom de l'equip (per exemple rpizw07.local) o la IP assignada per la xarxa JESUITESFP. I no pas des de la IP assignada per la VPN de ZeroTier.
y) Desadjunteu-vos de les xarxes de ZeroTier gestionades per vosaltres.