Remote arbeiten
Neben der physischen Anwesenheit im Labor ist auch eine Bearbeitung der Aufgaben von zu Hause aus möglich. Folgende Anleitung gibt einen Überblick über die Möglichkeiten des Remote-Zugriffs auf das SRA-Labor.
Für die Bearbeitung der Rechnerübungsaufgaben sind alle benötigten Werkzeuge im Labor vorinstalliert. Die Laborrechner sind über SSH und VNC erreichbar. Die Einrichtungsdetails finden sich weiter unten. Ihr könnt die Aufgaben natürlich auch auf eurem eigenen Rechner bearbeiten, wir empfehlen hierzu den Einsatz von Linux. Weiter unten finden sich einige Hinweise, wie ihr euren Linux-Rechner entsprechend konfigurieren könnt.
TL;DR
SSH und VNC in unseren Laborrechner ist verfügbar.
$ ssh lin.trovalds@lab.sra.uni-hannover.de -p 2205 # für lab-pc05
Geteiltes TMUX:
$ tmux -S /tmp/my-shared-tmux new # tmux session erstellen
$ setfacl -m "u:lin.torvalds:rw" /tmp/my-shared-tmux # Linus Trovalds Zugriff geben
$ tmux -S /tmp/my-shared-tmux attach # auf die Session verbinden (vom anderen auszuführen)
Für den eigenen PC:
$ apt install qemu qemu-system-x86 qemu-kvm build-essential binutils
SSH
Um SSH zu verwenden, braucht ihr eine Rechnernummer. Nehmt dazu eure Gruppennummer modulo 10 (um ein bisschen Loadbalancing hinzubekommen). Geht dann auf:
$ ssh <euer_login_name>@lab.sra.uni-hannover.de -p 22<rechnernummer>
D.h., für Linus Torvalds wäre der Login für Rechner 5:
$ ssh lin.torvalds@lab.sra.uni-hannover.de -p 2205
Umgang mit SSH-Keys
Bei der Arbeit mit Git-Remotes bietet sich die Verwendung von SSH-Keys an. Dazu erzeugt ihr per ssh-keygen einen Schlüssel, z.B. so:
$ ssh-keygen -t ed25519
Entweder der Schlüssel wird als ~/.ssh/id_ed25519
(also in eurem Home) im versteckten Verzeichnis .ssh
abgelegt, oder ihr gebt ihm einen anderen Namen. id_ed25519
wird standardmäßig von ssh benutzt, andere Namen existieren für ssh zunächst nicht. Diese müsst ihr dem ssh-agent
bekanntmachen, indem ihr Folgendes ausführt:
$ eval $(ssh-agent) # ssh-agent starten
$ ssh-add ~/.ssh/gitlab # den Key mit dem Namen gitlab bekanntmachen
Beim zweiten Schritt werdet ihr u.U. nach dem Passwort gefragt, was ihr bei der Key-Erzeugung angegeben habt.
Ab dem Zeitpunkt (wenn ihr den öffentlichen Schlüssel im Gitlab bekannt gemacht habt), könnt ihr einfach alle git-Kommandos ausführen. Die Authentifizierung läuft ab dann über die Schlüssel und ihr müsst keine Passworte (mehr) eingeben.
SSH-Config
Wir empfehlen die Eintragung der Laborrechner in die lokalen SSH-Config. Dazu muss in der Datei ~/.ssh/config
dieser Eintrag hinzugefügt werden:
host lab-pc01 # Man kann dem Host einen beliebigen Namen geben
HostName lab.sra.uni-hannover.de
User lin.torvalds
Port 2201
ForwardX11 yes
ServerAliveInterval 30
Bitte dabei Rechnernamen und Portnummer für den speziellen Rechner anpassen.
Wenn Key und SSH-Config eingerichtet sind, kann man sich einfach per ssh lab-pc01 zum SRA-Rechner verbinden.
Geteiltes TMUX
Für das gemeinsame Arbeiten kann man tmux verwenden, um eine TTY-Session mit einem anderen Benutzer zu teilen. Wir verwenden diesen Mechanismus zudem für die Remote-Abgaben. Die beiden Benutzer können damit dasselbe Terminal sehen und bearbeiten. Außerdem arbeitet tmux sessionbasiert, d.h. man teilt nicht nur ein Terminal, sondern eine ganze Session, konkret beliebig viele Terminals und ihren Zustand und Layout.
Zur Einrichtung erstellt man eine tmux -Session unter Angabe eines Sockets (-S / -L)
:
$ tmux -S /tmp/my-shared-tmux new
Damit wird ein tmux-Server erzeugt, falls noch keiner auf dem Socket lauscht. (Der Socket-Name my-shared-tmux
sollte durch einen eigenen Namen ersetzt werden)
Mit der Option -s session-name
(hinter new
) kann der Session auch noch ein eigener Name zugewiesen werden (Standard: "0").
Nun können weitere Nutzer bzw. tmux-Instanzen mit der Session verbunden werden:
$ tmux -S /tmp/my-shared-tmux attach
Gegebenenfalls muss mit der Option -t session-name
die Session identifiziert werden. Ein Detach wird mit der Tastenfolge Ctrl-b d
gemacht.
Damit ein anderer Benutzer ein Attach durchführen kann, muss er entsprechende Rechte am Socket haben, was mittels ACLs bewerkstelligt werden kann:
$ setfacl -m "u:other.user:rw" /tmp/my-shared-tmux
(Wobei other.user
mit dem Usernamen des Partners ersetzt wird.)
Bitte seid bei der Erteilung der Rechte vorsichtig und verwendet dafür im Labor keine UNIX-Gruppenberechtigungen. Bedenkt, dass jeder in einer solchen Gruppe dann vollen Zugriff auf eure tmux-Session hat.
Für weitere Informationen siehe die offizielle tmux-Doku oder die Manpage von tmux.
SSHFS
Wenn ihr (lokal) einen grafischen Editor benutzen wollt, aber trotzdem auf dem Laborrechner arbeieten wollt, bietet es sich an, das Labor per SSHFS zu mounten.
Prinzipiell reicht es dazu, so etwas auszuführen:
$ mkdir sra-mount
$ sshfs lab-pc01: sra-mount
$ cd sra-mount
VNC
VNC ist eine Technik, um eine Desktopoberfläche über Fernzugriff zu benutzen. Das könnt ihr benutzen, um die X11-Fenster von Qemu zu nutzen oder einen der grafischen Editoren im Labor zu nutzen.
Achtung: VNC braucht eine stabile hohe Datenrate. Wir empfehlen daher die reine Konsolen-Benutzung über SSH.
VNC greift im Normalfall auf eine laufende Session zu. Diese ist im Labor für euren Nutzer aber nicht vorhanden. Folglich müsst ihr zusätzlich zu dem VNC-Server auch noch eine Session starten. Dazu legt ihr ein Shellscript ~/.vnc/xstartup
an (über die Kommandozeile geht das z.B. mit dem Editor nano). In dem Shellscript startet ihr eure Session, z.B. (nur eine der Zeilen sollte einkommentiert sein!):
#!/bin/sh
/usr/bin/startkde & # KDE
#/usr/bin/gnome-session & # GNOME
#/usr/bin/startxfce4 & # XFCE4
Der VNC-Server wird dann diese Datei benutzen, um eine neue Session zu starten. Anschließend könnt ihr auch schon direkt den VNC-Server starten:
$ tigervncserver -useold -localhost
Der Server fragt nun nach einem Passwort (das schützt eure Session) und gibt nach dem Start eine Desktopnummer aus, die ihr später zum Verbinden braucht. Um die Session wieder zu schließen, wird folgender Befehl benutzt:
$ tigervncserver -kill :<desktopnummer>
Bitte geht dabei verantwortungsbewusst mit den Ressourcen um. Unter Linux ist die Verbindung mit dem VNC-Servier z.B. mit dem VNCViewer möglich:
$ xtigervncviewer -passwd <password-file> -via <ssh-kennung> localhost:<bildschirmnummer>
$ xtigervncviewer -SecurityTypes VncAuth -passwd /home/lin.torvalds/.vnc/passwd -via lab-pc01 localhost:2
Damit die Kennung lab-pc01 funktioniert, muss eine entsprechende SSH-Config angelegt werden (siehe oben).