SSH: Ein mächtiges Werkzeug für Ihr Webhosting

← zurück zum Blog

Seit vergangener Woche steht allen unseren Kunden SSH zur Verfügung. Doch was ist dieses SSH genau und vor allem: Was kann man damit alles anstellen? Wir zeigen Ihnen heute die Basics von SSH und wie man damit WordPress komplett installieren kann.

Was ist SSH?

Doch zuerst eine kleine Einführung: SSH steht für Secure Shell und ist vereinfacht gesagt eine Möglichkeit, eine verschlüsselte Verbindung auf einen entfernen Computer herzustellen und dort alle möglichen Befehle auszuführen.

Linux und Mac bringen die entsprechenden Programme bereits mit (unter Mac mit dem Programm «Terminal»), mit Windows sind Programme wie PuTTY oder Cygwin rasch installiert.

Auf den Server verbinden

Die Zugangsdaten sind identisch mit denen für FTP und bestehen aus Ihrem Benutzernamen und Ihrem Passwort. Die Daten sind im Bedarfsfall auch in Ihrem my.cyon-Konto ersichtlich.

Unter Windows öffnet man z.B. PuTTY und gibt nach Programmstart unter «Host Name» den Servernamen ein, also z.B. oliverorange.com. Nach Klick auf Öffnen wird man zur Eingabe von Benutzername und Passwort aufgefordert.

Mit Mac («Terminal» starten) oder Linux (Konsole öffnen) kann eine Verbindung nach diesem Muster aufgebaut werden:

ssh <benutzername>@server [Enter]

Also zum Beispiel

ssh oliveror@oliverorange.com [Enter]

Klappt die Verbindung, wird man zur Eingabe des Passworts aufgefordert. Es ist übrigens völlig normal, dass das Passwort während der Eingabe nicht angezeigt wird. Eine Sicherheitsmassnahme gegen ungewollte Blicke auf den Bildschirm.

Nach einem weiteren Schlag auf Enter ist man, richtiges Passwort vorausgesetzt, mit dem Server verbunden und kann loslegen.

Ein [Enter] ist übrigens immer nötig, um einen Befehl loszuschicken. Der Lesbarkeit zuliebe verzichten wir im weiteren Verlauf auf diesen Hinweis.

Zwei nützliche Hinweise vor dem Start: Mit [Ctrl + C] können Sie eine Eingabe löschen oder einen laufenden Befehl unterbrechen. Mit den Pfeiltasten nach unten und oben können Sie im Verlauf der Befehle hin und her wandern. Das spart das erneute Eintippen identischer Befehle.

Kapitel 1: Auf dem Server navigieren

Mit den Befehlen ls und cd navigieren Sie auf Ihrem Server. ls (list) listet dabei alle Dateien und Ordner auf, cd (change directory) wechselt in einen gewünschten Ordner.

Probieren Sie den Befehl einfach mal aus:

ls

Sie sehen so alle Dateien und weiteren Ordner im aktuellen Verzeichnis. Wechseln Sie nun in Ihr public_html-Verzeichnis, das Ihre Website(s) beinhaltet:

cd public_html

Schauen Sie sich erneut um:

ls

Übrigens: Ordner werden unter Linux mit «/» (und nicht wie unter Windows üblich mit «\») getrennt. Man schreibt also cd ordner1/ordner2 um direkt in das Unterverzeichnis «ordner2» zu gelangen.

Tipp: Die meisten Befehle können um diverse Optionen erweitert werden. Ein ls -l zum Beispiel liefert eine ausführlichere Liste (l steht für long), in welcher noch Berechtigungen, Dateigrösse etc. angezeigt werden.

Eine Übersicht über alle verfügbaren Optionen liefert der Befehl man, also z.B. man ls. Mit q können Sie diese sogenannten Man-Pages wieder verlassen. An dieser Stelle empfehlen wir die Website explainshell.com, die Man-Pages übersichtlich aufbereitet.

Tippen Sie einfach mal ein ls -l ein, um den Unterschied zu einem normalen ls aufzuzeigen.

Kapitel 2: Mit curl ferne Dateien auf den Server holen

Mit curl kann man Daten von fremden Servern herunterladen.

Zuerst wechseln wir in den Ordner public_html:

cd ~/public_html

Das Tilde-Zeichen «~» steht für Ihr Heimverzeichnis. Ihr Heimverzeichnis lautet auf Linux in der Regel /home/benutzername und ~ ist eine abgekürzte Schreibweise davon. Egal wo im Dateisystem Sie sich befinden, ein cd ~/public_html bringt Sie immer in den Ordner /home/ihrbenutzername/public_html.

Nun laden wir also eine Datei von einem anderen Server herunter, in diesem Fall die aktuellste WordPress-Version:

curl -O https://wordpress.org/latest.tar.gz

Die Option -O sorgt dafür, dass curl die Anfrage in eine Datei schreibt. Während dem Download erhalten Sie eine Anzeige, welche den Fortschritt visualisiert.

Kapitel 3: Entpacken mit tar und gzip

Die heruntergeladene Datei ist komprimiert, was an ihrer Endung .tar.gz erkennbar ist (ähnlich wie z.B. .zip). Mit dem Programm tar können Sie die heruntergeladene Datei nun entpacken. Wir verwenden dafür folgende Optionen: -xzvf. x steht für Extrahieren, z für Entpacken mit gzip (erkennbar am .gz im Dateinamen), f gibt an, dass es sich um eine Datei handelt und v steht für verbose und versorgt uns mit einer Anzeige, wie das Entpacken vonstatten geht.

Probieren wir es also aus:

tar -xzvf latest.tar.gz

Tipp: Mit der Tabulator-Taste können Sie Datei- und Ordnernamen vervollständigen. Es reicht also, wenn Sie tar -xzvf l eingeben, und dann die Tabulator-Taste betätigen. Sollten noch andere Dateien oder Ordner mit dem Buchstaben «l» beginnen, können Sie 2x Tabulator drücken, um eine Liste aller mit «l» beginnenden Dateien und Ordner zu erhalten.

In der Datei latest.tar.gz befand sich ein Ordner wordpress, der alle Dateien für eine WordPress-Installation enthält. Wir möchten WordPress in diesem Beispiel direkt im Ordner public_html ablegen, müssen den Inhalt von wordpress also noch eine Ebene nach oben verschieben. Hier hilft uns der Befehl mv (move):

cd ~/public_html (Sie sollten schon in diesem Ordner sein, das ist nur zur Sicherheit, falls Sie etwas umhergewandert sein sollten)
mv -v wordpress/* .

Die Option -v steht für verbose und sorgt dafür, dass live angezeigt wird, was gerade passiert.

Ein Punkt (.) steht für den aktuellen Ordner, zwei Punkte (..) für eine Ordnerebene weiter oben. Mit cd .. kann man z.B. eine Ordnerebene nach oben wandern.

Ausgedeutscht bedeutet mv -v wordpress/* .: «Kopiere alle Dateien (*) im Ordner wordpress in den aktuellen Ordner, also public_html». Die Befehle mv -v wordpress/* ~/public_html oder mv -v wordpress/* /home/benutzername/public_html würden das Gleiche tun.

Auch hier wieder ein Hinweis: Linux kennt sogenannte versteckte Dateien. Diese starten mit einem Punkt im Dateiname, also z.B. .htaccess. Bei einem normalen ls werden diese nicht aufgeführt und auch vom Operator * (steht für „alle Dateien und Ordner) werden diese nicht erfasst. Würden im Ordner wordpress noch versteckte Dateien liegen, kann man diese mit mv -v wordpress/.* . verschieben. Generell ist also nach einem mv ratsam, sich mit einem ls -al (-a zeigt versteckte Dateien an) zu vergewissern, ob alles korrekt weggeschoben wurde.

Die Datei latest.tar.gz (die Datei wird beim Entpacken nicht gelöscht) sowie den nun leeren Ordner wordpress benötigen wir jetzt nicht mehr und wir können sie löschen. Dafür dient der Befehl rm (remove):

rm -vf latest.tar.gz löscht unsere Datei. Die Option -f unterdrückt eine Sicherheitsabfrage, -v zeigt wieder live an, was passiert.

Um Ordner (und deren Inhalt) zu löschen, ist noch die Option r (steht für rekusiv) erforderlich:

rm -rvf wordpress

rm unterstützt auch mehrere Argumente, rm -rvf latest.tar.gz wordpress würde die beiden Befehle vereinen.

Will man mehrere Befehle hintereinander ausführen, kann man diese mit && verketten. Das bisher gelernte lässt sich also auf eine einzelne Zeile packen:

cd ~/public_html && curl -O https://wordpress.org/latest.tar.gz && tar -xzvf latest.tar.gz && mv -v wordpress/* . && rm -rvf wordpress latest.tar.gz

Sieht das nicht fast schon filmreif aus, wie hier die Zeilen in einem atemberaubenden Tempo über Ihren Bildschirm huschen? Was hier in wenigen Sekunden erledigt wird, benötigt über den traditionellen Weg mit Down- und Upload über FTP ein Vielfaches der Zeit.

Ihre Kollegen werden Augen machen, wenn Sie plötzlich mit SSH unterwegs sind.

Ihre Kollegen werden Augen machen, wenn Sie plötzlich mit SSH unterwegs sind. Quelle

Kapitel 4: Berechtigungen mit chmod

Linux kennt ein umfangreiches Rechtesystem. Es gibt Benutzer, Gruppen und Rechte, wer eine Datei lesen, schreiben und ausführen darf. Eine detaillierte Einführung würde den Rahmen dieses Blogposts sprengen, hier hilft aber unser Supportcenter oder natürlich Wikipedia weiter.

Die Dateien auf Ihrem Server müssen die Rechte 644 für Dateien sowie 755 für Ordner tragen. Die Rechte sind im Archiv latest.tar.gz zwar bereits richtig konfiguriert, hier dennoch die Befehle, falls Sie einmal auf ein weniger vorbildlich gepacktes Archiv treffen.

An dieser Stelle wird es etwas komplexer und wir erhalten eine erste Vorahnung, was für umfangreiche Aufgaben sich mit SSH bewältigen lassen. Unsere gewünschten Befehle lauten

find . -type d -exec chmod 0755 {} \;

und

find . -type f -exec chmod 0644 {} \;

find ist ein Programm, um Dateien und Ordner nach einem definierten Muster zu finden. Unsere Befehle lauten ausgedeutscht also: «Finde im aktuellen Ordner (.) alle Dateien (-type f für File) bzw. alle Ordner (-type d für Directory) und wende den Befehl (exec) chmod auf die gefundene Liste ({}) an.» Die Zeichenfolge «\;» ist quasi das Stop-Zeichen für exec – was dahinter steht, wird von exec ignoriert.

Kapitel 5: Dateien auf dem Server editieren

Nun trennt uns nicht mehr viel, das heruntergeladene WordPress aktiv werden zu lassen. Was noch fehlt ist eine Datenbank, welche Sie in Ihrem my.cyon-Konto anlegen können. Sie benötigen den Namen der Datenbank, den Benutzer und das Passwort. Alle Angaben werden Ihnen beim Anlegen Ihrer Datenbank angezeigt.

Diese Angaben müssen in der Konfigurationsdatei von WordPress abgelegt werden. Eine Vorlage für diese Konfigurationsdatei wurde von WordPress bereits mitgeliefert und trägt den Namen wp-config-sample.php. Wir müssen diese nur noch mit cp (copy) kopieren:

cp wp-config-sample.php wp-config.php

Dieser Befehl kopiert die Datei wp-config-sample.php in eine neue Datei namens wp-config.php.

Nun muss diese Datei nur noch mit den richtigen Angaben zur Datenbank versehen werden. Dafür benötigen wir einen Editor. Zwei Beliebte sind nano oder vim. Ersterer ist leicht zu erlernen, Zweiterer benötigt etwas Einarbeitung, ist aber umso mächtiger. Wir beschränken uns hier auf nano:

nano wp-config.php

Mit den Pfeiltasten navigieren wir nun zu den richtigen Zeilen und hinterlegen die im my.cyon-Konto angezeigten Angaben an diesen drei Stellen:

define('DB_NAME', 'database_name_here');
define('DB_USER', 'username_here');
define('DB_PASSWORD', 'password_here');

Ein Bespiel wären die Werte

define('DB_NAME', 'oliveror_wordpress');
define('DB_USER', 'oliveror_wordpress')
define('DB_PASSWORD', 'vQGG(g2hA,i4ZD8M3kjp');

Mit [Ctrl + O] und [Enter] speichern wir die Änderung und mit [Ctrl + X] verlassen wir den Editor wieder.

Voilà, das war’s auch schon. Sie können jetzt Ihre Domain in einem Browser aufrufen (in unserem Beispiel oliverorange.com) und WordPress präsentiert Ihnen den Setup-Assistenten.

Zum Schluss können Sie die SSH-Verbindung wieder ordentlich beenden, indem Sie logout eingeben oder noch einfacher: [Ctrl + D] drücken. That’s it.

Google ist Ihr Freund

Natürlich konnten wir in diesem Blogpost nur die Oberfläche davon streifen, was mit SSH alles möglich ist. Es gibt dutzende weitere Befehle und Möglichkeiten und das Internet ist voll mit entsprechenden Anleitungen, Tutorials und wertvollen Tipps. Die Suchmaschine Ihrer Wahl ist also ein unverzichtbarer Begleiter, wenn Sie sich weiter mit den Möglichkeiten von SSH befassen möchten.

An dieser Stelle sei ebenfalls erwähnt, dass SSH ein sehr mächtiges Werkzeug ist und sich damit auch Unfug anstellen lässt. Achten Sie also darauf, ein sicheres Passwort zu setzen oder stellen sie gleich auf SSH-Keys um, dann müssen Sie keine Passwörter mehr eintippen.

Hat Ihnen unsere Einführung gefallen? Oder haben Sie noch einen guten Befehl auf Lager, den man unbedingt kennen muss? Wir freuen uns auf Ihren Kommentar.

15 Kommentare

  1. Ein nettes Einstiegstutorial! Man sollte evtl. noch erwähnen, dass es in der Shell kein „Undo“ und keinen „Papierkorb“ gibt. Gerade bei mv oder rm gilt also: think twice!

    Für die Rechtevergabe bevorzuge ich meistens diesen Befehl:
    chmod -R g+rX,o+rX myDirectory

  2. Kann man die Passwort-Authentifikation irgendwo abstellen? Ich benutze grundsätzlich nur noch Keys fürs Login.

    • Zurzeit ist das noch nicht möglich. Wir planen aber, die Passwort-Authentifikation für SSH generell abzuschalten. Infos dazu folgen.

      • Ich habe vor kurzem schockiert bemerkt dass mein SSH-Passwort noch ein altes kurzes war (Festgelegt beim Erstellen meines Cyon-Kontos vor 9 Jahren…). Ist jetzt geändert.

        Ich benutze seit Jahre nur noch SSH-Keys und wäre wirklich dankbar wenn man das SSH-Passwort endlich abschalten könnte. Und auch gleich FTP komplett deaktivieren kann.

        Gibt’s Neuigkeiten dazu?

        • Die Funktion hat es bislang noch nicht ins my.cyon geschafft, ist aber weiterhin auf unserer Feature-Request-Liste. Einen konkreten Termin kann ich Dir aktuell noch nicht nennen.

  3. Cool. Heisst das, dass im Single-Hosting nun auch Zugriffe via SFTP (Secure Shell FTP) via die (evtl. bereits erstellen) FTP-Accounts funktionieren?

    • Marcel, danke für Deinen Kommentar. Der Zugriff via SFTP (der übrigens bereits schon vor der Aktivierung von SSH auch auf dem Webhosting Single funktionierte) ist weiterhin nur für den Hauptbenutzer möglich. Wir arbeiten aktuell aber daran, FTP over TLS zu ermöglichen, damit auch zusätzliche FTP-Benutzer verschlüsselte Verbindungen aufbauen können. Dazu wird es schon bald Neuigkeiten geben, stay tuned.

  4. Gibt es eine Möglichkeit zusätzliche SSH Nutzer hinzuzufügen und diesen Lese-/Schreibrechte für bestimmte Ordnern zu geben? Oder kann man sich wirklich nur mit dem Hauptnutzer via SSH einloggen?

    • Der Login via SSH ist ausschliesslich für den Hauptbenutzer möglich.

      • … und in dem Fall kann der technische Kontakt nicht via SSH zugreifen?

        • Hallo Simon, danke für Deinen Kommentar. Du kannst selbstverständlich auch als technischer Kontakt per SSH auf das gewünschte Webhosting zugreifen. Wir empfehlen in diesem Fall die Verwendung von SSH-Keys, damit das Passwort nicht geteilt werden muss.

  5. Hallo David

    Du schreibst: „(-l zeigt versteckte Dateien an)“ – Meintest Du da nicht eher „-a“ oder „-al“?

  6. Gerade jetzt für mein Single-Hosting entdeckt, danke!

Kommentar hinzufügen

Ihre E-Mail-Adresse wird nicht veröffentlicht.
Auszufüllende Felder sind mit einem * gekennzeichnet.

*
*
*
Einfache HTML Anweisungen wie a, strong, blockquote etc. sind möglich.

Hinweis

Wir behalten uns vor, Spam-, beleidigende oder anderweitig unpassende Kommentare zu entfernen.

← zurück zum Blog