TigerVNC (ab 1.11.0)

Es gibt viele Wege, wie man aus der Ferne, oder wie es sich ja mittlerweile eingedeutscht hat, Remote auf einen Rechner zugreifen lässt.

Das Erste, was ich dabei benutze, ist SSH. Im Terminal geht es einfach super schnell, man kann die GUIs bei sich anzeigen lassen usw. Da gibt es nur den kleinen, unschönen Nebeneffekt, mittels ssh wird nicht komprimiert. Das heisst, wenn die Verbindung etwas langsam ist, ist es nicht schön damit zu arbeiten.

Es gibt aber auch noch andere Gründe, VNC (Virtual-Network-Computing) einzusetzen.

Gründe für VNC

Neben der Tatsache, dass die Meisten VNC-Umsetzungen mittels einer Komprimierung auch bei langsamen Verbindungen deutlich bessere Ergebnisse liefern als ssh, ist für mich ein bestimmtes Argument schlagend. Man kann auch auf schwachen Rechnern noch sehr gut arbeiten!

Als Beispiel. Sagen wir, man hat einen ordentlich schnellen Rechner auf, unter, oder wo auch immer stehen. Der hat Power und mit dem kann man gut arbeiten. Der Rechner vom Ehepartner hingegen ist in die Jahre gekommen. 4GB DDR2 Speicher, Singlecore, da funktioniert nicht mehr so viel.

Jetzt die Frage. Ein neuer Rechner kaufen? Da sind so um die 300€ futsch, würde ich mal sagen. Oder aber, man macht es clever!

In der Regel jammert der normale Benutzer eines PCs dann, wenn die Browser zu langsam werden. Ja, irgendwie scheint das die einzige Anwendung zu sein, die wirklich noch genutzt wird. Aber egal. Wenn ja sonst noch alles funktioniert, warum dem Partner dann nicht einen eigenen VNC auf dem eigenen Rechner einrichten? Auf dem kann er sich dann im Vollbildmodus einloggen und damit arbeiten, als wäre es die Kiste unter dem Tisch. Oder darauf, oder wo auch immer.

Oder eben auch, man ist mit einem Laptop, oder NetBook unterwegs und würde gerne arbeiten. Dann kann man das ganze Gerümpel dann auch auf dem tragbaren Gerät installieren, wobei natürlich die zu bearbeitenden Dateien aktuell sein müssen, oder man nutzt ebenfalls einen VNC. Hier ist tatsächlich VNC SSH vorzuziehen, da ich es bislang nur selten erlebt habe, dass ich unterwegs ausreichend schnelles Internet hatte, um mit einer getunnelten Anwendung arbeiten zu können.

Okay. Es gibt noch viele andere Gründe, aber die behandele ich hier jetzt nicht.

Der Server

Ich persönlich bevorzuge TigerVNC. Da kann man sicherlich drüber streiten, da ich den jedoch benutze, beschreibe ich jetzt auch seine Einrichtung. Wie man für die jeweilige Distribution TigerVNC installiert, müsst ihr aber selbst herausfinden. Wie immer, da es viele Unterschiede gibt und ich niemanden bevorzugen will, bleibt das euch überlassen. Aber ich gehe mal stark davon aus, ihr kriegt das hin.

Ist alles installiert, geht es um die Einrichtung. Da fange ich mal mit dem Passwort an.

vncpasswd

Man wird nach dem zu setzenden Passwort gefragt. Wie so oft im Terminal. werden keine Zeichen gedruckt, man muss also schon wissen, an welcher Stelle man ist. Dann wird das Passwort wiederholt und am Ende wird man gefragt, ob man ein “view-only” Passwort setzen möchte. Also eins, mit dem man dann nur zuschauen kann, was im VNC passiert. Ich beantworte das immer mit “n”, da es in meinen Augen keinen Sinn macht.

So. Weiter. Nun braucht man noch eine Konfiguration. Diese findet sich im Home-Verzeichnis im Unterverzeichnis .vnc/.

~/.vnc/config

oder

/home/benutzer/.vnc/config

Dort kann man mehrere Dinge einstellen. Ganz simpel reicht es aber schon, wenn man die zu startende Session angibt. Benutzen wir dafür doch einfach mal ganz banal FVWM. Grade so zum Spass. Das muss natürlich vorher installiert worden sein! Welche Window- oder Desktop-Manager verfügbar sind, sieht man im Verzeichnis “/usr/share/xsessions/”.

In die Datei kommt also:

session=fvwm

Was man nun noch tun muss, ist dem Display einen Benutzer zuordnen. Ich will also, dass mein Benutzer (diabolus) Display “:1” verwenden kann. Dafür wird die Datei “vncserver.users” editiert.

sudo nano /etc/tigervnc/vncserver.users

Die sieht am Anfang so aus:

 TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa

Da muss jetzt also “:1=diabolus” rein.

 TigerVNC User assignment
#
# This file assigns users to specific VNC display numbers.
# The syntax is <display>=<username>. E.g.:
#
# :2=andrew
# :3=lisa

:1=diabolus

Das finde ich persönlich nicht wirklich elegant. Aber gut, ist nun mal eben so.

Fertig. Jetzt schaut man mal, ob es so schon klappt. Ich will einen neuen VNC auf dem Display “:1” haben.

sudo systemctl start vncserver@:1

Hat das nun geklappt? Kommt keine Fehlermeldung, dann sieht es danach aus. Man kann sich aber auch vergewissern:

sudo systemctl status vncserver@:1

● vncserver@:1.service - Remote desktop service (VNC)
     Loaded: loaded (/usr/lib/systemd/system/vncserver@.service; disabled; vend>
     Active: active (running) since Sat 2020-09-26 19:02:00 CEST; 2s ago
    Process: 1154 ExecStart=/usr/bin/vncsession-start :1 (code=exited, status=0>
   Main PID: 1160 (vncsession)
      Tasks: 1 (limit: 2350)
     Memory: 1.1M
     CGroup: /system.slice/system-vncserver.slice/vncserver@:1.service
             ‣ 1160 /usr/bin/vncsession diabolus :1

Sep 26 19:02:00 mini-horst systemd[1]: Starting Remote desktop service (VNC)...
Sep 26 19:02:00 mini-horst systemd[1]: Started Remote desktop service (VNC).

Yes, läuft!

Will man den VNC jetzt wieder stoppen, reicht einfach:

sudo systemctl stop vncserver@:1

Soll der Server aber jedes Mal beim booten gestartet werden, kommt folgendes zum Einsatz:

sudo systemctl enable vncserver@:1

Fertig mit dem Server!

Der Client

TigerVNC bringt bei der Installation freundlicherweise gleich beides mit. Server und Client. So ist es denkbar einfach, auf einen VNC zuzugreifen.

Um es zu testen, kann man es auch auf dem gleichen Rechner machen, auf dem auch der Server läuft. In diesem Fall lautet der Befehl dafür:

vncviewer :1

Erst wird man nach dem Passwort gefragt, dann erscheint der VNC.

Natürlich kann man auch ferne Rechner damit erreichen. Einfach eine IP, oder ein Alias vor das Display und fertig.

vncviewer xxx.xxx.xxx.xxx:1

Wobei die ganzen “x” natürlich durch die IP, oder das Alias ersetzt werden muss. IPs eines VPN funktionieren dabei natürlich auch!

Das war auch schon alles! Zumindest, um ganz simpel einen VNC zu starten und zu benutzen. Es gibt noch diverse Zusatzoptionen, aber um die kümmere ich mich ein anderes Mal!

Tinc auf Linux einrichten

Beitragsbild aus Wikipedia (Ludovic.ferre)

Ich fühle mich mal wieder gezwungen, ein VPN, also ein Virtuelles-Privates-Netzwerk einzurichten. Was das ist, erkläre ich gleich noch. Wobei eigentlich, die, die hier her gelangt sind, wissen es mit Sicherheit. Egal, eine kurze Erklärung kann ja nicht schaden.

Ich fühle mich deshalb genötigt, ein VPN aufzubauen, weil ich ein Linux in einer virtuellen Box laufen habe und mir nicht den Stress machen will, mit Brücken und was weiss ich zu arbeiten, nur um auf meine realen Rechner zugreifen zu können. Warum auch immer Android das einfach so kann, Linux, Windows und auch AROS finden keinen Weg zueinander.

Was ist ein VPN?

Eigentlich ist es ein Router, wie man ihn normalerweise ja auch für sein heimisches Netzwerk verwendet. Eine Stelle, über die sich Rechner miteinander verbinden können. Das heisst, die Rechner bekommen eine IP zugewiesen, über die sie sich miteinander verbinden können. Auch quer durch das Internet, hinter einen heimischen Router!

Als Beispiel, sagen wir man hat einen Desktop-PC zuhause und einen Laptop für unterwegs. Man sitzt irgendwo und denkt sich, eine Datei auf dem Desktop könnte man jetzt aber sowas von gut gebrauchen!

Wie war das noch? Der Desktop hat die IP 192.180.0.12. Also versucht man, diese IP zu erreichen und scheitert. Warum? Weil das die IP im eigenen Netzwerk ist und nicht im Internet. Dort hat das heimische Netzwerk vielleicht eine Adresse wie 80.76.21.12.

Gut, dann muss es ja mit dieser IP klappen, oder? Nö. Tut es nicht! Denn damit erreicht man quasi den heimischen Router und nicht den Desktop-PC. Man könnte den Router nun so konfigurieren, dass er Anfragen über einen bestimmten Port direkt an den Desktop schickt usw. Es geht aber eben auch mit einem VPN.

Hat man das korrekt eingerichtet, bekommt jeder Rechner eine eigene IP zugewiesen. Sagen wir der Desktop hat die Adresse 4.7.11.1 und der Laptop 4.7.11.2. Schon spielt es keine Rolle mehr, wo man ist. Ist das VPN aktiv, kann man IMMER mit diesen IPs den jeweiligen Rechner erreichen!

Das ist aber nur eine Fähigkeit von VPN, aber um die soll es hier jetzt gehen.

Warum Tinc?

Ich sehe es direkt vor mir, wie die Frage gestellt wird. Es gibt garantiert viele, die für ein VPN direkt an OpenVPN denken und genau das ist auch das Problem. OpenVPN ist quasi Mainstream!

Das macht es jedoch keines Wegs schlecht und ich will auch niemandem davon abraten, ganz sicher nicht! Ich habe sogar selbst ein VPN mit OpenVPN laufen und denke auch, ich werde auch dazu noch eine Hilfestellung wie diese hier schreiben. Aber derzeit ist es eben so, ich benutze Tinc. Das ist der ganze Grund!

Installation

Wie immer sage ich dazu nichts. Wieder aus dem einfachen Grund, es gibt so viele Distributionen von Linux, ich kann und will nicht jede einzelne davon berücksichtigen und denke auch, wer sich mit VPN befasst, der sollte auch von sich aus dazu in der Lage sein, Tinc zu installieren.

Der Server

Beitragsbild von Ludovic.ferre

Also quasi den ersten Rechner, auf dem man Tinc einrichtet. Soweit ich weiss kann Tinc auch ganz ohne einen Server auskommen, aber wie das gehen soll ist mir noch nicht ganz klar. Wenn ich es mal herausgefunden habe, werde ich dazu auch was schreiben. Solange benutze ich einen Server als Vermittlungsstelle für die Knoten.

In Tinc kann man netterweise Profile verwenden. Das tut man einfach, indem man in dem Ordner

/etc/tinc

ein neues Verzeichnis einfügt. Um dem Projekt hier Rechnung zu tragen nenne ich es einfach hinfrei.

So. Da kommt jetzt alles rein, was man zur Einrichtung so braucht. Angefangen mit der tinc.conf Datei.

Name = server
AddressFamily = ipv4
Device = /dev/net/tun

In der Tat, genau das reicht schon! Klar, damit bekommt man nur die rudimentärste Form zustande, aber das reicht mir im Moment absolut aus.

Dann kommt als nächstes die Datei tinc-up.

#!/bin/sh
ip link set $INTERFACE up
ip addr add  4.7.11.1/32 dev $INTERFACE
ip route add 4.7.11.0/24 dev $INTERFACE

Das kann man einfach so kopieren. Wichtig ist nur die “4.7.11.1/32”. Damit legt man fest, unter welcher IP der Server im VPN erreichbar sein wird. Für die Route nimmt man einfach die IP und lässt diese mit 0 enden. Bei der IP kann man natürlich auch gängigere Dinge nehmen, beispielsweise “192.168.1.1”, oder so. Das ist dem eigenen Geschmack überlassen. Für dieses Beispiel nehme ich eben 4.7.1.11.1.

Weiter zur Datei tinc-down.

#!/bin/sh
ip addr del 4.7.11.1/32 dev $INTERFACE
ip link set $INTERFACE down

Hier ist eigentlich auch nur wichtig, dass man die selbe IP verwendet, wie bei tinc-up.

Die beiden Dateien tinc-up und tinc-down müssen ausführbar sein. Deshalb noch schnell ein

sudo chmod 0755 tinc-*

und fertig. Da kriege ich jetzt bestimmt wieder Kritik, da man es doch nicht mit 0755 machen soll. Funktioniert aber!

Soweit wäre die Konfiguration dann abgeschlossen. Aber nützen tut sie nichts, denn man muss Tinc noch erklären, welche Geräte alle so in dem Netz herumhängen. Dafür wird erst das Verzeichnis hosts erstellt. Da kommen die ganzen Geräte dann rein.

Da rein kommt jetzt der Server selbst. Ja, den muss man da auch einbauen. Also einfach eine Datei mit dem bezeichnenden Namen server erstellen und das einfügen:

Address = xxx.xxx.xxx.xxx
Port = 655
Subnet = 4.7.11.1/32

Anstelle der xxx.xxx.xxx.xxx muss man natürlich die echte IP des Servers angeben.

Prima. Damit ist der Server soweit fertig konfiguriert. Aber, er soll ja auch noch verschlüsseln! Dafür brauchen wir auch Schlüssel! Einen öffentlichen und einen privaten. Die generiert man so:

sudo tincd -n hirnfrei -K4096

anstelle von hirnfrei muss man natürlich den Namen angeben, den man für das Profil verwendet hat.

Die Schlüssel werden erstellt und man wird gefragt, wo man sie gerne hätte. Das kann man bedenkenlos durchwinkeln, also einfach Enter drücken.

Damit ist die Konfiguration des Servers abgeschlossen.

Ein Knoten

Ja, EIN Knoten. Denn auf genau die Art, wie dieser Knoten eingerichtet wird, werden auch alles anderen eingerichtet!

Hier muss zunächst wieder in das Verzeichnis /etc/tinc/ das Verzeichnis hirnfrei angelegt werden. Man könnte da auch einen anderen Namen wählen, oder auf ein Profil verzichten, es macht aber durchaus Sinn, diese zu nutzen und die Profile gleich zu benennen.

Ist das erledigt, kommt wieder die Datei tinc.conf

Name = knoten1
AddressFamily = ipv4
Device = /dev/net/tun
ConnectTo = server

Wie beim Server. Jedoch ist hier eine neue Zeile: “ConnectTo = server”. Die besagt nichts anderes, als wohin der Knoten sich verbinden soll. Dabei bezieht sich der Name auf die entsprechende Datei in hosts/.

Natürlich geht es dann weiter mit tinc-up und tinc-down in dieser Reihenfolge!

#!/bin/sh
ip link set $INTERFACE up
ip addr add  4.7.11.2/32 dev $INTERFACE
ip route add 4.7.11.0/24 dev $INTERFACE
#!/bin/sh
ip addr del 4.7.11.2/32 dev $INTERFACE
ip link set $INTERFACE down

Da ist aber jetzt was anders! Die IP ist natürlich die IP, die der Knoten im VPN haben soll. 4.7.11.1 ist ja schon vom Server belegt, also bekommt der erste Knoten die Adresse 4.7.11.2. Der nächste Knoten würde die 4.7.11.3 bekommen usw.

Jetzt muss wieder das Verzeichnis /hosts erstellt werden und da muss nun die Datei knoten1 rein.

Subnet = 4.7.11.2/32

Kaum zu glauben, aber mehr braucht man da nicht! Die IP muss natürlich die Gleiche sein, wie auch in tinc-up!

Dann muss wieder ein Schlüsselpaar erstellt werden. Das ist genau das Gleiche wie beim Server!

sudo tincd -n hirnfrei -K4096

Damit wäre die Konfiguration von knoten1 abgeschlossen!

Bekannt machen

Würde man nun so versuchen, Tinc zu starten, würde man nicht weit kommen! Vielleicht startet Tinc sogar, aber da ist nichts mit einem VPN!

Das hat auch seinen Grund. Server und knoten sind zwar konfiguriert, die kennen sich aber noch nicht! Denn, auf allen Rechnern, die mit Tinc verbunden werden sollen, müssen ALLE dazugehörogen Knoten im Verzeichnis hosts/ vorhanden sein!

Warum das so ist, sieht man in meinen Augen dann am eindrucksvollsten, wenn man sich mal in hosts/ zum Beispiel die Datei server anschaut!

Address = xxx.xxx.xxx.xxx
Port = 655
Subnet = 4.7.11.1/32

-----BEGIN RSA PUBLIC KEY-----
.
.
.
-----END RSA PUBLIC KEY-----

Krass, oder? Als die Schlüssel generiert wurden, wurde der private Schlüsse ins Verzeichnis des Profils gespeichert und der Öffentliche direkt in die Datei des Servers! Aus diesem Grund müssen auch alle Rechner die gleichen Dateien in hosts/ haben, um die entsprechenden öffentlichen Schlüssel und IPs zu kennen! Logisch, oder?

Also. Die Dateien müssen nun kopiert werden. Nur wie?

Ich weiss jetzt nicht, ob das ein kluger Weg ist, oder ob man auf diese Weise Risiken eingeht. Echt, ich habe keine Ahnung. Aber, ich für meinen Teil habe einen Weg für mich gefunden, der super einfach ist!

Dazu sei gesagt, ich konfiguriere meine Rechner immer im heimischen Netzwerk mittels ssh. Hat was mit Bequemlichkeit zu tun. Sprich, ich habe in dem einen Terminal den einen Rechner, in dem anderen ein anderer Rechner. Öffne ich nun zum Beispiel mit Nano auf dem Server die Datei server, kann ich einfach den Inhalt markieren, kopieren und auf knoten1 einfügen.

Natürlich geht das auch über ssh, sshfs, ftp, mittels einem USB-Stick, man könnte es auch von Hand abtippen. Es gibt viele Wege, ich nutze den.

Ist nun die Datei server auf knoten1 und die Datei knoten1 auf dem Server, ist die Geschichte abgeschlossen!

Starten

Jetzt kann man einfach mal sein Glück versuchen und folgendes auf dem Server eintippen:

sudo systemctl start tinc@hirnfrei

ACHTUNG: Auf verschiedenen Distributionen scheint es da verschiedene Schreibweisen zu geben! So kann es auch durchaus sein, dass man folgendes eingeben muss:

sudo systemctl start tincd@hirnfrei

Also tincd und nicht tinc. Ich weiss jetzt aber nicht, wo es wie ist. Muss man ausprobieren!

Wenn keine Fehlermeldung kommt, kann man ja mal nachschauen:

ip addr

24: hirnfrei: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN group default qlen 500
    link/none 
    inet 4.7.11.1/32 scope global hirnfrei
       valid_lft forever preferred_lft forever
    inet6 fe80::16f2:d108:a777:5736/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Tada! Läuft. Jetzt auf knoten1 das selbe Spiel. Also einfach noch einmal von oben nach unten und dann sagt ip addr folgendes auf knoten1:

7: hirnfrei: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UNKNOWN group default qlen 500
    link/none 
    inet 4.7.11.2/32 scope global hirnfrei
       valid_lft forever preferred_lft forever
    inet6 fe80::ec5:c9c5:da94:1008/64 scope link stable-privacy 
       valid_lft forever preferred_lft forever

Jetzt kann man mal schauen, ob man den Server anpingen kann. Hat alles geklappt, sollte das ja kein Problem sein.

ping 4.7.11.1

PING 4.7.11.1 (4.7.11.1) 56(84) bytes of data.
64 Bytes von 4.7.11.1: icmp_seq=1 ttl=64 Zeit=36.9 ms
64 Bytes von 4.7.11.1: icmp_seq=2 ttl=64 Zeit=36.4 ms
64 Bytes von 4.7.11.1: icmp_seq=3 ttl=64 Zeit=36.6 ms
64 Bytes von 4.7.11.1: icmp_seq=4 ttl=64 Zeit=35.7 ms
64 Bytes von 4.7.11.1: icmp_seq=5 ttl=64 Zeit=36.1 ms
64 Bytes von 4.7.11.1: icmp_seq=6 ttl=64 Zeit=36.2 ms

Ich doch prima! Der Server lässt sich über die vorgegebene IP anpingen. Es hat also alles funktioniert!

Will man jetzt bei jedem Start das VPN automatisch mitstarten, muss man folgendes eingeben:

sudo systemctl enable tinc
sudo systemctl enable tinc@hirnfrei

Ja, man muss wirklich auch tinc auf diese Weise beim booten aktivieren! Nun sollte das VPN bei jedem Start automatisch mitgestartet werden und von nun an hat man auch, egal wo man ist, immer direkten und verschlüsselten Zugriff auf seine Rechner!

Brave: Schneller surfen?

Es soll dieses Mal um Brave gehen, einen Browser der sich damit brüstet, möglichst viel an Werbung, Tracking und was weiss ich noch einfach wegzulassen, heraus zufiltern, oder sonst wie ignoriert.

Wer nun erwartet, dass ich die grandiose Möglichkeit des Browsers beweihräuchere, wie man damit seine Privatsphäre schützen kann, der wird hier enttäuscht! Dazu gibt es auch schon sehr viele Artikel, die fundiert darauf eingehen.

Und warum schreibe ich dann?

Ganz einfach. Die ganze Sache hat nämlich einen netten Nebeneffekt, den man anscheinend in anderen Artikeln einfach so unter den Tisch fallen lässt, oder mal nebenbei erwähnt!

Brave macht das Surfen schneller und spart Ressourcen! Zudem gibt es ihn für Linux, MacOS und Windows.

Ja und?

Nun, ich habe schon hier und da über Dinge geschrieben, die sparsam sind. Nicht Autos, aber eben Betriebssysteme (BunsenLab), WindowManager (AwesomeWM) usw. Dummerweise machen die Meisten Leute eine Sache am Meisten: Surfen! Also muss da ein Browser her, der etwas kann! Natürlich könnte man Link einsetzen, aber ob man damit so gut Disney+ gucken kann, wage ich zu bezweifeln!

Das heisst, auch wenn man ein sehr schlankes OS hat, kaum klebt man einen leistungsstarken Browser drauf, schon sind die Ressourcen futsch. Komisch eigentlich, denn für die Meisten Seiten braucht man doch gar nicht so viel Power! Egal, es ist eben so. Also hat man vielleicht ein schlankes OS, könnte damit einen betagten Rechner noch gut benutzen, aber weil der Browser zu heftig ist, kann man eine, vielleicht sogar die entscheidende Sache damit nicht machen. Was ein Jammer!

Mein NetBook zum Beispiel. Ein Asus EeePC 1015P. Als ich den bekam lief darauf Minetest und auch SecondLife. Aber mittlerweile, wenn man da Firefox oder Chromium drauf macht, wird selbst YouTube zum Geduldsspiel. Disney+ oder Netflix hat Aussetzer und selbst harmlose Seiten machen nur wenig Spass.

Um das Ganze auf den Punkt zu bringen, ältere Hardware zusammen mit schlankem OS bringen nichts, wenn der Browser zu heftig ist!

Brave ist da besser?

Dafür werde ich ihn noch intensiver testen müssen. So habe ich vor, ihn auch auf meinen alten Laptops zu installieren, auch dem Raspberry Pi usw. Auch auf Qemu unter verschiedenen Betriebssystemen. Dann wird sich ja zeigen, was die Wundertüte wirklich kann!

Bislang kann ich sagen, während Firefox und Chromium auf dem NetBook für Streaming-Dienste echt kaum zu gebrauchen ist, schlägt sich Brave mit YouTube und Netflix deutlich besser! Auch Seiten wie beispielsweise das ARK-Wiki werden schneller geladen, da die ganze Werbung raus fliegt. Auf jeden Fall funktionieren bislang alle Seiten tadellos, die ich damit angesteuert habe.

Wie Brave sich weiter schlägt, werde ich dann hier beschreiben. Wer weiss, vielleicht löst er ja Vivaldi als meinen Standardbrowser ab?

Wie läuft das mit Arch?

Unter Arch muss man Brave über AUR installieren. Wie das funktioniert habe ich hier beschrieben. Dabei muss man jedoch etwas beachten!

Es gibt zwei Möglichkeiten, Brave zu installieren! Einmal per Quellcode, einmal als Binary, also vorcompiliert. Wer Zeit, oder eine schnelle Internetverbindung hat, dem rate ich zur Quellcode-Variante. Aber Achtung, die verschlingt 12 GB! Ja, GigaByte! Das dauert also mit dem runterladen!

Hier folgen jetzt die Links, zu den entsprechenden AUR-Seiten:

Quellcode

Binary

Viel Erfolg beim Surfen!

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!