WordPress-Tipps: Verwenden Sie das sichere SSH anstelle von FTP
Mich hat es eine ganz schöne Weile gefuchst: WordPress unterstützt scheinbar nur FTP um die Auto-Update-Funktion nutzen zu können. Aber FTP gibt es auf unserem Webserver nicht, denn „FTP ist böse“. FTP unterstützt keine Verschlüsselung und somit rutschen die Passwörter im Klartext über das Netz.
Gut, jetzt könnte man sagen: „Ist ja kein Problem, WordPress nutzt das ja sowieso nur vom Server auf den Server, das geht also nicht über das Netzt, sondern bleibt intern.“ – Stimmt soweit, aber: Wenn ich einmal einen FTP-Server offen habe, findet sich auch ein Script-Kiddie, das mit Passwort-Listen, Brute-Force usw. sein Glück versucht. Ich verwende sichere Passwörter, aber stimmt das wirklich? Was ist mit den anderen User-Accounts? Außerdem ist ein FTP-Server auch wieder ein Stück Software mehr, das verwaltet werden will und das Fehlerpotenzial bietet. aus den gleichen Erwägungen kommt FTP/S auch nicht in Frage.
Sicherer mit SSH
Schöner wäre es doch, würde WordPress direkt mit dem sicheren System auf Basis SSH arbeiten. SSH läuft sowieso und ist für alle User konfiguriert. Das Intrusion Detection System schickt Script-Kiddies nach drei Versuchen in die Wüste und alles wird gut 😉
Leider fehlt mir der Auswahlknopf für SSH…
Meistens ist PHP „schuld“
Dies ist jedoch schon seit einiger Zeit kein Problem von WordPress sondern eines der zugrunde liegenden PHP-Installation. Der PHP-Interpreter braucht eine von WordPress unterstützte SSH-Bibliothek. Um dies zu ändern, kann man den Webhoster seines Vertrauens bitten, die PHP-Installation zu ändern. Hat man einen Root-Server oder VServer, muss man selbst Hand anlegen.
Zunächst muss auf dem Server die „libssh2“ installiert sein. bei SuSE-Linux kann man dies leicht mit dem Yast überprüfen. Es empfiehlt sich, gleich die „libssh2-devel“ mit zu installieren, da SuSE keine „libssh2-php“ zur Verfügung stellt. Diese muss selbst gebaut werden. Daher benötigt man auf SuSE-Linux auch gleich die Devel-Package zu PHP.
Bei Ubuntu und Derivaten gibt es bereits die „libssh2-php“ fix und fertig. Unter Ubuntu muss man nur
aptitude install libssh2-1-dev libssh2-php
als root eingeben und die Sache ist fast erledigt. Testen, ob PHP denn nun bereits mit der SSH2-Bibliothek zusammenspielt, kann man mit
php -m |grep ssh2
Den Erfolg prüfen. Hier sollte „ssh2“ erscheinen. Unterbleibt die Ausgabe, geht es noch nicht. Aber das wird.
Um aus dem PHP-Source und dem libssh2-devel-Package recht automatisch das benötigte Modul für PHP zu generieren, benötigen wir meist nur den Befehl
pecl install ssh2
Dieser Schritt sollte das benötigte PHP-Modul herunterladen, mit den entsprechenden Sources kompilieren und entsprechend installieren. Das bedingt, dass auf dem Server auch ein C-Compiler, typischerweise der gcc, installiert ist. Ebenso werden die Tools dazu wie make etc. benötigt.
Ist dieser Schritt abgeschlossen, muss man noch im Modul-Verzeichnis der PHP-Konfiguration, meistens /etc/php5/conf.d/ eine Datei ssh2.ini mit folgendem Inhalt anlegen:
extension=ssh2.so
In aller Regel wird man den Webserver-Daemon neu starten müssen. Meist geschieht dies durch den Befehl
rcapache restart
Nun nochmal den Test von oben anwerfen und auf die Ausgabe „ssh2“ hoffen. Wenn das geklappt hat, kann man ab sofort mit WordPress auch SSH nutzen.
Dieser Artikel wurde durch diese drei Artikel inspiriert:
- WordPress Tutorial: Using SSH to Install/Upgrade
- Make SSH connections with PHP
- Add WordPress Plugins with ssh
Weitere Information über FTP vs. SSH / SCP / SFTP gibt es hier: