Hinweis: Ich bin seit Mitte September 2015 Rapsberry, Raspbian und Linux-Neuling. Ich beschreibe hier, wie ich mein System konfiguriert habe und wie ich denke, dass die Zusammenhänge sind. Das muss nicht immer richtig sein und wird viele Lücken lassen. Sinn dieser Dokumentation ist es nicht, ein Raspbian-Tutorial zu schreiben, sondern eine Option zu besitzen, ein "versautes" System wieder herzurichten oder neu aufzusetzen.

Die folgenden Angaben beruhen auf der Raspian-Version 2015-09-25, basierend auf "Debian Jessie", im Paket von NOOBS 1.4.2 auf einem Raspberry Pi 2 Modell B.

Letztendlich soll der Raspberry Dienste im lokalen Netzwerk erledigen und das ohne Tastatur, Maus oder Monitor. Remote-Zugriffe auf das System sind also Pflicht. So geht's:

In­halts­ver­zeich­nis

1. WLAN-Konfiguration
1.A Interfaces (Interface-Definition)
1.B WPA Supplicant (WLAN-Zugang)
1.C DHCP (IP-Konfiguration)
2. Dienste einrichten
2.A SSH-Client (Konsole, Kommando-Zeile)
2.B SSH-Freigabe für User root
2.C VNC-Client (GUI Remote-Control)
2.D FTP (Dateitransfer)

WLAN-Konfiguration

Um das WLAN zu konfigurieren muss ein Zugang zum Netzwerk geschaffen und eine IP-Adresse festgelegt werden. Mehrere Komponenten spielen hier zusammen, die im Wesentlichen über drei Konfigurationsdateien gesteuert werden. Dies sind:

Datei Funktion
/etc/network/interfaces Interface-Daten
/etc/wpa_supplicant/wpa_supplicant.conf WPA (Verschlüsselung und Zugangsdaten)
/etc/dhcpcd.conf IP-Konfiguration

Detaillierte Informationen erhält man, wenn man auf dem Raspberry man <Dateiname> aufruft oder im Internet danach sucht, z.B. www.google.de/#q=man+interfaces .

Da ich später Port-Weiterleitung betreiben möchte, beschreibe ich hier die Konfiguration für eine statische (feste) IP-Adresse.

Was man wissen sollte ist, dass es ab Raspbian Wheezy vom 2015-05-05 zwei Methoden gibt, eine statische (manuelle) IPv4-Konfiguration vorzunehmen. Die alte Methode über die Datei /etc/network/interfaces und die neue Methode über die Datei /etc/dhcpcd.conf. Zu empfehlen ist die Neue, weil in Zukunft die alte unter Umständen gar nicht mehr funktionieren wird.

Wichtig ist, dass die Datei /etc/network/interfaces im Original-Zustand belassen wird. Wer hier schon herumgepfuscht hat, sollte sie auf den ursprünglichen Inhalt zurückstellen.

/etc/network/interfaces

Konfigurationdatei der Netzwerk-Interfaces für ifup und ifdown, den beiden Anweisungen, mit denen Netzwerk-Interfaces hoch und herunter gefahren werden können. In dieser Datei werden die Interfaces bekannt gegeben (definiert) und die Einbindung in das Operating System festgelegt.

01: #Datei: /etc/network/interfaces
02: 
03: # Please note that this file is written to be used with dhcpcd.
04: # For static IP, consult /etc/dhcpcd.conf and 'man dhcpcd.conf'.
05: 
06: auto lo
07: iface lo inet loopback
08: 
09: auto eth0
10: allow-hotplug eth0
11: iface eth0 inet manual
12: 
13: auto wlan0
14: allow-hotplug wlan0
15: iface wlan0 inet manual
16: wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
17: 
18: auto wlan1
19: allow-hotplug wlan1
20: iface wlan1 inet manual
21: wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

Im Vorspann der Datei gibt es bereits den Hinweis auf dhcpcd.conf. Bedeutung der Zeilen in /etc/network/interfaces im Einzelnen:

/etc/wpa_supplicant/wpa_supplicant.conf

Der WPA-Supplicant wird unter Verwendung einer Textdatei konfiguriert, die alle akzeptierten Netzwerke auflistet und Informationen bzgl. der Sicherheitsmechanismen und Zugangsdaten enthält. Mit diesen Daten kann der WPA-Supplicant den Raspberry am WLAN anmelden.

01: #Datei: /etc/wpa_supplicant/wpa_supplicant.conf
02: 
03: ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
04: update_config=1
05: 
06: network={
07:  ssid="bienonline"
08:  psk="WLAN-Passwort"
09: }

Die ersten beiden Zeilen stammen aus der Original-Datei. An diese kann man die Daten für die WLAN-Anmeldung ablegen. Der Eintrag "network" kennt noch weitere Parameter, z.B. solche mit der man die Art der Verschlüsselung festlegen kann. Weiterhin gibt es noch Möglichkeiten, das Passwort zu verschlüsseln. Hierzu dien die Anweisung "wpa_passphrase":

01: $ wpa_passphrase bienonline WLAN-Passwort
02: network={
03:         ssid="bienonline"
04:         #psk="WLAN-Passwort"
05:         psk=cec701e8251e453aa79936ca2cd59db55791c34448009bc4df39549e37fc2aa0
06: }

/etc/dhcpcd.conf

In dieser Datei wird die Konfiguration für das dhcpcd-Modul festgelegt.

01: interface wlan0
02: static ip_address=192.168.0.50/24
03: static routers=192.168.0.1
04: static domain_name_servers=192.168.0.1

In der Zeile #01 wird das Network-Interface festgelegt (s. /etc/network/interfaces), für das die Einstellung gilt. In der folgenden Zeile wird angegeben, welche IP-Adresse verwandt werden soll. Die nächsten beiden Zeilen enthalten die Adresse des Gateway und des DNS.

Dienste einrichten

SSH-Client (Konsole, Kommando-Zeile)

Secure Shell (SSH) bezeichnet sowohl ein Netzwerkprotokoll als auch entsprechende Programme, mit deren Hilfe man auf eine sichere Art und Weise eine verschlüsselte Netzwerkverbindung mit einem entfernten Gerät herstellen kann. Häufig wird diese Methode verwendet, um lokal eine entfernte Kommandozeile verfügbar zu machen, das heißt, auf einer lokalen Konsole werden die Ausgaben der entfernten Konsole ausgegeben und die lokalen Tastatureingaben werden an den entfernten Rechner gesendet.

Der der aktuellen Version von NOOBS (v1.4.2) ist SSH standardmäßig freigegeben. Auf der PC-Seite gibt es eine Reihe von Programmen, die eine entsprechende Funktionalität bieten. Eines der bekanntesten ist PuTTY (Download von putty.org). Es handelt sich um eine .exe-Datei, die keiner weiteren Installation bedarf. Man kann direkt die Datei starten.

PuTTY lässt sich weitgehend konfigurieren und ermöglicht die Speicherung mehrerer Konfigurationen.

PuTTY

Wenn man seine Einstellungen umziehen will: PuTTY legt diese Einstellungen in der Registry unter HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions ab.

SSH-Freigabe für User root

Standardmäßig ist es nicht möglich, sich per SSH als root anzumelden. Diese Möglichkeit ist blockiert. Dies hat sicherheitstechnisch schon seine Berechtigung, ist aber unschön, wenn man ein System ohne Monitor und Tastatur besitzt. Wenn der Raspberry nur als Spielzeug dient ist, es wohl zulässig, dies zu ädern. Die Anpassung muss in der der Datei  /etc/ssh/sshd_config vorgenommen werden.

sudo nano /etc/ssh/sshd_config

Dort suche man den Paramter PermitRootLogin. Der Standard-Eintrag ist:

PermitRootLogin without-password

Dieser muss ersetzt werden durch

PermitRootLogin yes

Danach muss der Server neu gestartet werden:

sudo service ssh restart

Nun klappt das Login:

login as: root
root@192.168.0.50's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Thu Oct  8 11:13:45 2015 from 192.168.0.99
root@UPi:~#

VNC-Client (GUI Remote-Control)

Virtual Network Computing (VNC), ist eine Software, die den Bildschirminhalt eines entfernten Rechners (Server) auf einem lokalen Rechner (Client) anzeigt und im Gegenzug Tastatur- und Mausbewegungen des lokalen Rechners an den entfernten Rechner sendet.

Schaut man sich im Netz um, wird TightVNC für diesen Zweck empfohlen.

Installation des VNC-Servers auf dem Raspberry

Wie immer sollte man vor einer Installation neuer Software dafür sorgen, dass die bereits installierte auf aktuellem Stand ist:

sudo apt-get update && apt-get upgrade

Dann den Server installieren:

sudo apt-get install tightvncserver

Beim ersten Start erwartet das Programm die Festlegung eines Passwort, mit dem sich ein Client anmelden muss.

01:$ tightvncserver
02: 
03: You will require a password to access your desktops.
04: 
05: Password:       
06: Verify:       
07: Would you like to enter a view-only password (y/n)? n
08: 
09: New 'X' desktop is UPi:1
10: 
11: Creating default startup script /home/pi/.vnc/xstartup
12: Starting applications specified in /home/pi/.vnc/xstartup
13: Log file is /home/pi/.vnc/UPi:1.log

Das Passwort darf nicht zu kurz sein (6 Zeichen min). Die Festlegung eines "view-only"-Passworts ist i.d.R. nicht notwendig.

Autostart

Wenn man möchte, dass der VNC-Server nach dem Booten des Servers automatisch zur Verfügung steht, kann dies entsprechend eingerichtet werden. Eine funktionierende und gute Anleitung findet man bei CodeClinic. Man muss eine Datei erstellen, die Anweisungen zum Start und zum Beenden des Programms enthält, und die dem Betriebssystem, bekannt machen. Die Datei hat folgenden Inhalt:

#!/bin/sh
### BEGIN INIT INFO
# Provides:          tightvncserver
# Required-Start:    $local_fs
# Required-Stop:     $local_fs
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start/stop tightvncserver
### END INIT INFO

# More details see:
# http://www.codeclinic.de/2014/01/raspberry-pi-tutorial-setting-vnc-default-desktop

### Customize this entry
# Set the USER variable to the name of the user to start tightvncserver under
export USER='pi'
### End customization required

eval cd ~$USER
case "$1" in
  start)
    su $USER -c '/usr/bin/tightvncserver :1'
    echo "Starting TightVNC server for $USER "
    ;;

  stop)
    pkill Xtightvnc
    echo "Tightvncserver stopped"
    ;;
  *)
    echo "Usage: /etc/init.d/tightvncserver {start|stop}"
    exit 1
    ;;
esac
exit 0

Die Bedeutung der Anweisungen kann man ohne Hilfe erschließen, eine Erläuterung zu den Kopfzeilen findet man bei Google.

Diese Datei muss im Verzeichnis /etc/init.d abgelegt haben und den Namen des Programms tragen, also tightvncserver. Man kann die Datei auch mit folgender Kommandofolge aus dem Netzt laden:

wget http://www.penguintutor.com/otherfiles/tightvncserver-init.txt
sudo mv tightvncserver-init.txt /etc/init.d/tightvncserver
mkdir /home/pi/.config/autostart

oder, falls Penguin Tutor den Service nicht mehr zur Verfügung stellt, von Ullis Roboter Seite.

wget http://ullisroboterseite.de/rasp-conf/tightvncserver-init.txt
sudo mv tightvncserver-init.txt /etc/init.d/tightvncserver

Die Datei muss aktualisiert werden, so dass sie zur “Root” gehört (dies ist nicht unbedingt notwendig, ist aber die Standardeinstellung für init Dateien):

sudo chown root:root /etc/init.d/tightvncserver

Die Datei muss ausführbar gemacht werden:

sudo chmod 755 /etc/init.d/tightvncserver

 Als letztes muss das Script zu den Default runlevels hinzugefügt werden:

sudo update-rc.d tightvncserver defaults

Nach einem Neustart fährt der VNC-Server automatisch hoch.

Man kann das ganze manuell starten und stoppen:

sudo /etc/init.d/tightvncserver start
sudo /etc/init.d/tightvncserver stop

Auf dem PC

Eine Windows-Version findet man bei TightVNC.com. Standardmäßig will der Installer sowohl einen Viewer als auch einen Server installieren. Will man den PC nicht fernsteuern, sollte man die Installation des Servers abwählen.

Benutzerdefinierte Installation auswählen Installation des Servers abwählen

Beim Start des Programms wird zunächst die IP abgefragt, zu der die Verbindung hergestellt werden soll und danach das vergebene Passwort (s.o.). Zu beachten ist, dass der Port, unter dem der Server auf dem Raspberry sein Dienste zur Verfügung stellt, standardmäßig der Port 5901 ist.

Benutzerdefinierte Installation auswählen Installation des Servers abwählen

Danach erscheint der grafische Desktop:

Grafischer Desktop

FTP (Dateitransfer)

Zum Austausch von Dateien eignet sich das File Transfer Protocol (FTP). Für die spätere Arbeite ist es am bequemsten, auf dem Raspberry eine FTP-Server zu installieren und diesem beim booten zu starten. Dann kann man sich vom PC aus jederzeit anmelden und Dateien austauschen. Ich verwende Very Secure FTP Daemon - kurz vsftpd. Eine gute Anleitung findet man bei Good to Know Database.

Installation des FTP-Servers auf dem Raspberry

Wie immer sollte man vor einer Installation neuer Software dafür sorgen, dass die bereits installierte auf aktuellem Stand ist:

sudo apt-get update && apt-get upgrade

Dann den Server installieren:

sudo apt-get install vsftpd

Das Programm installiert sich so, dass der Dienst sofort nach der Installation zur Verfügung steht. Auch beim Booten wird der Dienst automatisch hochgefahren.

Standardmäßig sind Schreibzugriffe verboten, ebenso Zugriffe über anonymous. Um dies zu Ändern muss man die Konfigurationsdatei /etc/vsftpd.conf anpassen. Für Schreibzugriffe ist das Kommentar-Zeichen (#) in der Zeile "#write_enable=YES" zu entfernen.

# Uncomment this to enable any form of FTP write command.
#write_enable=YES

 --->

# Uncomment this to enable any form of FTP write command.
write_enable=YES

Um den anonymen Zugang zu sperren ist das "YES" in der der Zeile

anonymous_enable=YES

durch "NO" zu ersetzen. Damit man einen Zugang über ein reguläres User-Konto erhalten kann, muss der Kommentar bei

#local_enable=YES
 --->
local_enable=YES

entfernt werden.

Danach ist ein Restart fällig:

sudo service vsftpd restart

Auf dem PC

Auf dem PC habe ich bereits FileZilla installiert. Einfach IP, Benutzerkennung und Passwort eingeben und los geht's.

FileZilla

Am besten richtet man sich über den Servermanager (Menü Datei / Servermanager) eine entsprechende Verbindungskonfiguration ein, ...

FileZilla Verbindungseinrichtung

... dann kann man jederzeit auf einfache Weise auf den Raspberry zugreifen.

FileZilla Verbindungsauswahl