FireFox per SSH zum X11 forwarden

Serverfarmen bei Hostern und Unirechenzentren haben zwei Dinge gemeinsam: Es ist dort ziemlich ungemütlich und die Mitarbeiter müssen auf den Servern trotzdem ab und an Desktopanwendungen ausführen. Jeder der mal als studentische Hilfskraft gearbeitet hat kennt das, wenn ihn sein Mitarbeiter da hinschickt, um was zu machen.

Es gibt dazu allerdings Alternativen:

Man könnte heute sowas wie TeamViewer, VNC oder RemoteDesktop benutzen. Wenn man den ganzen Desktop sehen will, ist das eine feine und sehr nützliche Sache. Oft aber möchte man nur ein Programm ausführen und das unkompliziert und schnell. Den ganzen Desktop ständig zu übermitteln, ist nicht hilfreich. Also haben sich die UNIX Entwickler bereits in den 80zigern des letzten Jahrtausends eine Lösung einfallen lassen, die auch heute noch funktioniert:

das X11-Forwarding

X11-Forwarding leitet Anfragen an den lokalen X11-Display-Server ( der sorgt für das Bild auf einem Linuxrechner )  an eine externe IP Adresse um. Das geht, weil Linuxprogramme von vornherein in einer Client-Server-Umgebung arbeiten. D.b. daß die Programme im Gegensatz zu Windows eine Netzwerkschnittstelle aufrufen um mit dem Display zu sprechen. Damit kann das Display an einem anderen Ort stehen als wo das Programm ausgeführt wird und wenn es auf der anderen Seite der Erde oder im Weltraum ist.

Einziger Haken der Sache, je weiter die Geräte auseinander sind, desto langsamer reagiert das Programm auf Eingaben, weil die Daten erstmal auf die Reise geschickt werden müssen. Die resultierenden Wartezeiten nennt man Latenz.

WOW oder EVE-Online wollen Sie so nicht unbedingt spielen 😉 ( aber es wäre möglich )

Sie brauchen:

einen Linux/Unix Server mit installierten X11 Komponenten und einem SSH-Server. Den nennen wir mal „E“ für Entfernt.
Passend dazu einen Linux/Unix Rechner an dem man das Ergebnis sehen will, den nennen wir mal „L“ für Lokal.

Auf L sollte SSH installiert sein und ein X11-Server laufen. Wenn Sie grade davor sitzen und das hier lesen können, dürfte das bereits der Fall sein. Wenn Sie nur einen Windowsrechner haben, installieren Sie sich XMING ( Nein, nicht verwandt mit Xing ).

Achtung Windowsuser: Sie brauchen auch ein vollwertiges SSH Programm um weiter machen zu können und zwar eins, daß in der Konsole ausgeführt wird. Wenn Sie nur ein SSH Terminalprogramm haben, wärs möglich daß dies X11 Forwarding für Sie unterstützt. Machen Sie sich bitte schlau wie Sie das dort aktivieren.

Die Konfiguration

Auf E ändern wir zunächst die /etc/ssh/ssh_config und aktiveren dort Trustedforwarding:

X11TrustedForwarding yes

Das wars schon.

Von L aus verbinden wir uns mit dieser Option zu E :

ssh -C -Y username@servername

Je nach lokaler SSH Umgebung müssen Sie hier noch Ihr Passwort eingeben, ich kann Ihnen nur einen SSH-Agent empfehlen, da sparen Sie sich sehr viel Getippe.

-Y aktiviert X11TrustedForwarding
-C aktiviert die Kompression, damit geht es etwas schneller.

Auf E geben Sie jetzt mal ein :

echo $DISPLAY

da müßte kommen :

localhost:10.0

jetzt starten Sie einfach das gewünschte Programm, z.b. Firefox. Das geht auch direkt in einem Rutsch:

[marius@eve ~]$ ssh -C -Y root@c1 "firefox"

(process:31671): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
Gtk-Message: Failed to load module "pk-gtk-module"
Gtk-Message: Failed to load module "canberra-gtk-module"

An Fehlermeldungen müssen Sie sich jetzt leider gewöhnen, die sieht man normalerweise ja nicht, weil man die Programme nicht in der Konsole startet. Diese erwarten zurecht eine korrekte X11 Umgebung, die SSH aber nicht gehen kann. Das macht aber i.d.R. keine Probleme. Einfach ignorieren 😉

Das wars schon. Die X11 Verbindung wird durch SSH getunnelt und dabei praktischerweise noch verschlüsselt.

Warum könnte man sowas brauchen ?

Stellen Sie sich mal vor, Sie möchten ein Programm A von einem Server B auf Ihren Server E bekommen, daß 2-5 GB groß ist.

Wenn Sie das jetzt erstmal zu sich und dann auf den Server E kopieren, dauert das Stunden bis Tage, je nach DSL Leitung.

Wenn Sie das aber direkt auf E machen, dauert es ggf. nur Minuten, weil Sie dort 100 Mb/s oder gar Gb/s Anbindungen haben.

Normalerweise würde man sowas mit WGET machen, aber z.b. Oracle gängelt Webseitenbesucher erst noch mit  Cookies und Javascripten, nur damit man Java nicht direkt kopieren kann. Da kommt ein vollwertiger Firefox sehr gelegen.

aus YUM ableiten, wo man ein RPM findet

Ich werde immer gern gefragt, wo ich den die Links zu den RPMs finde, wenn ich brauche, aber nicht finde. Ein Weg ist das YUM Repo direkt fragen. Zunächst einmal suchen wir uns das passende Repository aus:

# ls -la /etc/yum.repos.d/
insgesamt 68
drwxr-xr-x.   2 root root  4096 18. Jun 14:25 .
drwxr-xr-x. 172 root root 12288  4. Aug 08:35 ..
-rw-r--r--.   1 root root   179 25. Jul 2007  adobe-linux-i386.repo
-rw-r--r--.   1 root root   183  1. Apr 2011  adobe-linux-x86_64.repo
-rw-r--r--.   1 root root  1254 19. Feb 14:46 fedora.repo
-rw-r--r--.   1 root root  1213 19. Feb 14:46 fedora-updates.repo
-rw-r--r--.   1 root root  1271 19. Feb 14:46 fedora-updates-testing.repo
-rw-r--r--.   1 root root  1241 15. Dez 2013  rpmfusion-free-rawhide.repo
-rw-r--r--.   1 root root  1172 15. Dez 2013  rpmfusion-free.repo
-rw-r--r--.   1 root root  1170 15. Dez 2013  rpmfusion-free-updates.repo
-rw-r--r--.   1 root root  1230 18. Mär 2013  rpmfusion-free-updates-testing.repo

dann holen wir uns die BaseURL aus dem Repo ( was anderes macht Yum eigentlich auch nicht )

# cat /etc/yum.repos.d/rpmfusion-free.repo | grep baseurl
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/$basearch/os/
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/$basearch/debug/
#baseurl=http://download1.rpmfusion.org/free/fedora/releases/$releasever/Everything/source/SRPMS/

Die BaseURL kann mit einem normalen Browser aufgerufen werden, wenn man die Variablen ersetzt.

$releasever = Fedora Nummer z.b. 20
$basearch = Basearchitecture also i686 für 32 bit oder x86_64 für 64 bit.

Beispiel:

http://download1.rpmfusion.org/free/fedora/releases/20/Everything/x86_64/os/

Jetzt rufen Sie das noch mit dem Browser auf und siehe da, alle RPMs liegen vor Ihnen.

Es kann vorkommen, wenn die Repos besonders groß sind, daß diese in mehrere Teile aufgeteilt sind. Üblicherweise nach dem ersten Zeichen des Dateinamens also A B C usw. .

RPMFIND.net

Wenn Sie ein spezielles RPM suchen, daß nicht in Ihren Repos enthalten ist, kann http://rpmfind.net/ Ihnen helfen. Sie finden dort eine Vielzahl von Paketen, die nicht mit Fedora ausgeliefert werden, aber trotzdem benötigt werden. Oder auch einfach nur ältere Versionen.

Koji – Alte Pakete finden, die Fedora aus dem Repo gelöscht hat.

Rufen Sie mal diese URL auf :  http://koji.fedoraproject.org/koji/packageinfo?packageID=280

Sie werden dort die Liste aller HTTPD Pakete finden, die jemals für Fedora gebaut wurden.

alle jemals gebauten Pakete für ein Programm

alle jemals gebauten Pakete für ein Programm

Suchen Sie sich die Version aus, die Sie gern hätten und klicken Sie auf den Link. Sie bekommen dann die Paketinformationen angezeigt. Diese enthält auch alle Downloadlinks zu den jeweiligen Architekturen.

genaue Paketinformationen und Downloadlinks

genaue Paketinformationen und Downloadlinks

„Zuletzt verwendet“ abschalten.

Wenn Sie etwas auf Ihre Privatsphäre achten, haben Sie i.d.R. verschlüsselte Laufwerke oder vollverschlüsselte Festplatten, auf denen Ihr System installiert ist.  In letzterem Fall, ist es für Sie als Einzeluser ggf. nicht so schlimm, wenn alle Ihre Dateiaufrüfe von Gnome protokolliert werden.

Wenn Sie aber nur ein TrueCrypt Laufwerk benutzen um Ihre schützenswerten Daten geheim zu halten, ist die „Zuletzt verwendet“ Funktion von Gnome ( oder auch Windows) meistens ein echter Verräter. Der vollständige Pfad mit Dateinamen wird in Ihrem Homeverzeichnis  gespeichert. Damit kann man als „Ermittler“ anfangen die Verschlüsselung zu knacken, denn diese Verzeichnisse und Namen müssen ja in der verschlüsselten Festplattenstruktur enthalten sein. Damit läßt sich ein passender Directoryblock im Filesystem berechnen und aus dem kann dann das Passwort abgeleitet werden. Natürlich ist es immer noch die Suche nach der Nadel im Heuhaufen, aber der Heuhaufen ist deutlich kleiner geworden.

Einfach abschalten

Abschalten kann man die Datensammlung ganz einfach:

1. Rufen Sie den dconf-Editor auf.

Dconf-editor suchen und öffnen

dconf-Editor suchen und öffnen

 

2. in org -> gnome -> desktop -> privacy -> remember-recent-files abschalten :

 

im Dconf-editor die Recent-Files Option abestellen

im Dconf-editor die Recent-Files Option abstellen

 

Das wars schon. Gnome löscht dann die Aufzeichnungen auch sofort. Trotzdem sollte man unter ~/.local/share/ nachsehen ob die Datei  recently-used.xbel (und alle Derivate davon) leer sind.

Alternative Ansätze

Wer diese Funktion im täglichen Arbeiten braucht, kann sich ein kleines Script schreiben, daß beim Beenden der Gnome-Session, also wenn der User sich ausloggt, die Datei recently-used.xbel löscht. Damit kann man nachsehen, was man heute gemacht hat, aber eben nicht mehr was gestern war.

Allerdings gibt es hier einen derben Haken. Zum Einen werden die Dateien auf einem unverschlüsselten Datenträger nie wirklich gelöscht, bis nicht ein anderes Programm den Block auf der Festplatte neu belegt, zum Anderen kann im Falle eines Stromausfalls, der gern einer Hausdurchsuchung voran geht, selbiger dazu führen, daß die Datei gar nicht mehr gelöscht wird.

In jedem Fall, sollte die Datei dann nicht nur einfach mit rm -f gelöscht werden, sondern vorher mit Datenmüll überschrieben werden. Wenn diese dann wiedergefunden wird, steht nichts brauchbares mehr drin.

Soviel zur Theorie

Was vielen auch nicht immer bewußt ist, ist der Umstand, daß moderne Filesysteme ein sogenanntes Journal führen. Das sind abgetrennte Bereiche im Filesystem, in denen jeder Schreibzugriff vorab ausgeführt wird, bevor er im „echten“ Filesystem durchgeführt wird. Damit kann im Falle eines Stromausfalls die Konsistenz der Daten beibehalten werden und man muß das Filesystem lediglich kurz die letzte Aktion nochmals durchführen lassen um wieder einen benutzbaren Datenträger zu haben.

Leider bedeutet das auch, daß im Journal eine Kopie der geschriebenen Daten steht, selbst wenn diese auch gelöscht werden ( Erklärung oben). Wenn ich nun eine Datei überschreiben will, steht diese im Journal ggf. an einer anderen Stelle der Festplatte und überschreibt nicht, was ich eigentlich überschreiben wollte. Zwar wird im nutzbaren Teil des Filesystem die Datei überschrieben, aber ggf. nicht im Journalbereich.

Das kann man nur vermeiden, wenn man im Anschluß das Journal mit Datenmüll flutet, also eine große Datei schreibt, die größer ist als die Größe des Journalbereiches des Filesystems.

In der Praxis – Datenspuren vermeiden

In der Praxis kann nur der Einsatz eines vollverschlüsselten Mediums helfen das Problem einzudämmen. Ganz beheben kann man das nur, in dem man gar nicht erst speichert, was man nicht wirklich braucht. So kann auch nichts „verloren“ gehen oder in fremde Hände gelangen.