Appearance
Versuch Raspberry Pi / UART / SSH
Literatur
Referenzmodelle
Lesen Sie das Kapitel 1.4 "Referenzmodelle" im Buch Computernetzwerke.
Raspberry Pi OS auf dem Raspberry PI
Begleitend zu diesem Modul lernen wir Tools auf Linux kennen, welche heute eine zentrale Rolle in Datennetzen spielen. Hiefür werden wir als erste Linux Distribution "Raspberry Pi OS" einsetzen.
Raspberry Pi OS Lite
Verwenden Sie die "Lite" Version des aktuellen Raspberry Pi OS Images.
Das Raspberry PI verwendet als Speichermedium eine microSD Karte, eine solche befindet sich bei Ihrem Dev-Kit.
- Folgend Sie den Instruktione hier: https://www.raspberrypi.org/documentation/installation/installing-images/ um ein Raspbian-Image auf Ihrer SD-Karte zu deployen.
UART aktivieren
Mounten Sie die boot
Partition der SD-Karte in Ihrem Hostsystem.
Ändern Sie auf der boot Partition der SD-Karte das file config.txt
und erweitern Sie es um eine neue Zeile (nach [all]
)
bash
enable_uart=1
Erstellen Sie auch ein File ssh
(ohne File Extension) auf der Boot Partition um den ssh service zu aktivieren.
Erstellen Sie ein File userconf.txt
auf der Boot Partition mit folgedem Inhalt:
pi:$6$ZijJFXcGAX6d6ZlT$zNyWttQn8uB.SwS2/HWE1POB7Tdxlkxi6gssnB0le6v7KjAI7iQaw1Ekt2jvIX1JhxMAHBD2jTSO.FlaP8HcJ0
Es handelt sich hierbei um den user pi
mit dem gehashten Passwort raspberry
.
Serial Terminal via UART
Um mit dem Raspberry Pi vom Host aus kommunizieren zu können werden wir die serielle Schnittstelle über einen USB-Serial Adapter verwenden.
Hierzu eignen sich einige Serial terminals (picocom
, gtkterm
, hterm
, minicom
, screen
).
Für Windows eignet sich unter anderem Putty
https://www.putty.org/.
Aufgabe
- Installieren Sie
putty
auf Ihrem Hostsystem - Schliessen Sie den USB-UART Adapter korrekt an
- Loggen Sie sich in das Raspberry Pi ein. (
Session
->Serial
, Baudrate / Speed115200
).
Standard username und passwort sind pi
und raspberry
.
COM Port finden
In Windows 10 verwenden Sie den Shortcut Windows + X
anschliessend G
für den Gerätemanager.
Falls Sie unter Anschlüsse (COM / LPT)
den Adapter nicht sehen, können Treiber von der Webseite: https://ftdichip.com/drivers/ nachinstalliert werden (Windows Driver Installer
).
Ins Internet verbinden via WiFi
Auf dem Target, verwenden Sie sudo raspi-config
um in das Netz dnet
mit Passwort datennetze
zu verbinden. Befinden Sie sich Zuhause, dann verwenden Sie SSID und Passwort gemäss Ihrem WiFi Heimnetz.
WiFi Hotspot via Smartphone
Falls Sie ein Smartphone besitzen, können Sie dieses als Hotspot verwenden und das Target mit diesem auf die gleiche Art und Weise assozieren. Achten Sie darauf, dass beim installieren von Software Paketen via apt
Datenverkehr anfällt.
Softwarepakete aktualisieren
Testen Sie ob Sie online sind via
sudo apt update
sudo apt upgrade
apt
apt
ist der Debian Package Manager und erlaubt es Ihnen zahlreiche Programme nachzuinstallieren.
SSH verwenden
Die UART Shell hat einen klaren Vorteil gegenüber der SSH: Sie funktioniert auch wenn Sie eine ungültige Interfacekonfiguration haben.
Um SSH verwenden zu können müssen Host und Target im gleichen IP-Netz sein. Hierzu verwenden wir eine statische Konfiguration für den Host sowie für das Target.
Device | Interface | IP Adresse | Subnetz |
---|---|---|---|
Host | Ethernet Adapter | 192.168.50.2 | 255.255.255.0 |
Target | eth0 (Onboard Ethernet) | 192.168.50.1 | 255.255.255.0 |
Ethernet Interface am Hostsystem
Falls Sie kein Ethernetinterface am Hostystem selber besitzen, können Sie den USB-Ethernet Adapter verwenden.
- Konfigurieren Sie den Ethernetadapter Ihres Hosts
- Konfiguration passiert via GUI
ipconfig
viacmd.exe
zeigt die verwendeten Adressen an- IP Adresse statisch via GUI setzen
- Netzwerkstatus (im Startmenü suchen)
- Adapteroptionen (rechts)
- Ethernet Adapter
- Eigenschaften
- Internet Protocol, Version 4
- Verbinden Sie den USB-Ethernetadapter mit dem Target
- Konfigurieren Sie das Target folgendermassenbash
sudo ifconfig eth0 192.168.50.1 netmask 255.255.255.0
- Pingen Sie sich gegenseitig um zu verifizieren, dass die Verbindung geklappt hat.
via SSH verbinden
Vom Host aus können Sie sich nun mit putty
via SSH ins Target einloggen und ein Terminal via Netzwerk verwenden.
Host ist nicht gleich Host
Fall Sie in Putty die Bezeichnung "Host" sehen, ist damit die Gegenseite (in unserem Fall das Target) gemeint.
Interface eth0 automatisch nach reboot konfigurieren
Bevor Sie Ihren USB-UART Adapter entfernen (und für immer verstauen), sollten Sie sicherstellen, dass nach einem reboot das Interface eth0
automatisch mit der statischen IP Konfiguration hochgefahren wird. Ansonsten können Sie sich ausschliessen!
- Probieren Sie, ob nach einem Reboot SSH immer noch funktioniert.
- Loggen Sie sich erneut via UART ein.
- Öffnen Sie nun das File
/etc/network/interfaces
mit dem Editorbashsudo nano /etc/network/interfaces
- Löschen Sie den Inhalt und fügen Sie folgende Zeilen ein:bash
auto lo eth0 allow-hotplug eth0 iface eth0 inet static address 192.168.50.1/24
- Führen Sie einen reboot durch mit
sudo reboot
. - Verifizieren Sie nach dem reboot, dass SSH nun wieder funktioniert.
- Starten Sie das Target neu und verifizieren Sie, dass Sie nach dem Reboot eine Verbindung via SSH vom Host her aufbauen können.
WLAN und /etc/network/interfaces
Um sicher zu gehen, dass die WiFi Verbindung klappt, fügen wir noch zusätzlich die Konfiguration für wlan0
hinzu.
auto lo eth0 wlan0
allow-hotplug eth0
iface eth0 inet static
address 192.168.50.1/24
allow-hotplug wlan0
iface wlan0 inet dhcp
wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
- Ändern Sie
/etc/network/interfaces
entsprechend - Starten Sie den Networking service erneut mit
sudo /etc/init.d/networking restart
- Führen Sie
raspi-config
aus und verbinden Sie sich mitdnet
oder alternativ Ihrem Heimnetzwerk oder Hotspot.
wpa_supplicant
Unter Linux ist das Programm wpa_supplicant
für die Assozierung mit einem WiFi Accesspoint zuständig. Im weiteren Verlauf der Versuche werden wir uns genauer mit dessen Konfiguration auseinandersetzen.
Fehler beim restart der networking services
Falls Sie via raspi-config
ins WLAN verbinden möchten und einen Fehler Could not communicate with wpa_supplicant
erhalten, so existiert ein Problem mit dem File /etc/network/interfaces
. Stellen Sie sicher, dass falls Sie im File eth0
definieren, auch der USB-Ethernetadapter angeschlossen worden ist.
FHNW public
Verbinden Sie sich mit fhnw-public
mit raspi-config
.
Um nach "draussen" zu gelangen, können Sie folgendes Programm ausführen, welches einen http POST request zum Loginserver ausführt:
python
#!/usr/bin/python3
from getpass import getpass
from urllib.parse import urlencode
import requests
email = input("Email: ")
password = getpass('Password: ')
payload = {
'intercepted_url': 'https://google.ch',
'check': 'on',
'username': email,
'password': password
}
res = requests.post(url='https://mpp.ict.fhnw.ch/login',
headers={
'authority': 'authority: mpp.ict.fhnw.ch',
'content-type': 'application/x-www-form-urlencoded',
'origin': 'https://mpp.ict.fhnw.ch'
},
data=urlencode(payload))
print(res)
BASH
Folgen Sie als nächstes dem Linux / Bash Crash Course.