SSH Verbindung vereinfachen mit ~/.ssh/config

Wer etwas häufiger mit SSH (Secure Shell) auf unterschiedlichen Systemen arbeitet wird schnell feststellen, dass es nervig wird jedes mal die komplette Kommandozeile in die Shell einzugeben. Meist sehen einfache Kommandozeilen wie folgt aus:

ssh foo@bar.server.com

Nicht so schwierig, allerdings wird es nervig, wenn man den entsprechenden Server nur per IP Adresse ansprechen kann und viele weiter Optionen verwenden möchte um z.B. die Art der Anmeldung zu definieren oder etwas schwierigere Aufgaben wie SSH Tunneling zu verwenden.

SSH bietet hierfür jedoch eine sehr einfache Lösung um den Aufwand etwas zu verringern, nämlich die Dateien ~/.ssh/config sowie das globale Gegenstück, welches bei Ubuntu unter /etc/ssh/ssh_config liegt. In diesen können Verbindungskonfigurationen abgelegt werden. So können z.B. Synonyme für bestimme Konfigurationen festgelegt werden die dann anstelle der gesamten Parameterliste verwendet werden können. Eine mögliche Konfiguration könnte wie folgt aussehen:

Host Bar
    Hostname bar.server.com
    User foo
    RSAAuthentication yes
    PasswordAuthentication no

Dieser Konfigurationsblock erstellt das Synonym Bar. Die Optionen beschreiben den Verbindungsaufbau zum Server bar.server.com als Benutzer foo und es soll eine Public Key Authentisierung verwendet werden. Aufgerufen werden kann das ganze dann einfach mit:

ssh Bar

Das ganze funktioniert auch mit Autocompletion, was eine Vervollständigung mit der Tabulatortaste ermöglicht. Neben der einfachen Anmeldung verwende ich diese Methode um meinen Server als SOCKS-Proxy zu verwenden. Dazu kann man die folgende Konfiguration verwenden:

Host Bar-Proxy
    HostName bar.server.com
    User foo
    RSAAuthentication yes
    PasswordAuthentication no
    DynamicForward 4321

Wobei nun localhost:4321 von Anwendungen wie Browsern als Proxy verwendet werden kann, was den gesamten Traffic über den Server leitet. Weitere Optionen die verwendet werden können findet man in der Manpage ssh_config.

Neues Theme

Auch wenn ich das standard WordPress Theme nicht verkehrt fand, habe ich mich in der recht umfangreichen Auswahl umgesehen. Da ich eigentlich eher ein Minimalist bin fand ich recht viele der Themes ziemlich überladen. Allerdings gibt es auch andere Vertreter meiner Zunft und so habe ich doch ein paar recht minimalistische gefunden.

Ich habe mich letztendlich fuer das monochrome Theme entschieden. Wie ich finde ein recht gutes, nicht zu überladenes Theme.

Linux Logs überwachen mit phpLogCon

Wenn es zu Fehlern auf einem Server kommt ist die erste Anlaufstelle immer das Auswerten der Log Dateien die von dem Betriebssystem des Servers erstellt werden. Linux ist in dieser Hinsicht ein sehr geschwätziger Vertreter 😉

Während ich viele Serverstatistiken, die größtenteils auf Hardware ausgelegt sind, mit Munin überwachen kann, fehlte mir noch eine komfortable Art um die Serverlogs auszuwerten. Bisher beschränkte ich mich dabei auf eine Verbindung zum Server per SSH und das manuelle Auswerten der Logs. Allerdings ist nicht immer die Möglichkeit gegeben eine SSH Verbindung aufzubauen und deshalb habe ich mich nach einer einfacheren Variante umgesehen.

Was ich gefunden habe ist phpLogCon. Es ist ein in PHP geschriebenes System um die Systemlogs auszulesen und zu analysieren. Dabei kann es sowohl simple Dateien als auch Datenbanken als Quelle verwenden. Die Logs werden aufbereitet, Statistiken erstellt und man kann einfach in den Lognachrichten suchen.

Die Installation gestaltet sich recht einfach. In meiner Installation musste ich noch PHP5-cgi und PHP5-GD hinzufügen, wobei die GD Erweiterung für die Statistikfunktion benötigt wird. Danach einfach den beiliegenden Installationsanweisungen folgen. Kurz und knapp:

  1. src Verzeichnis auf den Webserver kopieren
  2. configure.sh und secure.sh in das Verzeichnis kopieren, Rechte zum ausführen setzen und ausführen
  3. phpLogCon aufrufen und Konfigurationsanweisungen folgen

Ich habe das Verzeichnis noch mit beschränkten Zugangsrechten belegt, damit nicht jeder meine Logs einsehen kann. Soweit sieht das ganze recht gut aus, mal sehen wie viel es bringt, wenn ich die Logs wirklich einmal benötige 😉

Kontaktformular und der visuelle Editor

In den letzten Tagen hatte ich ein paar Probleme mit dem Kontaktformular Plugin Contact Form 7 und dem visuellen Editor für Artikel unter WordPress 2.9.1. Jedes mal, wenn ich den visuellen Editor verwenden wollte startete er nicht korrekt und ich bekam eine ähnliche Ansicht wie beim HTML Editor. Nach ein paar frustrierenden Versuchen das ganze zu beheben probierte ich unterschiedliche andere Plugins aus. Nach mehreren Plugins die das selbe Problem verursachten, habe ich nun eines gefunden das funktioniert ohne den visuellen Editor in die Knie zu zwingen.

Die neue Formularseite verwendet jetzt das Fast and Secure Contact Form. Bisher habe ich damit keine Probleme.

wget Rekursion

Ich habe gestern einen ziemlich ärgerlichen Fehler in meinem Backupskript gefunden der natürlich erst auffiel als ich das Backup dann wirklich brauchte… Der Fehler hängt mit wget zusammen welches ich benutze um von einem anderen Server die Daten über FTP zu sichern.  Bisher verwendete ich die folgende wget Zeile:

wget -rq 'ftp://example.org'

Zu dieser kam ich durch das lesen der Manpage von wget:

-r
 --recursive
 Turn on recursive retrieving.

In Verbindung mit Maschinen und Macro Definitionen in der Datei .netrc wurde die Verbindung zum Server aufgebaut und der Verzeichnisbaum rekursiv durchlaufen… so der Plan 😉

Dummerweise hatte ich die nächste Option der Manpage überlesen:

-l depth
 --level=depth
 Specify recursion maximum depth level depth.  The default maximum
 depth is 5.

Zeigt mal wieder, dass man Manpages immer sehr gewissenhaft und gründlich lesen sollte, auch wenn ich mir einen Hinweis auf die Option -l gewünscht hätte. Um das ganze aber noch zu übertreffen fand ich natürlich noch die option -m die irgendwie genau das erreicht was ich wollte…

-m
 --mirror
 Turn on options suitable for mirroring.  This option turns on
 recursion and time-stamping, sets infinite recursion depth and
 keeps FTP directory listings.  It is currently equivalent to -r -N
 -l inf --no-remove-listing.

So entsteht eine neue wget Zeile:

wget -mq 'ftp://example.org'

Schon klappt auch das Update mit dem benachbarten Server 😉

Synchronisieung mit Git

Wenn man mehrere Systeme hat an denen man arbeitet kommt öfters mal die Frage auf wie man sie miteinander synchronisieren kann. Natürlich ist das Kopieren per Hand dabei nicht wirklich eine nutzbare Alternative, da dabei immer ein paar Änderungen und Dateien untergehen können. Allerdings gibt es einige Tools die das ganze erleichtern sollen. Dabei reicht die Palette von einfachen Skripten über Programme wie rsync und rsnapshot bis zu Versionsverwaltungssystemen wie Subversion, CVS oder Git.

Obwohl rsync oder rsnapshot durchaus zur Synchronisierung von Verzeichnissen und Erstellung von Backups gedacht sind, fand ich es etwas umständlich mit ihnen meine beiden Systeme auf dem selben Stand zu halten. Deshalb habe ich mich für die Synchronisationsstrategie mit Versionsverwaltungssystemen entschieden.

Ich hatte zwar bereits Erfahrungen mit CVS und Subversion gesammelt, allerdings auch viel über die Vorzüge von Git gehört. Aus diesem Grund wollte ich es einmal ausprobieren. Bisher bereue ich diese Entscheidung nicht. Die Synchronisation läuft sehr schnell, es ist einfach zu bedienen und die dezentrale Architektur ermöglicht es zu jeder Zeit ein Projekt auf dem lokalen Rechner zu starten.

In meinem Fall habe ich natürlich meinen Homeserver in die ganze Geschichte mit einbezogen, indem ich meine Repositories auf ihm ablege und meine beiden Rechner mit dem Tracking feature synchronisiere. Ein Vorteil von diesem Vorgehen ist natürlich, dass meine gesamten Daten in einer weiteren Kopie auf dem Server vorliegen. Außerdem erleichtert es das Erstellen von Backups an einem zentralen Punkt, wobei sich für diese Aufgabe natürlich rsync oder rsnapshot anbieten 😉

Neben diesen eher sicherheitsrelevanten Aspekten ermöglicht mir gitweb noch den einfachen Zugriff auf meine Daten von jedem PC mit Internet. Da es sich bei gitweb um ein CGI Skript handelt musste ich bei lighttpd das CGI Modul aktivieren. Das geht recht einfach mit:

sudo lighttpd-enable-mod cgi
sudo /etc/init.d/lighttpd force-reload

Damit ich meine Repositories vom Internet jedoch durchstöbern konnte musste ich dies zunächst noch erlauben. Dafür ist ein Eintrag in der Datei /etc/lighttpd/conf-enabled/10-cgi.conf nötig:

$HTTP["host"] =~ "virtual.host.example.org" {
 alias.url += ( "/cgi-bin/" => "/pfad/zum/cgi/verzeichnis" )
 $HTTP["url"] =~ "^/cgi-bin/" {
 cgi.assign = ( "" => "" )
 }
}

Das sollte den Zugriff von außen erlauben. Alles in allem kann ich dieses Vorgehen nur empfehlen. Es erleichtert mir das Synchronisieren ungemein und ich kann sogar zu älteren Versionen zurückkehren. Außerdem ist Git ein perfektes Tool für Programmierer um ihren Code zu sichern und alle Änderungen beizubehalten.

Munin – Resource Network Monitor

Nachdem mein Homeserver nun seinen Dienst verrichtet, habe ich mich nach einem Tool umgesehen welches es mir ermöglicht ihn einfach und effizient zu überwachen. Bei meinen Nachforschungen bin ich auf Munin gestoßen.

Munin besteht aus einem Server und einem oder mehreren Clients, den so genannten Munin-Nodes. Diese Client/Server Architektur ermöglicht es dem Administrator mehrere Munin-Nodes mit einem zentralen Server zu überwachen. Zu diesem Zweck trägt man jeden Client in die Serverkonfigurationsdatei ein, der daraufhin die Daten von den Clients abfragt und Statistiken daraus erstellt. Diese Statistiken können dann bequem über eine Webseite abgerufen werden, hierfür wird natürlich ein Webserver benötigt.

Mit Ubuntu Server Edition gestaltete sich die Installation recht simpel. Lediglich der Webserver und die beiden Pakete munin und munin-node müssen installiert werden. Da ich bisher nur meinen Homeserver überwachen lasse war keine weitere Konfiguration nötig.

Eine weiterer Punkt für Munin sind die Plug-Ins, durch die es sich erweitern lässt. Die Aktivierung eines Plug-Ins gestaltet sich recht einfach, da lediglich ein symbolischer Link der Plug-In Datei aus dem Verzeichnis /usr/share/munin/plugins in /etc/munin/plugins angelegt werden muss.

Weitere Informationen zu Munin und der Installation kann man auf folgenden Seiten finden:

ubuntuusers.de Wiki Artikel

Munin Projektseite

Munin Plug-In Datenbank

Homeserver auf Intel Atom 330 Basis und Ubuntu 9.10 Server Edition

Ich hatte schon seit längerem die Idee mir einen kleinen Homeserver aufzubauen, welcher Aufgaben wie Sicherungen, zentrale Ablage meiner Daten und andere Dinge erledigen könnte. Nun hatte ich mal etwas Geld auf der hohen Kante und wollte mir zu Weihnachten selbst eine kleine Freude machen 😉

In den letzten beiden Tagen habe ich mir dann eine kleine Kiste zusammen gebaut die nun ihre Dienste verrichtet. Das ganze System ist auf der Intel Atom Plattform aufgebaut und läuft mit Ubuntu 9.10 Server Edition (amd64). Hier eine Liste der Hardware für die ich mich entschieden habe:

  • Gehäuse: Compucase Compucase 8K01BS-SA12U
  • Board + CPU: Intel® D945GCLF2 inkl. Intel® Atom 330
  • Festplatte: Western Digital WD10EADS 1 TB
  • Arbeitsspeicher: Kingston ValueRAM DIMM 2 GB DDR2-667
  • Chipsatz Lüfter: Scythe Mini Kaze 4cm

In das Gehäuse passt ebenfalls ein Slim Line Laufwerk, da es jedoch unwahrscheinlich ist, dass in dem Server sehr oft optische Medien verwendet werden griff ich zu Installationszwecken auf einen alten USB Brenner zurück.

Die Montage des Systems ging recht einfach von statten. Zunächst einmal wurde der Lüfter durch die etwas leisere und effizientere Variante ersetzt. Nachdem dies passiert war wurde das Mainboard in das Gehäuse eingesetzt. Um das ganze zu vereinfachen kann man die Rahmenkonstruktion für Slim Line Laufwerk und Festplatte entfernen. In diesen Rahmen wurde dann als nächstes die Festplatte eingesetzt und das ganze wieder in das Gehäuse eingebaut. Noch kurz die Kabel anschließen und die Hardware steht.

Nach der Montage verlief alles wie geplant. Der kleine Server sprang an und erste Einstellungen im BIOS wurden vorgenommen. Zunächst konnten einige Dinge wie Soundkarte und Parallelport deaktiviert werden, da ich zur Zeit nicht wirklich Verwendung für diese Komponenten habe. Eine weitere Einstellung war die Aktivierung des Power Failure Modus welcher den Server nach einem Problem mit der Stromzufuhr automatisch wieder startet.

Nach diesen grundlegenden Dingen war es an der Zeit dem ganzen auch eine “Seele” einzuhauchen. Wie schon bereits gesagt sollte das System mit Ubuntu 9.10 Server Edition (amd64) installiert werden. Zu der Installation ist im Grunde nicht viel zu sagen. CD ins Laufwerk, die gewünschten Einstellungen im geführten Setup vornehmen und abwarten. Als zusätzlicher Dienst wurden in diesem Fall nur Samba gewählt, weil unter anderem eine Windowsfreigabe eingerichtet werden sollte und die weiteren Dienste noch nicht genau klar waren.

Nach der Installation konnte der Server problemlos gebootet werden und alle Dienste starteten wie erwartet. Auch die Power Failure Einstellung wurde getestet und funktioniert wie gewünscht, nach dem Verlust von Strom schaltet sich der Server selber wieder ein und bootet in einen betriebsfähigen Zustand.

Alles in allem kann ich das ganze bisher als gelungenes Projekt ansehen und bin von der Intel Atom Plattform begeistert. Nachdem das ganze System steht müssen nun nur noch ein paar interessante Aufgaben für die kleine schwarze Box gefunden werden 😉

WordPress Update 2.9

Der Blog wurde gestern auf die neue Version 2.9 aktualisiert. Soweit lief alles wunderbar bis auf die Tatsache, dass 1und1 wohl etwas sparsame PHP Speichereinstellungen verwendet. Als Resultat wollte das Skript welches für die Updates zuständig ist nicht so recht funktionieren. Nach etwas Grübeln und einem kleinen Hinweis von einem Freund, hier übrigens noch einmal ein großes Danke ;), konnten die Probleme überwunden werden.

Wenn jemand ähnliche Probleme hat die sich in einem Internal Server Error äußern, einfach mal das folgende in einer Datei mit dem Namen php.ini verewigen:

memory=20MB

Auf ein Neues…

Nachdem mir meine Homepage schon seit längerem ein Dorn im Auge war, habe ich nun Zeit gefunden sie zu überarbeiten. Mit dieser Überarbeitung habe ich mich nun von einer statischen Seite weg bewegt und möchte etwas mehr dynamischen Inhalt einbringen. Um dabei auf einem aktuellen Stand der Technik zu sein habe ich mich für einen WordPress Blog entschieden.

Neben statischen Inhalten wie einem aktualisierten Lebenslauf und allgemeinen Informationen über mich, werde ich versuch Informationen über einige kleine Projekte, Dinge die ich in der Freizeit unternehme und Tipps zu so manchem Thema einzubringen.

Das ganze sehe ich erstmal als kleines Experiment an und ich bin gespannt wie es laufen wird. Nun bleibt mir nichts anderes mehr zu sagen als viel Spaß auf meinem Blog und ich hoffe Ihr findet was Ihr sucht 😉