Ressourcen sparen mit SSH

Der Begriff eines Supercomputers sollte ja den Meisten ein Begriff sein. Genau genommen ist das nicht ein spezielles Gerät, sondern sehr, sehr, sehr viele Rechner, die zusammengeschlossen sind und ihre Ressourcen kombinieren. Dadurch entsteht eine gewaltige Rechenleistung, die man eigentlich auch ganz gerne zuhause hätte.

Es gibt verschiedene Möglichkeiten, wie man so etwas auch zuhause realisieren kann. Gerade im Zusammenhang mit dem Raspberry Pi sehe ich zunehmend Artikel, die solche Möglichkeiten aufzeigen.

Ich will aber einen anderen Weg zeigen, wie man vielleicht ungenutzte Hardware, die man ohnehin noch zuhause rumstehen hat, noch nutzbringend einsetzen kann.

Warum sollte man das nutzen?

Das ist natürlich eine gute Frage. Die Antwort ist aber eigentlich ganz einfach. Die Technik schreitet ziemlich schnell voran und man könnte sich eigentlich neue Computer kaufen, wie neue Kleidung. Das wäre aber noch nicht das schlimme, sondern gerade Software wird in den letzten Jahren immer „aufgeblasener“. Nehmen wir Office-Anwendungen. Installiert man sich zum Beispiel Linux Mint, so wird einem LibreOffice aufs Auge gedrückt. Ich will dabei keines Wegs über die Qualitäten dieser Software meckern, doch hat sie einen gewaltigen Nachteil. Sie frisst Ressourcen!

Es ist mir eigentlich erst aufgefallen, als ich meine Tätigkeit als Autor begonnen habe. Das war sogar auf einem Raspberry Pi 3, weil zu der Zeit das Motherboard meines Rechners die Grätsche gemacht hat. Anfangs lief das auch noch ganz gut, bis ich so etwa 100 Normseiten geschrieben hatte. Zugegeben, damals war das auf einem Athlon64 mit 4 GB DDR2 Speicher, aber dennoch war die Arbeit nicht mehr schön! Ich habe getippt und es hat gedauert, bis es angezeigt wurde. Kurz gesagt, eine Office-Anwendung verschlingt so viele Ressourcen, dass man ab 100 Normseiten schon nicht mehr gescheit arbeiten kann. Warum? Es ging doch damals auch, mit 486er Prozessoren MB statt GB Arbeitsspeicher, oder einem 68030 Prozessor, falls man wie ich zum Beispiel vom AmigaOS kommt. Heute scheint es so, dass selbst Textverarbeitung ohne Ende Ressourcen verlangt.

Nun gut. Das kann man noch umgehen, indem man einfach eine weniger fordernde Software einsetzt. Ich habe gesucht und mit WPS-Office eine hervorragende Alternative gefunden, die selbst auf meinem NetBook über 700 Normseiten regeln kann. Alternative habe ich mittlerweile auch FreeOffice entdeckt, was ebenfalls als adäquate Alternative in Betracht gezogen werden kann.

Was aber, wenn alle Alternativen in etwa die gleichen Ressourcen verlangt und man heutzutage kaum noch daran vorbei kommt?

Nehmen wir Browser. Es ist egal, ob man Firefox, Chromium, oder wie ich Vivaldi verwendet. Man öffnet Tabs, überall läuft irgendwo Javascript und vielleicht benutzen einige Seiten auch noch Flash. Das starten des Browsers kann schon ganz schön viele Ressourcen verschlingen!

Nutzt man dann für die E-Mails auch noch Thunderbird, wird die Lage noch dramatischer! Hier gibt es zwar Alternativen, ich benutze zum Beispiel Evolution, aber auch der frisst so einiges!

Was aber, wenn man nun ein Spiel spielen will? Oder mit Blender grössere Szenen zu rendern versucht? Man hat zwei Möglichkeiten. Entweder man riskiert es und lässt Broser wie E-Mail Client offen, füllt den Rest des physischen Speichers und arbeitet anschliessend im Swap, was echt nervig sein kann, oder man schliesst die Anwendungen, die man nicht braucht. Seltsamerweise scheint letzteres für viele, auch für mich, nur selten in Betracht gezogen zu werden.

Ich könnte mir nun damit abhelfen, dass ich mir einen besseren Computer zulege. Das kostet dann aber wieder Geld. Was, wenn das knapp ist?

Eine Erfahrung konnte ich in den letzten Jahren immer wieder machen. Es sammelt sich „Computerschrott“ an! Nicht ganz unlogisch. Wer nicht dauernd seine Hardware auf dem neusten Stand hält, bekommt nach ein paar Jahren für sein Gerät kaum noch etwas! Viele werfen es weg, wieder andere lagern es irgendwo im Keller. Das heisst also, irgendwo steht wahrscheinlich noch Hardware rum, deren Ressourcen ungenutzt bleiben. Wäre es nicht schön, wenn man sie nicht noch nutzen könnte, um seinen Rechner zu entlasten?

Das habe ich schon ein paar Mal in geselliger Runde angeregt und dabei meistens die gleiche Antwort bekommen:

Noch ein Monitor, Tastatur und Mouse aufstellen? Nein danke!

Das ist jedoch gar nicht nötig! Man könnte einen Rechner aufsetzen und nur das aller nötigste installieren. Mit Gentoo Linux geht das ganz hervorragend! Ist das gute Stück soweit installiert, dass man mit VNC, oder eben SSH darauf zugreifen kann, braucht die Kiste weder Tastatur, noch Mouse und schon gar kein Monitor!

Vorbereitung für SSH

Nun geht es leider nicht ganz ohne ein wenig Handarbeit. SSH wird allgemein so installiert, dass man keine grafische Ausgabe übertragen kann. Dies dient der Sicherheit und ich bin auch der Meinung, die von mir vorgeschlagene Methode sollte man nur im heimischen Netzwerk durchführen und nicht über das Internet. Dafür sollte man eher VNC verwenden!

Zwei Dateien müssen auf beiden Rechner editiert werden:

  1. /etc/ssh/ssh_config
  2. /etc/ssh/sshd_config

Zum Editieren braucht man SuperUser-Rechte! Es mag auch sein, dass unter verschiedenen Distributionen das Verzeichnis an anderer Stelle zu finden ist, auf denen, die ich bislang verwendet habe, lagen die Dateien jedoch immer in „/etc/ssh/“.

Fangen wir mit der ssh_config an:

#   ForwardX11 no

Diese Zeile muss geändert werden. Das „#“ muss weg, damit die Zeile auch verarbeitet wird und aus dem „no“ wird ein „yes“. Dann sieht das so aus:

   ForwardX11 yes

Speichern und fertig. Weiter zur sshd_config:

#AllowTcpForwarding no
#X11Forwarding no

Diese beiden Zeilen müssen wieder verändert werden. „#“ kommt weg und aus dem „no“ wird ein „yes“. Dann sollte das so aussehen:

AllowTcpForwarding yes
X11Forwarding yes

Speichern und fertig. Nun muss ssh neu gestartet werden.

Verwendet man systemd geht das so:

systemctl restart sshd

Im Falle von OpenRC folgendermassen:

/etc/init.d/sshd restart

Natürlich muss das auf allen Rechnern durchgeführt werden, damit die Änderungen auch wirksam sind!

Damit sind wir aber leider noch nicht fertig, denn auch X11 verweigert sich von Hause aus dem weiterleiten der grafischen Ausgabe. In aller Regel wird das über den Display-Manager geregelt. Da gibt es gleich viele. XDM, GDM, MDM, LightDM, usw. Ich verwende LightDM und will auch das als Beispiel verwenden. Natürlich kann man auch auf einen Display-Manager verzichten uns mittels „startx“, oder ähnliches, X11 starten. Auch hier muss dafür gesorgt werden, dass X11 seine Ausgabe auch weiterleiten und weitergeleitete Ausgaben empfangen kann.

Bei LightDM editiert man dafür die Config. Diese findet man unter:

/etc/lightdm/lightdm.conf

Editiert werden müssen folgende Zeile:

#xserver-allow-tcp=false

Wieder fliegt das „#“ raus und aus dem „false“ machen wir ein „true“.

xserver-allow-tcp=true

Speichern und hinterher den Display-Manager neustarten. Fertig!

Wenn alles geklappt hat, dann sollte man nun in der Lage sein, Programme auf einem anderen Rechner zu starten, die Ausgabe aber auf den eigenen Rechner umzuleiten und diese mittels der Tastatur und Mouse zu bedienen!

Verwendung von SSH

Es gibt ein paar Möglichkeiten, wie man Programme auf einem fremden Rechner starten kann. Die einfachste Methode sieht so aus:

ssh benutzername@adresse

Den Benutzername kann man weglassen, wenn der, mit dem man auf dem Arbeitsrechner angemeldet ist, auch auf dem fremden Rechner existiert. Als Adresse kann man entweder die IP-Adresse des Rechners angeben, oder wenn man einen Hostnamen vergeben hat, auch den verwenden.

In meinem Fall ist auf beiden Rechner der Benutzer „diabolus“ vorhanden. Mein Arbeitsgerät hat den Namen „horst“, während mein NetBook den Namen „mini-horst“ hat. In dem Fall sieht der Befehl folgendermassen aus:

ssh mini-horst

Ziemlich unproblematisch! Führt man den Vorgang das erste Mal durch, wird eine vergleichbare Meldung angezeigt werden:

The authenticity of host 'mini-horst (xxxx:xx:xxxx:xxxx:xxx:xxxx:xxxx:xxxx)'
can't be established.
ECDSA key fingerprint is xxxxxx:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?

Wobei die ganzen „x“ natürlich nicht auftauchen, sondern dort die entsprechenden Werte zu finden sind. Da man ja weiss, auf welchen Rechner man da zugreift und das der sicher ist, kann man getrost „yes“ eingeben. Die Daten werden gespeichert und tauchen beim nächsten Mal nicht mehr auf!

Als nächstes wird nach dem Passwort gefragt. Total banal und eigentlich selbsterklärend:

Password:

Wenn man nun das Passwort eingibt, logischerweise jenes, welches zu dem Benutzer auf dem fremden Rechner gehört, passiert nichts! Das ist für viele ungewohnt, aber ganz normal. Es werden keine Zeichen ausgegeben, auch keine „*“, oder ähnliches. Einfach Passwort eintippen und Enter drücken. Wenn alles passt, sieht das am Ende dann so aus:

Am Prompt erkennt man, wo man sich befindet. War ich erst auf @horst, befinde ich mich anschliessend auf @mini-horst. Natürlich wird bei jedem der entsprechende Name, oder die entsprechende IP angezeigt. Aber, man sieht noch etwas:

Warning: untrusted X11 forwarding setup failed: xauth key data not generated

Das bedeutet im Prinzip nichts anderes, als dass SSH nach hinterlegten Keys gesucht hat, die man vorher auf den Rechnern erzeugt haben sollte. Damit will SSH auf Nummer Sicher gehen und lässt, obwohl es in den Configs angegeben wurde, nicht zu, dass grafische Anwendungen weitergeleitet werden. Man kann jedoch alles, was auf dem Rechner installiert ist, dennoch starten. Läuft die Ausgabe der Anwendung im Terminal, beispielsweise der Editor „nano“, dann wird die Ausgabe dennoch angezeigt.

Okay, man kann auf diese Weise trotzdem den fremden Rechner zum Beispiel warten. Das mache ich beim Rechner meiner Frau ganz gerne.

sudo apt-get update

funktioniert unter Linux Mint genauso,wie

eix-sync

unter Gentoo. Aber, wir wollen ja Grafik!

Wir umgehen das Problem erst einmal indem wir SSH zwingen, auf Keys und ähnliches keine Rücksicht zu nehmen. Wie gesagt, befinden wir uns in unserem heimischen Netzwerk, sollte das trotzdem sicher genug sein.

ssh -Y mini-horst

Wäre die dafür notwendige Eingabe. Hat man alles richtig gemacht, sieht das Ganze nun so aus:

Keine Warnung! Man sollte also am Ziel der Reise sein und kann es doch einfach mal überprüfen. Ich tue das, indem ich den grafischen Editor „mousepad“ aufrufe. Passt alles, passiert folgendes:

Cool, oder? Die ganzen Warnungen im Terminal kann man ignorieren. Die tauchen auch auf, wenn man mousepad direkt auf dem fremden Rechner startet. Irgendwie hat das was mit GTK zu tun.

Wir sind also am Ziel der Reise angekommen! Nun kann man quasi alle Programme, die auf dem fremden Rechner installiert sind, auf dem Arbeitsrechner aufrufen und benutzen, als wären sie dort installiert. Das hat einen gewaltigen Vorteil, denn auch wenn die Programme auf dem Arbeitsrechner angezeigt werden, verschlingen sie keine, oder nur ganz minimale Ressourcen! Die werden nämlich vom fremden Rechner bereitgestellt!

Ich selbst nutze diese Möglichkeit, um Evolution dauerhaft offen zu haben, ohne die Ressourcen meines Rechners zu benutzen. Mein NetBook dient mir ohnehin als Arbeitspferd für geschäftliche Dinge. Einfach aus dem Grund, ich kann es mitnehmen! Es passt bequem ins Handschuhfach oder in einen Rucksack und ist überall schnell aufgestellt. Durch das eingebaute mobile Modem habe ich auch nahezu überall eine Internetverbindung und kann mittels VNC auf meinen Rechner zuhause zugreifen. Deshalb verwende ich ihn auch für die E-Mails.

Der Vorteil wird deutlich, wenn ich meinen Rechner des Morgens starte. Eine ganze Zeit lang habe ich Evolution auch an meinem Arbeitsgerät verwendet. Dank IMAP ist das ja kein Problem. Aber, nach dem Booten hatte ich 96% freien Arbeitsspeicher. Nach starten von Vivaldi waren es noch 63% und mit Evolution schrumpfte der Speicher auf 39% zusammen.

Nun, da ich Evolution aber von meinem NetBook hole, wo das Ding ja sowieso normalerweise läuft, habe ich dennoch seine Ausgabe auf meinem Desktop und dennoch 63% des Arbeitsspeichers frei. Natürlich würde ich auch gerne Vivaldi Outsourcen, doch je nach dem was ich damit mache, macht das NetBook ganz gerne mal die Grätsche!

Natürlich sind die Programme dann keine Inseln! Im Falle von Evolution zum Beispiel wäre es schade, wenn ich auf Anhänge von Mails nicht zugreifen könnte. Ich kriege öfter zum Beispiel PDF-Daten geschickt, die ich natürlich gerne öffnen und ausdrucken würde. Da auf meinem NetBook Atril installiert ist, wird es auf dem NetBook gestartet, wenn ich einen Anhang anklicke. Auch Atril kommt dann vom NetBook und frisst meinem Arbeitsrechner keine Ressourcen weg! Ich finde das sehr praktisch! Natürlich muss zum Ausdrucken der fremde Rechner auch auf die vorhandenen Drucker zugreifen können, aber ich denke das ist klar.

Jede Wette, es wird bei jedem Anwendungen geben, die er auch auf einem älteren Rechner, der vielleicht im Keller verstaubt, noch nutzen könnte. Warum diese Ressourcen dann nicht nutzen? Gut, hier kommt die Frage mit den Stromkosten ins Spiel, dass wird jeder für sich entscheiden müssen. Bei mir spielt es keine Rolle, da mein NetBook sowieso neben mir steht und im Einsatz ist. Ob und wie jeder nun die Stromkosten investieren will, bleibt jedem selbst überlassen. Für die Kosten eines neuen Rechners kann man aber allgemein einige Zeit Strom verheizen.

Was ebenfalls eine Möglichkeit darstellt, ist die Verwendung von Raspberry Pi’s als Ressourcenerweiterung. Die Dinger kosten nicht viel, ziehen wirklich nicht viel Strom und dennoch kann man viele Anwendungen problemlos darauf laufen lassen!

Optimierung

Nun will man wahrscheinlich nicht für jedes Programm einen Terminal öffnen, dort den Befehl eingeben, das Passwort und dann das Programm starten. Das kann schon ganz schön nervig sein. Netterweise bietet SSH dafür schon eine passende Alternative! Evolution habe ich eine ganze Zeit auf diese Weise gestartet:

ssh -Y mini-horst evolution

Das war ein echtes Hexenwerk, oder? In der Tat kann man einfach einen Befehl an SSH anhängen und siehe da, dass geforderte Programm wird gestartet. Allerdings wird man dennoch zur Eingabe des Passworts aufgefordert! Das macht es schwierig bis unmöglich, ein Programm einfach aus dem Menü heraus aufzurufen!

Keys

Aber auch da kann man sich Abhilfe schaffen. Der logisch und sichere Weg ist natürlich der, beide Rechner mit entsprechende Keys zu versorgen. Sind die vorhanden, interessiert sich SSH nicht mehr für Passwörter. Wie genau man das macht, werde ich in einem extra Beitrag beschreiben. Ich finde, dass sollte nicht auf die Schnelle abgehandelt werden.

expect

Eine weitere Möglichkeit, mit der ich mich aber auch erst seit kurzem befasse, ist das kleine Tool „expect„. Dieses nette kleine Ding kann auf Ereignisse reagieren. In unserem Fall zum Beispiel auf die Abfrage eines Passworts. Es kann allerdings noch deutlich mehr, was es gerade in unserem Beispiel ermöglicht, auf Programme fremder Rechner quasi nativ zuzugreifen. Alles was man tun muss ist das Erstellen einer Datei, welche die notwendigen Schritte durchführt. Ich habe mir zum Beispiel eine angelegt, die das Passwort eingibt und Evolution startet.

Der Vorteil dabei ist, ich kann das Skript über mein „Start-Menü“ von AwesomeWM starten! Genauso, als würde ich das auf dem Arbeitsrechner installierte Pendant aufrufen. Das macht die Sache wirklich angenehm!

Auch zu expect werde ich einen extra Beitrag bringen, sobald ich mich eingehend damit befasst habe. Sicher bin ich mir aber jetzt schon, mit dem Ding werde ich einiges an Spass haben! Denn SSH macht nicht nur Spass, um die Ressourcen des Arbeitsrechners zu schonen. Damit kann man auch die Ressourcen eines starken Rechners einer schwächeren Variante zur Verfügung stellen. Sogar 3D Fähigkeiten mittels VirtualGL. Aber auch das kommt in einem gesonderten Beitrag!

Ich möchte aber ausdrücklich darauf hinweisen, dass expect eine massive Schwäche hat! Will man damit das Passwort übermitteln, muss es unverschlüsselt und unmaskiert in das Skript geschrieben werden! Gerade, wenn man sich nicht im eigenen Netzwerk befindet und auf das Internet zurückgreifen muss, sollte man das tunlichst vermeiden!

Komprimierung

Sind die Rechner im lokalen Netzwerk mittels Kabel verbunden, sollte man sich über Optimierung keine Gedanken machen müssen. Aber schon W-Lan kann in seiner Bandbreite deutliche Verzögerungen hervorrufen. Zuweilen kann das nervig sein, lässt sich aber umgehen.

ssh -YC mini-horst

wäre hier das Zauberwort. Der Parameter „-C“ aktiviert die Komprimierung von SSH. Damit sollten nun Verzögerungen vermieden, oder stark abgemildert werden. Allerdings habe ich das Gefühl, dass SSH in der Hinsicht VNC nachhinkt, da ich von unterwegs aus mit VNC immer weit bessere Ergebnisse erziele, als mittels SSH. Doch im heimischen Netzwerk spielt das keine Rolle!

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.