Webseiten mit elinks in screen über eine SSH-Verbindung mit rxvt-unicode solarisiert betrachten

Die Überschrift sagt schon alles. Ich vermute ein ähnliches Problem dürfte weniger als ein Milliardstel der Weltbevölkerung betreffen, aber aus Spaß hier die kurze Geschichte.
Ich hatte mich per SSH in den Toshiba Portégé 3110CT alias speedy eingeloggt und wollte nun mit Solarized und meinem neuen 256-Farben-Terminal rxvt-unicode das System updaten und überprüfen, ob mein Blog in elinks irgendwie anders als zuvor aussah. Wenn ich mich remote zu meinem mit Debian Stable betriebenen Laptop verbinde, starte ich danach für gewöhnlich screen, womit es mir leichter fällt mehrere Anwendungen parallel wie mit einem grafischen Fenstermanager zu nutzen.
Als erstes erhielt ich die Fehlermeldung

Error opening terminal: rxvt-unicode

als ich versuchte eine Anwendung wie htop zu starten. Das Problem resultiert daraus, dass das System den Terminal rxvt-unicode-256color nicht kennt und deshalb auch nicht weiß, wie es das aufgerufene Programm darstellen soll. Da das scheinbar ein uraltes Problem ist konnte ich sowohl im englischen Gentoo als auch im deutschen Arch Linux Wiki eine Lösung hierzu finden. Kurz gesagt, muss die Terminfo Datenbank auf den aktuellen Stand gebracht werden und eine Infodatei im versteckten Ordner .terminfo im Home-Verzeichnis des Benutzers auf dem entfernten Rechner angelegt werden.
Im Gentoo-Wiki wird das elegant so gelöst:

infocmp rxvt-unicode | ssh USER@REMOTE_IP 'mkdir -p .terminfo && cat >/tmp/ti && tic /tmp/ti'

Auf dem lokalen Rechner werden die Informationen über den verwendeten rxvt-unicode-Terminal abgefragt und über SSH auf die entfernte Maschine geschickt, wo die Infodatei mit Hilfe von tic von einem Quellformat in ein kompiliertes Format umgewandelt wird. Danach konnte ich dann wie gewohnt Programme öffnen.
Obwohl ich den Terminaltyp in elinks nicht auf 256 Farben eingestellt hatte, sondern weiterhin bei den 16 ANSI Farben belassen hatte, wurde meine Webseite ohne weiteres Zutun schon in den Solarized-Farben dargestellt. Als allgemeiner Tipp solltet ihr bei Farbproblemen % in elinks drücken, womit man zwischen verschiedenen Dokumentfarben umschalten kann. Ich verstehe nur noch nicht, warum bei manchen Farbkombinationen die Schrift fett dargestellt wird und bei manchen normal. Vermutlich hat das etwas mit dem ANSI-Farbcode zu tun. Und so sieht gambaru in elinks solarisiert aus. 😉

ttylinux: Sehr klein und minimal doch nur etwas für Experten

Wer dachte das vorgestern vorgestellte AntiX wäre ein Linux für Konsolenliebhaber, der kannte ttylinux noch nicht. Ich denke, ich lehne mich nicht zu weit aus dem Fenster, wenn ich behaupte ttylinux ist eine Linuxdistribution für Experten, Fortgeschrittene und Bastler.
Es fällt mir ehrlich gesagt schwer hier in die Tiefe zu gehen, denn mit wenigen Worten ist viel gesagt. Ich versuche seit einiger Zeit meinen Horizont in Sachen Linuxdistributionen zu erweitern. Insbesondere interessieren mich Distributionen, denen es gelingt mit moderner Software ältere Rechner genauso produktiv wie früher zu betreiben, ohne sie dabei in die Knie zu zwingen.
Bei ttylinux bin ich mir bei einer Sache sehr sicher. Es handelt sich um eine reine Konsolendistribution. Auch in Zukunft wird es hierfür keine Unterstützung für grafische X Programme geben. Der Fokus liegt ganz klar auf sehr geringen Hardwareanforderungen und minimaler Ausstattung, die sich mit eigenem Einsatz aber erweitern lässt.

Ziele der Distribution sind eingebettete Systeme oder ältere Rechner mit sehr wenig Arbeitsspeicher. Als Empfehlung sollten es mindestens 28 MB RAM sein. Zusätzlich begnügt sich ttylinux bei einer Festplatteninstallation mit gerade einmal 12 MB Speicher und lässt sich nicht nur für i386 und x86_64 installieren sondern auch für die PowerPC, ARM und MIPS Architektur. Das Booten funktioniert dabei außerordentlich schnell.
Die geringe Größe der Distribution lässt sich leicht durch die sehr geringe Anzahl an vorinstallierter Software erklären und auch weitere installierbare Softwarepakete sind Mangelware. Um den Pool zu erweitern sind auf jeden Fall Extraarbeit und die Bedienung des ttylinux eigenen Build-Systems von Nöten. Problematisch wird es auch mit der Unterstützung von Hardwarefunktionen. Sollte man keine Ethernet Schnittstelle besitzen, was bei älteren Laptops nicht unüblich ist, wird man schnell vor Probleme gestellt. In der Dokumentation, die nur in Englisch vorliegt, konnte ich zumindest nichts zu PCMCIA und einer Konfiguration von WLAN-Karten mit WPA entdecken.
Installierte Pakete

Größe und Speicherverbrauch sind zwar beeindruckend, doch immer dann, wenn ich mich dabei ertappe Veränderungen am Linuxkernel vornehmen zu müssen und zusätzliche Software selbst kompilieren muss, gibt es mit großer Sicherheit meist eine einfachere Möglichkeit das Problem zu lösen. Als Gegenbeispiel lässt sich Slitaz in der Minimalinstallation schon mit 8 MB RAM zum Laufen bewegen und nach der erfolgreichen Installation auf dem Toshiba 220 CS standen mir danach mehr als 2500 vorgefertigte Softwarepakete zur Verfügung.
Man kann es drehen und wenden wie man will, aber ttylinux eignet sich am ehesten für Leute, die Linux from scratch langweilt und die eine neue Herausforderung suchen. Wer sich vor Bastelarbeit nicht scheut, ein absolut minimales Linux mit SSH und dem retawq-Textbrowser betreiben oder eine Linuxfirewall aufsetzen möchte, wird an ttylinux sicherlich Gefallen finden.

AntiX: Ein schlankes Debian-Derivat mit Fluxbox und IceWM

AntiX. Der Name ließ mich zuerst an ein reines Betriebssystem für die Konsole denken. Doch ein Blick mit Hilfe von Virtualbox offenbarte eine Live-CD mit der Möglichkeit in einen grafischen Desktop mit Fluxbox oder IceWM zu booten. Ich war zuerst skeptisch als ich las AntiX basiere auf Debian Testing und Mepis, welches ebenfalls wiederum auf Debian Stable fußt. Schon wieder ein Debian-Derivat?
Nachdem ich dieses Jahr einige neue Distributionen ausprobiert hatte, wusste ich, zählt man Debian und Ubuntu basierende Distributionen zusammen, dass laut Distrowatch Debian in 66% aller Linuxdistributionen steckt. AntiX war in dieser Hinsicht also auch keine Überraschung mehr. Welche Gründe könnte es geben AntiX einer reinen Debian Installation vorzuziehen?
Nach dem Login fällt auf jeden Fall das ansprechende Design des IceWM-Desktops auf. Nicht dass das Panel am unteren Bildschirmrand eine originelle neue Erfindung wäre, aber die Struktur des Menüs und das gewählte Thema machen einen überzeugenden Eindruck. Schaut man sich dann die installierten Programme etwas näher an, findet man dort viele bekannte schlanke GUI- sowie Konsolenanwendungen wieder. Großes Kompliment für alpine, moc, rtorrent, elinks und irssi, die ich auch ohne weiteres für jedes effiziente und leichtgewichtige Setup empfehlen kann.
Zusätzlich gibt es z.B. auch noch den DOS-Emulator DOSBox dazu. DOSBox in AntiX in Virtualbox auf einem Debian Testing Wirtssystem...ah Fortschritt ist wundervoll. 🙂

Für Linuxeinsteiger kann es eventuell verwirrend sein, dass AntiX sich nicht auf eine Applikation pro Aufgabe beschränkt hat. Während ich die Idee GUI- und Konsolenapps nebeneinander zu präsentieren gut finde, macht es nicht so viel Sinn den ROX-Filer als Zeichner des Hintergrundbilds zu verwenden, Thunar parallel zu installieren und dann ROX mit einem Desktopicon in den Vordergrund zu rücken. Eine Abwechslung ist hingegen die Verwendung der Internetsuite Iceape, mit der Browsen, E-Mail, ein Adressbuch, ein HTML-Editor und Chatten zur Verfügung stehen.
Die Fluxbox-Variante bringt die gleichen Anwendungen mit und...den Fenstermanager Fluxbox.

AntiX liefert einen eigenen Installer, mit dem sich das Betriebssystem direkt von der Live-CD aus installieren lässt. Hier gibt es nichts wirklich Neues zu bestaunen. Auffallend ist die EULA, die man zuvor akzeptieren muss und die auf einige Copyright-Einschränkungen zu Mepis hinweist, dessen treibende Kraft ein Unternehmen mit Sitz in den USA ist. Mein erster Eindruck war, dass das nicht im Widerspruch zu FOSS steht, da die GPL oder andere freie Softwarelizenzen respektiert werden. Mepis versucht aber genauso wie Ubuntu mit Dienstleistungen und einem eigenständigen Produkt Geld zu verdienen.
AntiX lässt einem die Wahl der Software. Debian Testing ist voreingestellt, man kann aber auch zu einem Mix aus Debian Stable und den Mepis-Repositorien wechseln. Mir persönlich hat die Konfiguration des IceWM-Desktops gefallen und wer einfach an eine Konfiguration für Fluxbox oder IceWM gelangen möchte, kann mit AntiX nicht viel falsch machen.
Dennoch würde ich Debian AntiX vorziehen. Das Derivat bringt zwar einige einfache grafische Konfigurationswerkzeuge mit, hebt sich aber nicht so stark von Debian ab, dass es unverwechselbar wäre. Deinstalliert man den Mepis-Kernel und schaltet nur Debian-Quellen frei, ist es im Prinzip auch nichts anderes als Debian. Hinzu kommt, dass die Dokumentation ziemlich dürftig ist.
AntiX lässt sich ein wenig mit Crunchbang vergleichen, was eine sehr gute Openbox-Konfiguration zusammengestellt hat, das Rad aber auch nicht grundsätzlich neu erfindet. Während AntiX teilweise mehrere Applikationen pro Aufgabe ausgewählt hat, bleibt Crunchbang dem Motto "Eine Anwendung pro Aufgabe" treu.
Alles in allem ist der Testkandidat eine gute Alternative für ältere Rechner, die man gerne näher anschauen darf, sofern man sich für Fluxbox- oder IceWM-Desktops interessiert und nicht so viel Zeit in die Konfiguration stecken möchte. 128 MB RAM werden als Mindestanforderungen empfohlen. Wem die vorinstallierten Anwendungen nicht gefallen, sollte sich auch einmal die Base- oder Core-Variante von AntiX anschauen, worauf man aufbauend sich ein eigenes System erstellen kann.

Iceweasel 6 ist erschienen

Vor kurzem ist Iceweasel 6 erschienen, sehr zeitnah zur Veröffentlichung von Mozillas neuster Firefox Version Nr. 6.
Mittlerweile scheinen sich diverse Abhängigkeitsprobleme in Debian Unstable aufgelöst zu haben, so dass alles seinen gewohnten Gang geht. Das Debian Mozilla Team hat auf seiner Webseite die Installationsbeschreibung auf den neusten Stand gebracht.

Debian Unstable und Testing

Für Unstable lässt sich der neuste Iceweasel-Browser wie gehabt mit

aptitude install iceweasel

installieren. Die deutschen Sprachdateien müssen auch nicht mehr manuell von einem Spiegelserver heruntergeladen werden, sondern können mit

aptitude install iceweasel-l10n-de

eingerichtet werden.
Die selbe Prozedur sollte in wenigen Tagen auch für Testing funktionieren, wenn die Pakete automatisch in diesen Debian-Zweig einfließen.

Debian Stable

Für Debian Stable gibt es einen Backport. Der Eintrag in der /etc/apt/sources.list lautet:

deb http://backports.debian.org/debian-backports squeeze-backports main
deb http://mozilla.debian.net/ squeeze-backports iceweasel-release

Installation

aptitude install -t squeeze-backports iceweasel

Wer an der Beta- oder Aurora-Version von Iceweasel interessiert ist muss nur das Wort release in der sources.list durch beta oder aurora ersetzen.

Schlüssel importieren für mozilla.debian.net

Wie bei Debian üblich werden alle Pakete mit gpg vom Paketverwalter signiert. Der Schlüssel zur Verifikation für mozilla.debian.net lässt sich mit Root-Rechten im Terminal durch zwei Befehle so importieren.
wget -O- -q http://mozilla.debian.net/archive.asc | gpg --import
gpg --export -a 06C4AE2A | apt-key add -

Ansonsten gilt das Geschriebene in meinem alten Post zu Iceweasel 5.0.
Ich hoffe in Zukunft bleibt das Installationsschema nun so erhalten. Damit lässt sich leben. Als offensichtlichste Neuerung ist mir im neuen Iceweasel nur der hervorgehobene Domainname in der Adresszeile aufgefallen, was es schon (wie so vieles) bei Opera mal zuerst gab.
Sollte die Geschwindigkeit bei den Veröffentlichungen beibehalten werden, hat Firefox/Iceweasel die Chance Chromium mit der Versionsnummer Ende nächsten Jahres zu überholen. Ob es sinnvoller ist nur für große Änderungen ganze Versionsnummern zu nehmen oder nicht, sei an dieser Stelle mal dahingestellt.

GNU screen: $term too long – sorry

Kurze Notiz um einen nervigen Bug zu fixen.
Nachdem ich wegen der 256-Farben-Palette von Solarized auf rxvt-unicode-256color umgestiegen bin, lässt sich GNU-Screen plötzlich nicht mehr starten.
Die Fehlermeldung lautet:

$term too long - sorry

Der Bug ist im Debian-Bugtracker mit der Nummer #621804 bekannt. Es gibt scheinbar auch einen Fix sowohl Upstream als auch bei Debian, aber das Ganze scheint noch nicht eingepflegt worden zu sein.
Ich weiß zwar nicht, warum die Char-Variable für den Namen des Terminalemulators nur 20 Byte groß sein darf, aber die Lösung des Problems scheint recht einfach zu sein.
In .Xdefaults muss der Name des Terminals verkürzt werden.
z.B.

urxvt*termName:		rxvt-256color

Damit scheint alles wieder in Ordnung zu sein.

Ein Lob für Midori

An dieser Stelle muss ich einfach mal ein Lob für Midori loswerden. Seit mehr als einem Jahr benutze ich die grüne Pfote nun auf dem Inspiron 4000 und mit der aktuellen Version 0.4 in Debian Unstable hat es Midori geschafft erneut die Balance zwischen Funktionalität und Effizienz wiederzufinden, die mich mal zu diesem schlanken Webkit-Browser gebracht hat.
Ich bin mir nicht sicher, ob es die neue Upstream-Version oder der Wechsel der Bibliothek von libwebkit zu libwebkitgtk in Debian war (die Gründe dafür stehen leider nicht im Changelog), auf jeden Fall ist die Startzeit deutlich verbessert worden und zumindest ein Bug, der mich noch vor Monaten darin hinderte einige Webseiten mit sehr viel JavaScript zu betrachten ist mit der aktuellen Version vollständig beseitigt worden.
Was mir an Midori besonders gut gefällt, sind die schon integrierte AdBlock-Funktion, Mausgesten und ein Feature, was ich bisher nur von elinks und dem Vimperator-Addon des Firefox Browsers kannte.
Drückt man . erscheinen Zahlen neben allen Links einer Webseite. Man muss dann nur noch die Nummer eingeben und Return drücken und schon öffnet sich der Link im Browser. Ich bin zwar auch gerne ein Mausklicker, aber wenn man viel im Internet unterwegs ist, bemerkt man einfach die Geschwindigkeitsvorteile dieser Methode.
Also von mir darf es mit Midori gerne so weitergehen. Gute Arbeit! 🙂

Paketerstellung mit Debian: Weitere nützliche Quellen

Es ist mitunter gar nicht so einfach den besten Weg zum Erstellen eines Debianpakets zu finden, da über die Jahre die Werkzeuge zur Paketerstellung immer ausgefeilter und zahlreicher in Debian geworden sind.
Wenn man aber sieht, dass tausende von Freiwilligen ihren Beitrag zu Debian und Ubuntu leisten, kann es nicht anders sein, als dass es Standards und Prozeduren gibt, um die Qualität des gesamten Projekts zu gewährleisten.
Lucas Nussbaum hat z.B. ein Packaging Tutorial erstellt, was eine gute Übersicht über den gesamten Paketerstellungsprozess bietet. Es lässt sich unter dem angegebenen Link direkt als PDF-Dokument herunterladen und befindet sich auch als Deb-Paket in Unstable.

aptitude install packaging-tutorial

Dort gibt es zusätzlich zu dem PDF-Dokument drei Praxisbeispiele aus dem Entwickleralltag, die sich Schritt für Schritt nachvollziehen lassen.
Vor ein paar Wochen hatte ich ein paar Methoden vorgestellt, wie man seine eigenen Debian Pakete erstellen kann. Nimmt man diesen Merkzettel, das Packaging Tutorial und folgt den Links zur offiziellen Dokumentation, sollte einer Karriere als Debianentwickler nichts mehr entgegen stehen.
Es kann sicher nichts schaden, deshalb hier noch einmal die Linkliste zur offiziellen Dokumentation.

Offizielle Dokumentation

Extras

Gutes Video Tutorial zum Paketbau in Deutsch (AdvPackaging.ogv)

Das Ende einer Ära: Leb wohl PC

Dieser Tage wird das Ende einer Ära zelebriert. Heute vor 30 Jahren erblickte der IBM 5150 Personal Computer das Licht der Welt. Geboren mit 16KB Arbeitsspeicher und einer 16bit 8088 CPU getaktet mit 4,77 MHz hast du seit dem die Welt grundlegend verändert. Dein Design war maßgeblich für kommende Generationen und nie werde ich deine schlapprigen 5,25 Zoll Disketten oder die 10 MB große Festplatte vergessen, mit der wir das gesammelte Wissen der Menschheit gesichert haben.

Moment mal, Auszeit! Mein erster Computer war der Commodore C-64! Mit meinem Brotkasten und seinen 64KB RAM habe ich meinen ersten Taschenrechner in BASIC programmiert und ansonsten den ganzen Tag Giana Sisters gespielt.
Wie die BBC aber treffend berichtet, kommt die Ära des PC nun zu einem Ende. Das klassische Konzept mit Extra-Tastatur, Maus, Bildschirm und Rechner ist nur noch ein Kapitel im Buch der Geschichte. Wer heute etwas auf sich hält, hat sowieso mehrere Personal Computer. Da ist ein Tablet PC genauso ein PC wie das neuste Smartphone oder ein modernes Netbook.
Ach was soll all der Terz. Es ist vorbei. Dreißig Jahre sind ja auch mehr als genug. Wollen wir ewig in der Vergangenheit leben? Wir brauchen mehr Tablet PCs, mehr Smartphones, mehr Bandbreite, mehr Technologie, mehr Strom, mehr Macht, mehr seltene Erden!
Also ihr da draußen, kauft mehr, senkt eure Sparquote, konsumiert endlich! Der Trend geht zum Dritt-Smartphone. Sorry IBM 5150, du dachtest das wäre ein Post über deine vormalige Glorie? Ja, damals warst du toll. Aber heute strebt die Menschheit nach technischer Ubiquity und da passt so ein grauer schwerer Kasten wie du einfach nicht mehr ins Bild. Leb wohl PC. Nichts ist langweiliger als über Uralt-Hardware zu schreiben!
....
Schweißgebadet wachte ich aus einem Alptraum auf. Mein altes Laptop- und PC-Arsenal stand weiterhin einträchtig im Wohnzimmer. Das Ende einer Ära? Das ich nicht lache. Erst einmal E-Mails mit dem ollen Inspiron 4000 checken, bevor ich eine Runde VVVVVV zocke. Außerdem, ich bin ein Homo Oeconomicus. Keine Schulden, weniger Konsumieren und das angesparte Geld in griechische Staatsanleihen investieren ist genau der richtige Weg...ok, na gut, vielleicht ist Ökonomie doch etwas differenzierter. 😉

Solarized: dircolors mit 256 Farben für rxvt-unicode

Seit zwei Monaten nutze ich Ethan Schoonovers Farbschema "Solarized" für meinen Terminalemulator rxvt-unicode und meinen bevorzugten Editor Vim. Ich bin seither sehr zufrieden mit dem neuen Aussehen des Terminals. Verzeichnisse und verschiedene Arten von Dateien werden dadurch einfach besser hervorgehoben. Am liebsten wäre mir aber anstatt der 16 ANSI Farben das komplette 256-Farben-Thema gewesen. Obwohl ich damals die richtige TERM-Variable in .Xdefaults gesetzt hatte, passierte leider rein gar nichts.
Doch dann geschah es.
Als ich vor ein paar Tagen aptitude search rxvt ausführte, entdeckte ich plötzlich das Paket rxvt-unicode-256color. Autsch und Sorry. 😳 Irgendwie muss mir entgangen sein, dass es mehrere Rxvt-Unicode-Pakete bei Debian gibt und stillschweigend hatte ich angenommen, dass man den 256-Farben-Modus in der .Xdefaults an- und ausschalten kann.
Hat man rxvt-unicode-256color erst einmal installiert und die Variable

urxvt*termName:        rxvt-unicode-256color

in der .Xdefaults gesetzt, muss man nichts weiter tun als die Datei dircolors.256dark von seebis git Repositorium herunterzuladen und wie im alten Beitrag beschrieben nach ~/.dir_colors kopieren und dann von ~/.profile mit dem eval Befehl aufzurufen. Danach sind dann die Farben der Dateien und Verzeichnisse mit 256 Farben solarisiert.

Auch die Farben in Vim sehen dann gegenüber der alten 16 Farben ANSI Version natürlich verändert aus.

Mir gefällt Solarized als Farbthema weiterhin ausgezeichnet gut und wer nicht so auf dunkle Themen steht, sollte sich auch einmal die helle Version von Solarized anschauen, auf die sich spielend leicht in jedem Editor umstellen lässt.

Sicherer Datentausch: Ein sftp-Server mit chroot

Vor zwei Jahren wollte ich mehrere 100 MB an Fotos mit ein paar Freunden teilen, die sich nach einem gemeinsamen Urlaub angesammelt hatten. Damals waren Dropbox und ähnliche Dienste noch nicht ganz so präsent wie heute. Außerdem war es eine gute Gelegenheit mehr über FTP- und SSH-Server zu lernen und manch bekennenden Windowsnutzer ordentlich zu verwirren: "Ja, du musst ssh benutzen. Es gibt keine andere Möglichkeit um an die Fotos zu gelangen." haha 😈
Zu dieser Zeit sollte es unbedingt ein sftp-Server sein, da ich für viele andere Aufgaben sowieso schon ssh einsetzte. Damit spart man sich das Einrichten eines zusätzlichen ftp-Servers und erhält gleichzeitig noch eine sichere Methode zum Datenaustausch dazu.
Die folgende Anleitung beschreibt die Einrichtung eines ssh-Servers, der für eine Gruppe von Benutzern nur als sftp-Server zugänglich sein soll. Alle User werden dabei in einer chroot-Umgebung eingesperrt und Shell-Zugriff verwehrt um die Sicherheit auf dem Server zu erhöhen. Als Beispiel dient mir der Benutzer mika und die Gruppe freunde. Das HowTo sollte mit jeder auf Debian basierenden Distribution funktionieren und sich mit jeder anderen nachvollziehen lassen.

Installation

aptitude install ssh

Anlegen der für sftp berechtigten Nutzer und der Gruppe freunde

adduser mika
addgroup freunde
adduser mika freunde

Absichern des Chroot Verzeichnisses

chown root.root /home/mika

Mikas Heimverzeichnis sollte im Besitz von root sein, damit er effektiv darin eingesperrt ist und er standardmäßig keine Dateien auf dem Server hochladen kann. Da aber ein Datenaustausch auch manchmal in umgekehrter Richtung sinnvoll sein kann, genügt es, einen Ordner wie upload in diesem Verzeichnis zu erstellen und ihn Mika mit

chown mika.mika /home/mika/upload

zu überantworten.

Konfiguration von /etc/ssh/sshd_config

Notwendige Sicherheitsvorkehrungen

    • Port 42123

Der Standardport für SSH ist 22. Mit dieser Variablen lässt sich der Listen Port z.B. auf 42123 für den Server ändern. Das macht den Server zwar kein bisschen sicherer (security through obscurity), hilft aber unter Umständen die Existenz des ssh-Servers zu verschleiern.

    • PermitRootLogin no

Wenn ein Angreifer root werden möchte, muss er mit dieser Einstellung mindestens noch das Passwort eines weiteren Users auf dem Server kennen.

    • PermitEmptyPasswords no

SSH-Nutzer ohne Passwort sind natürlich ein Unding. Obwohl ich mir gut vorstellen kann, dass man das als eine weitere Möglichkeit zu "Was man mit alten Computern machen kann" hinzufügen könnte. Anstatt selbst zu lernen wie man in den eigenen alten Rechner einbricht, könnte man das doch auch andere tun lassen... 😉

    • Subsystem sftp internal-sftp

Das aktiviert sshds internen sftp-Service. Normalerweise verweist Subsystem sftp auf eine ausführbare Binärdatei wie z.B. /usr/lib/openssh/sftp-server. Diese muss durch den internen Dienst ersetzt werden.
Am Ende der /etc/ssh/sshd_config sollte dann folgender Match-Eintrag hinzugefügt werden.

Match group freunde
      ChrootDirectory /home/%u
      X11Forwarding no
      AllowTcpForwarding no
      ForceCommand internal-sftp

Der Match-Block gilt nur für die Gruppe freunde und jeden Nutzer, der sich darin befindet. Mika kann sich deswegen nur per sftp mit dem Server verbinden und landet danach im festgelegten Chroot-Verzeichnis. Der Shell Zugriff mit ssh wird effektiv unterbunden. Das Chroot muss nicht zwangsläufig mit Mikas Homeverzeichnis übereinstimmen und kann beliebig gewählt werden. Der Parameter %u wird durch den eingeloggten Nutzer ersetzt.

Der erste Test

Jetzt ist es an der Zeit den OpenSSH-Server neuzustarten. Als SFTP-Klienten eignen sich später z.B. das Firefox Addon Fireftp, Filezilla, WinSCP für Windows oder ganz einfach das Kommandozeilenprogramm sftp.

/etc/init.d/ssh restart

Danach sollte der sftp-Zugriff für Mika am Beispielrechner 192.168.0.200 funktionieren.

sftp -P 42123 mika@192.168.0.200

und der ssh-Zugriff verwehrt werden

ssh -p 42123 mika@192.168.0.200

DynDNS.org

Es ist zwar schön, dass der Server nun in unserem internen Netzwerk funktioniert, aber irgendwie müssen die Freunde von außerhalb darauf zugreifen können. Die meisten werden sicherlich eine dynamische IP vom Provider zugewiesen bekommen, weshalb es Sinn macht einen kostenlosen DNS-Dienst wie z.B. dyndns.org zu benutzen, um eine leicht zu merkende URL wie z.B. 4freunde.dyndns.org zu erhalten.
Nachdem man sich bei dyndns.org angemeldet hat, muss man dem Dienst auf irgendeine Art noch mitteilen wie die aktuelle IP-Adresse des Heimservers lautet. Dazu bietet sich z.B. ddclient an. Bei der Installation wird man nach Login und Passwort bei dyndns.org gefragt und kann ansonsten die Standardeinstellungen verwenden.
Sollte man eine Firewall einsetzen oder wie ich einen Router mit eingebauter Firewall haben, dann muss nur noch der SSH-Dienst mit Hilfe von PortForwarding an den Zielserver und Port 42123 weitergeleitet werden. Danach kann sich dann Mika von überall auf der Welt mit

sftp -P 42123 mika@4freunde.dyndns.org

auf dem Heimserver einloggen.

Last but not least - Denyhosts

Wenn man seinen Server eine Weile laufen lässt und spaßeshalber mal die Datei /var/log/auth.log öffnet, fallen einem die regen Zugriffsversuche auf...die allesamt nicht von den Freunden stammen. Willkommen im Internet! John Doh und Nihao versuchen mit Brute-Force-Attacken in den ssh-Server einzubrechen. Eine wirksame Methode das zu unterbinden ist z.B. denyhosts oder noch besser gleich den SSH-Port ändern und auf SSH-Schlüssel umstellen.
Bei Debian konnte ich nach der Installation mit den Voreinstellungen sehr gut leben. Die Datei /etc/denyhosts.conf ist aber hervorragend kommentiert und lässt sich leicht an die eigenen Wünsche anpassen. Das Programm registriert fehlgeschlagene Logins und setzt die IP Adresse des Angreifers nach einer festgelegten Anzahl von Versuchen in die Datei /etc/hosts.deny, womit jeder weitere Loginversuch verwehrt wird. Es gibt noch viele weitere Möglichkeiten einen Mißbrauch zu verhindern. Ich fand damals diesen Heise-Artikel zum Thema sehr lesenswert. Wenn man sehr restriktiv ist und vielleicht sogar die IP-Adresse der Freunde kennt, kann man auch alle Zugriffe mit Hilfe von /etc/hosts.allow und /etc/hosts.deny verbieten und nur ausgewählte IPs erlauben.
SSH ist ein ausgesprochen vielseitiges und nützliches Werkzeug. Als Beweis, dass ich nicht der Einzige bin, der positive Erfahrungen mit ssh gemacht hat, hier mal ein Link zu keros Artikel "sperr mich ein baby".

Meine Quellen