joi, 9 ianuarie 2014

BeagleBoard si Ubuntu - ssh si DDNS

 English: in the previous post, a BeagleBoard Rev C4 was setup hardware wise and Ubuntu was installed as an OS with internet access. In this post, the BeagleBoard Rev C4 will be setup to have SSH access and to have SSH access over Internet using DynamicDNS.
Same setup can be used for RaspberryPi - no fear!

For more details please use Google Translate (Romanian to English) and also use the coment area below!

***************************
PS: aceste instructiuni sunt valide si pentru o placa RaspberryPi.
Avem o placa BeagleBoard Rev C4 la care am legat o tastatura, un mouse, un monitor video cu intrare digitala (HDMI) si conexiune la internet - pasii pt a ajunge la acest nivel sunt descrisi aici.


Configuratie BeagleBoard Rev C4 (sursa imaginii: undeve pe Internet)

Acum putem face cu aceasta placa BeagleBoard Rev C4 (un single board computer) o multime de lucruri, automatizari, putem programa in Python etc. Pt ca procesorul placii (OMAP3530) este doar la 600MHz, eu nu recomand utilizarea unei interfete grafice (GUI - graphic user interface), se va misca destul de lent si pierzi vremea (daca totusi este necesara (spre exemplu usurinta setarii conexiunii 3G (WLAN)), recomand LXDE, pasii sunt descrisi aici). Linux (Unix) foloseste linia de comanda.

In principiu e simplu: scrii comenzi in linia de comanda pt BeagleBoard si le executi. Pt ca nu sti comenzile, ai nevoie sa te dai pe net pt a le afla, pt a le descoepri parametri (sigur ca poti folosi man page-ul unei comenzi, poti folosi help-ul in linia de comanda, dar pt un incepator e mai complicat). Adica stai cu ochii pe 2 monitoare de computer: unul cu Windows / Linux cu interfata grafica si te dai pe net in cautarea solutiilor si in urmarirea documentatiilor de care avem nevoie ca sa lucram cu BeagleBoard Rev C4  si   al doilea monitor la care este legata placa BeagleBoard. Este destul de incomod acest mod de lucru, nu este nici macar optim caci Linux (Unix) a fost gandit pt a fi accesibil altfel, de la distanta (remote access).

Practic putem folosi o metoda (si in Windows si in Linux) cu care sa ne conectam la BeagleBoard si sa ii dam comenzi ca si cum am fi acolo, la tastatura legata la BeagleBoard :)

Pt aceasta avem nevoie sa instalam un server de SSH pe placa BB, in cazul in care nu este instalat deja, verificam asta cu comanda:

ps -A | grep sshd

si raspunsul   
00:00:00 sshd 
indica faptul ca ruleaza deja serverul de ssh, deci nu mai e necesara instalarea serverului de ssh.

Daca este necesara instalarea, instalam openssh-server de la tastaura atasata la BB:

sudo apt-get install openssh-server

Apoi dupa ce avem SSH, trebuie sa configuram anumite detalii. Din motive de securitate, autentificarea se facem din start cu chei de criptare, o metoda mai greu de spart, mai sigura, insa pt aplicatia noastra poate fi dejavantajos (daca folosim mai multe masini (computere) de pe care ne conectam la BB, atunci pe fiecare trebuie sa avem cheile de criptare samd), recomand ca pt moment sa schimbam modul de autentificare cu utilizator si parola (asa cum avem user si password la BeagleBoard, asa putem face si cu conexiunea prin SSH).
(aici sunt explicate setarile https://help.ubuntu.com/community/SSH/OpenSSH/Configuring si aici https://help.ubuntu.com/community/SSH/OpenSSH/Keys)
Editam cu nano fisierul sshd_config de la tastatura atasata la placa BeagleBoard:

sudo nano /etc/ssh/sshd_config

Modificarile le facem in liniile corespunzatoare (din yes, facem no si scoatem comentariul unei linii, adica semnul #):

RSAAuthentication no #era yes
PubkeyAuthentication no # era yes
PasswordAuthentication yes #era comentata linia

PS: daca totusi ne-am conectat inainte de a seta utilizator si parola (din Ubuntu (Linux)) la BB, vom avea cererea de cheie, cum nu am setat-o inainte, vom avea ulterior intrebari enervante de genul "gazda unde vrei sa te conectezi era cu chei, acum e cu parola, sigru vrei sa te conectezi?", pt a scapa de asta, comanda urmatoare sterge aceste setari de pe computerul tau cu Ubuntu (comanda e pt computer, nu pt BB):

rm ~/.ssh/known_hosts

Dupa ce am facut modificarile, trebuie repornita aplicatia (care se cheama proces in Linux) tot de la tastatura legata la BeagleBoard:

sudo restart ssh

Placa BB este legata prin intermediul unui cablu de retea la un ruter la care este legat si computerul cu Windows / Linux de pe care am instalat Linux pe cardul SD (episodul anterior). Practic cand am legat placa BB la ruter, ruterul i-a dat placii BB (prin mecanismul de DHCP) un IP disponibil si placa BeagleBoard se poate conecta la internet. Problema e ca acest IP nu este fix, la fiecare conectare ruterul poate aloca urmatorul IP disponibil in intervalul specificat pt DHCP, de aceea trebuie sa ne conectam la meniul ruterului, acolo sa mergem la sectiunea de clienti conectati si sa vedem ce adresa MAC are placa BB (sau comanda ifconfig -a aplicata placii), apoi setam ruterul ca pt adresa MAC a BB sa ne dea intotdeauna acelasi IP (spre exemplu 192.168.1.15). Lucrul acesta este necesar pt ca altfel nu stim cum sa ne conectam de la distanta la placa BB - nu stim ce adresa IP are placa. (cauta pe Google "how to setup port forwarding " pt ruterul tau si vei gasi detalii).

Daca avem un computer cu Linux, combinatia Ctrl + Alt + t  va deschide un terminal (o fereastra cu linie de comanda) din care ne conectam la placa BeagleBoard. Asadar indicam ca dorim sa ne conectam prin SSH la IPul 192.168.1.15, portul 22 si cu userul ubuntu:

ssh ubuntu@192.168.1.15 -p 22

Vom fi intrebati de parola, dupa care vom avea acces complet la placa BeagleBoard ca si cum am fi in fata tastaturii. Este foarte facil asa caci putem cauta o comanda de Linux pe internet, dam copy si paste in fereastra de acces la BB, simplu, nu? :)

Pt a inchide sesiunea ssh, dam comanda

exit

Daca avem un computer cu Windows, trebuie sa folosim o aplicatie care se numeste PuTTY, aceasta aplcatie este gratuita si ne ajuta sa ne conectam la placa BeagleBoard. trebuie sa specificam adresa IP, portul si ca vrem SSH, apoi ne conectam (se poate salva acest profil astfel incat sa nu fim nevoiti ca de fiecare data sa introducem datele manual).



PuTTY setat pt acces prin SSH din reteaua curenta 
la placa BeagleBoard Rev C4 (cu adresa IP 192.168.1.15)


Aceasta conexiune (si pe Linux si pe Windows) s-a facut cu placa BB si computerul conectate la acelasi ruter (aceeasi retea), adica placa BB avea adresa IP 192.168.1.15, ruterul adresa 192.168.1.1,  computerul avea adresa 192.168.1.9 (doar un exemplu). Daca dorim sa ne conectam din afara retelei la placa BB? Adica am o conexiune la internet si vreau sa ma conectez la placa BB de oriunde din lume.

Aici vom folosi ceea ce se numeste Dynamic DNS (Domain Name Server). Ruterul este conectat la un furnizor de servicii de internet (ISP - internet service provider: RDS, UPS, ClickNet samd). Acest ISP se comporta pt noi ca si un ruter: cand ne conectam, primim urmatorul IP disponibil, care pe deasupra se schimba mai des decat la ruterul de acasa, chiar si la 3-4 ore. Asadar daca pt reteaua noastra a fost simplu sa setam ruterul sa dea acelasi IP placii BeagleBoard, aici nu mai putem face acest lucru, IPul este dinamic. De aceea vom folosi DDNS (dynamic DNS (Domain Name Server)).

Pt DDNS, recomand un cont gratuit pe freedns.afraid.org (se seteaza simplu). Acolo poti aloca un subdomeniu gen domeniulmeu.mooo.com (verificati daca este disponibil).

Mai trebuie instalata o aplicatie pe placa BB, se numeste inadyn:

sudo apt-get install inadyn

Apoi urmariti instructiunile de aici: http://ubuntuforums.org/showthread.php?t=1758930    si aici este explicat ce anume este Dynamic DNS: 
https://help.ubuntu.com/community/DynamicDNS  

Doar atat: verificam ca inadyn ruleaza:

ps -A | grep inadyn

si raspunsul e de in genul:
  00:00:00 inadyn

Mecanismul este in felul urmator: ai cont pe freedns.afraid.org (adresa domeniulmeu.mooo.com), ai instalat inadyn pe placa BB. inadyn verifica ce IP dat de ISP are ruterul tau, apoi se conecteaza la contul de pe freedns.afraid.org si acolo scrie acest IP, astfel ca intotdeauna adresa IP curenta este asociata adresei domeniulmeu.mooo.com de pe freedns.afraid.org. Deci tu vei accesa adresa domeniulmeu.mooo.com si de fapt te vei conecta la adresa IP curenta data de ISP ruterului de acasa.

Acum trebuie ca ruterul sa fie invatat sa puna placa BB in legatura cu noi prin internet: ne conectam la ruter (browser de internet si adresa 192.168.1.1 sau in genul) si mergem la meniul de port forwarding unde setam ca atunci cand vine o cerere catre IPul ruterului, acea cerere daca e pt portul asociat la SSH (22 in cazul nostru), sa fie directionata catre adresa IP a placii BeagleBoard (192.168.1.15 in cazul nostru).

Daca sunt probleme si nu functioneaza DDNSul, verificam ca daemon-ul de ssh este activ:

ps -A | grep sshd

Daca este pornit, este posbil ca el sa asculte alt port decat cel pe care vrem noi sa ne adresam (alt port diferit de portul 22):

sudo ss -lnp | grep sshd

Conectarea se face foarte simplu, folosim tot PuTTY in Windows (sau Linux / Ubuntu):


PuTTY setat pt acces prin SSH din exteriorul retelei (din Internet)
la placa BeagleBoard Rev C4 prin  Dynamic DNS 
(domeniul "domeniulmeu.mooo.com" de pe freedns.afraid.org)

De asemenea se poate folosi in Linux in linia de comanda extrem de simplu:

ssh ubuntu@domeniulmeu.mooo.com -p 22

Asadar acum avem o placa BeagleBoard care ruleaza Ubuntu si care poate fi accesata de oriunde din Internet prin SSH cu ajutorul DDNS. 

Pentru RaspberryPi, se pot folosi aceeasi pasi ori instructiunile de la link-urile urmatoare:
http://www.techjawab.com/2013/06/setup-dynamic-dns-dyndns-for-free-on.html

http://people.virginia.edu/~ll2bf/docs/nix/rpi_server.html

***************************
 English: in the previous post, a BeagleBoard Rev C4 was setup hardware wise and Ubuntu was installed as an OS with internet access. In this post, the BeagleBoard Rev C4 will be setup to have SSH access and to have SSH access over Internet using DynamicDNS.

For more details please use Google Translate (Romanian to English) and also use the coment area below!

Niciun comentariu:

Trimiteți un comentariu