Skip to content
On this page

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.

Video 1 zum Versuch: Video

Video 2 zum Versuch: Video

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.

  1. 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

  1. Installieren Sie putty auf Ihrem Hostsystem
  2. Schliessen Sie den USB-UART Adapter korrekt an
  3. Loggen Sie sich in das Raspberry Pi ein. (Session -> Serial, Baudrate / Speed 115200).

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.

DeviceInterfaceIP AdresseSubnetz
HostEthernet Adapter192.168.50.2255.255.255.0
Targeteth0 (Onboard Ethernet)192.168.50.1255.255.255.0

Ethernet Interface am Hostsystem

Falls Sie kein Ethernetinterface am Hostystem selber besitzen, können Sie den USB-Ethernet Adapter verwenden.

  1. Konfigurieren Sie den Ethernetadapter Ihres Hosts
    • Konfiguration passiert via GUI
    • ipconfig via cmd.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
  2. Verbinden Sie den USB-Ethernetadapter mit dem Target
  3. Konfigurieren Sie das Target folgendermassen
    bash
    sudo ifconfig eth0 192.168.50.1 netmask 255.255.255.0
    
  4. 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!

  1. Probieren Sie, ob nach einem Reboot SSH immer noch funktioniert.
  2. Loggen Sie sich erneut via UART ein.
  3. Öffnen Sie nun das File /etc/network/interfaces mit dem Editor
    bash
    sudo nano /etc/network/interfaces
    
  4. 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
    
  5. Führen Sie einen reboot durch mit sudo reboot.
  6. Verifizieren Sie nach dem reboot, dass SSH nun wieder funktioniert.
  7. 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
  1. Ändern Sie /etc/network/interfaces entsprechend
  2. Starten Sie den Networking service erneut mit sudo /etc/init.d/networking restart
  3. Führen Sie raspi-config aus und verbinden Sie sich mit dnet 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.