This shows you the differences between two versions of the page.
rl:labs:07:contents:01 [2014/11/20 14:38] razvan.deaconescu [01. [10p] Configurare și ștergere adrese IP] |
rl:labs:07:contents:01 [2023/11/05 12:41] (current) vlad_iulius.nastase |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ==== 01. [10p] Configurare și ștergere adrese IP ==== | + | ==== 1. [10p] Conectare SSH folosind cheie publică ==== |
- | Dorim, pentru început, să asigurăm conectivitate între stația ''host'' și ''red''. În acest tutorial vom folosi suita ''iproute'' de pe Linux pentru a realiza configurările frecvente de nivel 3 (adresare IP). | + | Dorim să realizăm o sesiune securizată shell la distanță (//remote shell//). |
- | Vom configura câte o adresă IP din clasa ''192.168.0.0/24'' pe interfețele de legătură dintre stația ''host'' și stația ''red''. Adică între ''host(veth-red)'' (interfața ''veth-red'' de pe stația ''host'') și ''red(eth0)'' (interfața ''eth0'' de pe stația ''red''). | + | <spoiler Sumar exerciții conectare SSH (dați click)> |
+ | Pentru exercițiile de conectare SSH, vom urma pașii: | ||
+ | - Conectare folosind SSH cu chei. Totul este configurat și vedem că merge. | ||
+ | - Copiere cheie pentru conectare SSH. Cheia există și vom face apoi conectare ca mai sus. | ||
+ | - Crearea cheie, copiere și conectare SSH. | ||
- | Pe interfața ''veth-red'' de pe stația ''host'' vom configura adresa IP ''192.168.0.1'' cu masca ''255.255.255.0'' (''/24'' în forma prefixată):<code bash> | + | Urmăm pașii în acest fel pentru a urmări întâi comenzile de conectare, sintaxa SSH și rolul său și apoi să investigăm cum se întâmplă lucrurile în spate. |
- | root@host:~# ip address add 192.168.0.1/24 dev veth-red | + | |
- | </code> | + | |
- | Observați că suita ''iproute2'' (adică utilitarul ''ip'') folosește masca în format prefixat: ''/24''. | + | |
- | Imediat după o configurare de rețea rulați o comandă pentru validarea configurării. În cazul nostru este comanda de afișare a configurării de nivel 3 (Rețea), adică a adresei IP:<code bash> | + | În cazul în care veți avea un cont pe un server și veți dori conectare SSH cu chei, veți urma doar pasul 3. |
- | root@host:~# ip address show dev veth-red | + | </spoiler> |
- | 47: veth-red: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 | + | |
- | link/ether 4e:1b:b8:d9:14:bb brd ff:ff:ff:ff:ff:ff | + | |
- | inet 192.168.0.1/24 scope global veth-red | + | |
- | </code> | + | |
- | Pe interfața ''eth0'' de pe stația ''red'' vom configura adresa IP ''192.168.0.2'' cu masca ''255.255.255.0'' (''/24'' în forma prefixată):<code bash> | + | Din contul ''student'' de pe stația ''red'' conectați-vă la stația ''host'' prin SSH prin rularea comenzii<code bash> |
- | root@host:~# go red | + | student@red:~$ ssh student@host |
[...] | [...] | ||
- | root@red:~# ip address add 192.168.0.2/24 dev eth0 | + | student@host:~$ |
- | 46: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 | + | </code> Observați faptul că v-ați conectat direct, fără parolă, întrucât autentificarea s-a realizat folosind cheie publică. Folosiți combinația de taste ''Ctrl+d'' sau comanda ''exit'' pentru a închide sesiunea de shell la distanță. |
- | link/ether 00:16:3e:8e:84:21 brd ff:ff:ff:ff:ff:ff | + | |
- | inet 192.168.0.2/24 scope global eth0 | + | |
- | inet6 fe80::216:3eff:fe8e:8421/64 scope link | + | |
- | valid_lft forever preferred_lft forever | + | |
- | </code> | + | |
- | La fel, după o configurare de rețea, am rulat comanda de validare, în cazul acesta ''ip address''. | + | Cheia publică folosită la conectare este disponibilă în fișierul ''~/.ssh/id_rsa.pub''. Pentru vizualizarea cheii rulați, pe stația ''red'' din contul utilizatorului ''student'', comanda<code bash> |
- | + | student@red:~$ cat ~/.ssh/id_rsa.pub | |
- | Pentru a vă putea întoarce la consola stației ''host'' apăsați simultan tastele ''Ctrl+a'', eliberați-le, după care apăsați tasta ''q''. | + | ssh-rsa AAAAB3NzaC1[...] student@red |
- | + | ||
- | Pentru a testa conectivitatea între stațiile ''host'' și ''red'' folosim comanda ''ping'':<code bash> | + | |
- | root@host:~# ping 192.168.0.2 | + | |
- | PING 192.168.0.2 (192.168.0.2) 56(84) bytes of data. | + | |
- | ^C | + | |
- | --- 192.168.0.2 ping statistics --- | + | |
- | 2 packets transmitted, 0 received, 100% packet loss, time 1007ms | + | |
</code> | </code> | ||
- | După câteva secunde opriți comanda ''ping'' folosind combinația de taste ''Ctrl+c''. | ||
- | Observați că nu există conectivitatea între cele două stații: pachetele sunt pierdute în întregime (''100% packet loss''). Motivul este că nu am activat interfețele, ci doar am realizat configurații de nivel 3. | + | Un alt format de comandă SSH de conectare este cel de mai jos. Pe stația ''red'' rulați comanda<code bash> |
- | + | student@red:~$ ssh -l student host | |
- | Urmăriți configurația de nivel 2 al interfețelor folosind comanda ''ip link'':<code bash> | + | [...] |
- | root@host:~# ip link show dev veth-red | + | student@host:~$ |
- | 10: veth-red: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 | + | </code> La fel, închideți sesiunea de shell la distanță prin folosirea combinației de taste ''Ctrl+d''. |
- | link/ether 3e:03:f0:76:76:ab brd ff:ff:ff:ff:ff:ff | + | |
- | </code> | + | |
- | + | ||
- | Observați că interfața nu este activă la nivelul 2 (Legătură de date). Pentru a activa interfața folosiți comanda:<code bash> | + | |
- | root@host:~# ip link set dev veth-red up | + | |
- | </code> | + | |
- | + | ||
- | Urmăriți din nou configurația de nivel 2 (Legătură de date) a interfeței ''veth-red'' și observați că acum este parțial ''UP'' (apare și ''UP'' și ''DOWN'' în comandă):<code bash> | + | |
- | root@host:~# ip link show dev veth-red | + | |
- | 10: veth-red: <NO_CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000 | + | |
- | link/ether 3e:03:f0:76:76:ab brd ff:ff:ff:ff:ff:ff | + | |
- | </code> | + | |
- | + | ||
- | Testați din nou conectivitatea folosiți comanda ''ping''. În continuare nu există conectivitate. Acest lucru și faptul că apărea și ''DOWN'' în comanda anterioară pentru că nu am activat interfața ''eth0'' de pe statia ''red''. | + | |
- | + | ||
- | Pe stația ''red'' verificați configuratia de nivel 2 a interfaței ''eth0'' de pe ''red''. Observați că este ''DOWN'' și activați nivelul 2 dacă este cazul, folosind comanda<code bash> | + | |
- | root@red:~# ip link set dev eth0 up | + | |
- | </code> | + | |
- | Verificați că acum interfața este activă folosind comanda<code bash> | + | La distanță, cheia publică este stocată, împreună cu alte chei publice folosite pentru conectare, în fișierul ''~/.ssh/authorized_keys''. Rulați comanda de mai jos pentru a confirma prezența cheii publice la distanță<code bash> |
- | root@red:~# ip link show dev eth0 | + | student@red:~$ ssh -l student host "cat ~/.ssh/authorized_keys" |
+ | ssh-rsa AAAAB3N[...] student@blue | ||
+ | ssh-rsa AAAAB3N[...] student@green | ||
+ | ssh-rsa AAAAB3N[...] student@red | ||
+ | ssh-rsa AAAAB3N[...] student@host | ||
</code> | </code> | ||
- | Folosiți comanda ''ping'' ca să retestați conectivitatea între stațiile ''host'' și ''red''. | ||
- | Dorim să resetăm configurația la configurația inițială. Pentru acesta rulați o comandă de forma<code> | + | Se observă că există cheia ''student@red'' în fișierul de la distanță de pe stația ''host'', deci se poate realiza autentificarea SSH pe bază de chei. |
- | # ip address flush dev INTERFACE | + | |
- | </code> unde ''INTERFACE'' este interfața interfața ''veth-red'' pe stația ''host'', respectiv ''eth0'' pe stația ''red''. Asigurați-vă că nu mai este configurată nici o adresă IP pe interfețe folosind o comandă de forma<code> | + | |
- | # ip address show dev INTERFACE | + | |
- | </code> unde ''INTERFACE'' este interfața interfața ''veth-red'' pe stația ''host'', respectiv ''eth0'' pe stația ''red''. | + |