Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Tools & Tips

SSH: Was und Wie

by
Read Time:11 minsLanguages:

German (Deutsch) translation by Alex Grigorovich (you can also view the original English article)

Viele Webentwickler verwenden täglich SSH ("Secure Shell"), um ihre Server zu verwalten, Dateien zu sichern, remote zu arbeiten und eine Vielzahl anderer Aufgaben zu erledigen. Heute werde ich erklären, was SSH ist, eine kurze Überprüfung des Verlaufs durchführen und Ihnen schließlich zeigen, wie Sie es auf Ihrem Remote-Server oder sogar in Ihrem lokalen Netzwerk einrichten. Lass uns anfangen!


Eine Starterklärung

Wenn Sie das lesen, ist es wahrscheinlich, dass Sie Terminal zumindest ein wenig kennen (oder unter Windows so etwas wie Cygwin). Wenn ja, dann werden Sie diese schnelle funktionale Erklärung von SSH verstehen.

SSH verwendet im Wesentlichen eine Netzwerkverbindung, um auf einem anderen Computer in das Terminal zu gelangen.

Wenn Sie mit Terminal nicht vertraut sind, gibt es viele Erklärungen und Anfängerhandbücher zu Terminal, sowohl hier auf Nettuts+ als auch anderswo. Die Leistungsfähigkeit von SSH hängt von seiner Einfachheit ab. Durch den Zugriff auf das Terminal eines anderen Computers kommt SSH auf den Punkt und gibt Ihnen die volle Kontrolle über einen Remote-Computer. Wenn Sie die Leistung des Terminals und seine direkte Verbindung zum Innenleben Ihres lokalen Computers verstehen, dann verstehen Sie die Leistung von SSH!


Eine kurze Geschichte

SSH wurde 1995 in seinem Säuglingszustand entwickelt. Der Hauptentwickler Tatu Ylonen entwickelte es als erste sichere Methode zur Verwaltung eines Remote-UNIX-Systems. Vor SSH haben die einzigen vorhandenen Werkzeugs Informationen wie Kennwörter im Klartext gesendet.


Also, wie benutze ich es?

Es gibt eine Million Anleitungen, wie man sich mit SSH einrichtet. Wir werden heute speziell eine Methode behandeln. Zuerst sollten Sie sicherstellen, dass Sie SSH auf Ihrem System haben.

  • Mac - Eine Version von OpenSSH ist vorinstalliert.
  • Windows - Befolgen Sie eine Anleitung wie diese oder diese, um Cygwin und das Paket "openssh" zu installieren.
  • Linux - OpenSSH wird höchstwahrscheinlich bereits installiert. Wenn dies nicht der Fall ist, können Sie die gleiche Anleitung befolgen, um es zu installieren.

Um festzustellen, ob SSH installiert ist, führen Sie `which ssh` aus. Wenn Terminal etwas in der Art von /usr/bin/ssh zurückgibt, können Sie loslegen! Befolgen Sie andernfalls eine dieser Anleitungen, um sie zu installieren.

In diesem Artikel gehe ich davon aus, dass die von Ihnen verwendete Version OpenSSH ist. Es gibt einige Konfigurationsunterschiede, die von Ihrer SSH-Version abhängen. Wir werden erklären, wie Sie einen Mac einrichten, um über einen einzigen SSH-Befehl eine Verbindung zu einem MediaTemple-Server herzustellen. Sobald Sie SSH auf Ihrem Computer installiert haben, müssen Sie sicherstellen, dass auf Ihrem Zielhost SSH aktiviert ist. SSH läuft standardmäßig über Port 22; Sie können ein BefehlszeilenWerkzeug wie nmap verwenden, um Ihren Server zu pingen, um festzustellen, ob Port 22 eingehende Verbindungen akzeptiert, wie folgt:

Natürlich haben Sie wahrscheinlich Zugriff auf die Verwaltungsschnittstelle für den Server. Stellen Sie sicher, dass Sie die Optionen durchsehen und SSH aktivieren. Auf einem Mediatemple-Server befindet sich diese Konfiguration unter der Serversteuerung. Auf Mediatemple SSH kann über root@primarydomain.com zugegriffen werden. Sie können dem Konto Benutzer hinzufügen, aber um die Dinge einfach zu halten, verwenden wir root@primarydomain.com.

Sobald SSH aktiviert ist (und Sie in Ihrem Serveradministrator ein Root-Passwort festgelegt haben), können Sie die folgende Zeile zu SSH auf Ihrem Server ausführen.

...wobei primarydomain.com Ihre MediaTemple-Primärdomäne ist. Sie werden dann zur Eingabe Ihres Kennworts aufgefordert (dies ist das Root-Kennwort, das Sie in der Systemsteuerung festgelegt haben). Wenn Sie MediaTemple nicht verwenden, können Sie SSH auch direkt an die IP-Adresse Ihres Servers senden.

Wenn Sie Shared Hosting verwenden, werden Sie sich wahrscheinlich nicht als Root anmelden. Stattdessen melden Sie sich mit einem Benutzerkontonamen an. Wenn Sie beispielsweise einen Dienst wie Site5 verwenden, können Sie sich mit einem Benutzernamen in einer Subdomain wie folgt anmelden:

Letztendlich hängen diese Konfigurationen von Ihrem spezifischen Webserverunternehmen ab. Weitere Informationen finden Sie in der Dokumentation Ihres Hosts.

Sobald Sie "eingeschält" sind, können Sie Befehle ausführen und das Dateisystem in Terminal durchlaufen. Abhängig von Ihrer Zugriffsebene können Sie möglicherweise Dinge mit den Befehlen apt-get oder wget auf Ihrem Server installieren. Sie können Ihren Apache-Server verwalten, Konfigurationsdateien mit einem Terminal-basierten Texteditor bearbeiten, Fehlerprotokolle anzeigen, Caches löschen, Dateien direkt auf einem Server anzeigen, um sicherzustellen, dass sie die richtige Version haben, und viele andere untergeordnete Systemverwaltungsaufgaben. Was wäre, wenn Sie mit SSH mehr und schneller machen möchten?


Wie benutze ich es... besser?

Es gibt eine Menge mächtiger Dinge, für die SSH Sie öffnet. Wir werden einige davon überspringen (da einige eher mit Sysadmin zu tun haben, wie das Tunneln). Aber wir werden ein paar nützliche Tricks durchgehen.

Superschnelle Anmeldung

Sie denken sich: "Es scheint, als sollte es einen schnelleren Weg geben, dies zu tun." Du hast recht. Und da ist. Anstatt sich für jeden Server Ihre Domain, Ihr Kennwort und Ihren Benutzernamen merken zu müssen, können Sie einige Konfigurationen einrichten, mit denen Sie den Vorgang beschleunigen können.

Mit der richtigen Konfiguration können Sie dies ausführen, und ohne Kennwörter, IP-Adressen oder lange Domain-Namen eingeben zu müssen, sind Sie dabei! Wir gehen erneut davon aus, dass Sie sich bei einem MediaTemple-Server anmelden. Zuerst werden wir SSH-Schlüssel generieren. Dies ist im Grunde ein Satz verschlüsselter Schlüssel, die in ~/.ssh auf Ihrem lokalen Computer gespeichert sind. Sie haben einen "öffentlichen" Schlüssel und einen "privaten" Schlüssel. Öffnen Sie also zuerst ein neues Terminalfenster und erstellen Sie den Ordner .ssh in Ihrem Home-Verzeichnis.

Danach generieren Sie Ihre Schlüssel mit der folgenden Zeile. (Dies stammt direkt aus der Dokumentation von MediaTemple.)

Diese Zeile generiert einen SSH-Schlüssel vom Typ rsa mit 2048 Bit (aus Sicherheitsgründen) am angegebenen Dateispeicherort mit dem angegebenen Kommentar. Sie werden aufgefordert, ein Passwort einzugeben, das jedoch nicht obligatorisch oder erforderlich ist. Wenn Sie kein Passwort angeben, können Sie sich automatisch anmelden. Der RSA-Typ ist für die SSH-Protokollversion 1. Typ DSA ist für die Protokollversion 2. Wenden Sie sich an Ihren Webserver, um herauszufinden, welche Version verwendet wird. Sobald Ihre Schlüssel generiert wurden, führen Sie diese aus, um sicherzustellen, dass Ihre SSH-Konfigurationen auf die richtigen Berechtigungen eingestellt sind.

Dann laden Sie Ihren öffentlichen Schlüssel auf Ihren Server hoch. Es gibt einige Möglichkeiten, dies zu tun. Dieser Weg kommt auch aus den Dokumenten von MediaTemple.

Dieser Code gibt Ihre id_rsa.pub über ein `|` (Pipe) in den nächsten Befehl zurück, bei dem es sich um eine SSH in root@example.com handelt, wo Sie ein Echo und eine Verkettung dessen ausführen, was Sie im ersten Befehl weitergeleitet haben. Es klingt etwas kompliziert, daher gibt es einige alternative Möglichkeiten, um damit umzugehen. Im Wesentlichen möchten Sie keine Zeilenumbrüche und Ihren öffentlichen Schlüssel in einer eigenen Zeile in einer Datei mit dem Namen authorized_keys auf Ihrem Server im Verzeichnis ~/.ssh/. Wenn dies also der erste oder einzige Schlüssel ist, den Sie auf Ihrem Server haben möchten, können Sie diesen Befehl ausführen, um ihn direkt an diesen Speicherort zu kopieren.

In dieser Zeile heißt es im Wesentlichen: "Kopieren Sie diese erste Datei über SSH auf den Server an dieser Stelle relativ zu meinem aktuellen Ausgangsverzeichnis."

Sobald Ihre autorisierten Schlüssel Ihren öffentlichen Schlüssel enthalten, können Sie versuchen, sich mit ssh username@example.com beim Server anzumelden. Wenn Sie Ihren öffentlichen Schlüssel in die SSH-Konfigurationsdateien des Stammbenutzerverzeichnisses einfügen, können Sie sich direkt bei root anmelden. Sie werden nach einem RSA-Fingerabdruck gefragt. Fahren Sie fort und lassen Sie diese Aktion zu. Der Server, mit dem Sie eine Verbindung herstellen, wird zu einer Datei "unknown_hosts" hinzugefügt. Diese Datei kann für viele verschiedene Zwecke verwendet werden, insbesondere aber, um sich vor einem sogenannten "Man-in-the-Middle" -Angriff zu schützen. Wenn Sie mehr darüber lesen möchten, lesen Sie diese Erklärung.

Wenn Sie sich erfolgreich bei Ihrem Server anmelden können, als hätten Sie ein Kennwort eingegeben, funktionieren Ihre Schlüssel ordnungsgemäß. Der nächste Schritt besteht darin, ein paar Zeilen für eine Verknüpfung zu einer Konfigurationsdatei auf Ihrem Computer hinzuzufügen. Öffnen Sie ~/.ssh/config in Ihrem bevorzugten Texteditor (erstellen Sie ihn, falls er nicht vorhanden ist) und fügen Sie Folgendes hinzu:

Wobei "Kurzname" ein Spitzname für den Server ist, bei dem Sie sich anmelden möchten. Zum Beispiel würde "Host myserver" mir erlauben, ssh myserver zu machen. Der Hostname ist Ihr Serverstandort, und natürlich ist der Benutzer Ihr Benutzername. Möglicherweise haben Sie an dieser Stelle User root. Sobald diese Datei gespeichert ist, sollten Sie in der Lage sein, einen einfachen Befehl zum Anmelden bei Ihrem Server auszuführen, wie folgt:

Git ohne Hub

Bitte beachten Sie: Dieser Abschnitt erfordert ein wenig Vertrautheit mit Git.

Sie können SSH verwenden, um Ihre eigenen Git-Repos auf Ihrem Server einzurichten! Dies ist nützlich für Unternehmen, die ihren Code aus irgendeinem Grund nicht auf GitHub verfügbar machen möchten, und es ist großartig, direkt von einem lokalen Computer auf ein Git-Repo auf Ihrem eigenen Server übertragen zu können.

Stellen Sie zum Einrichten sicher, dass Git sowohl auf dem Host als auch auf Ihrem lokalen Computer installiert ist. Möglicherweise müssen Sie Ihre Webserver-Firma durchgehen, um Git zu installieren. Führen Sie als Nächstes git init auf Ihrem Server an dem Speicherort aus, an dem sich Ihr Git-Repo befinden soll. Natürlich können Sie dies auf hundert verschiedene Arten tun, aber wenn Sie kein nacktes Repository haben möchten, können Sie Zweige verwenden, um von Ihrem lokalen Computer aus darauf zuzugreifen. Hier ist ein allgemeiner Workflow.

Im Wesentlichen melden Sie sich hier beim Server an, wechseln zum gewünschten Repo-Pfad, erstellen ein Repository und fügen einen "Staging" -Zweig hinzu, auf den Sie von Ihrem lokalen Computer aus zugreifen können. Anschließend erstellen Sie Ihr lokales Repo und einen entsprechenden "Staging" -Zweig auf Ihrem lokalen Computer und fügen Dateien hinzu, die dem Repo nachverfolgt werden sollen. Als nächstes folgt ein erstes Commit. Anschließend fügen Sie das Remote-Repository als Alias "Ursprung" hinzu. Als Nächstes verschieben Sie den lokalen Staging-Zweig in den Staging-Zweig des Alias "origin". Schließlich kehren Sie zum Server zurück und führen den Zweig "Staging" mit dem Standardzweig "Master" zusammen.

SFTP > FTP

Sie können auch SSH-basiertes FTP (File Transfer Protocol) verwenden, eine im Wesentlichen sicherere (verschlüsselte) Version von FTP, die über Port 22 ausgeführt wird (anstelle des Standard-FTP-Ports 21). Die meisten FTP-Clients unterstützen auch SFTP. FileZilla (für Windows) und Fetch (für Mac) sind zwei beliebte (und kostenlose) SFTP/FTP-Clients.

Einfacher Zugriff auf Ihren Server fast überall

Solange Sie sich in der Nähe eines Computers befinden, der mit dem Internet verbunden ist, über ein Terminal verfügt und SSH installiert ist (z. B. jeder mit WLAN verbundene Mac), können Sie über SSH auf Ihren Server zugreifen. Das ist der beste Teil. Sie benötigen keine Konfiguration (vorausgesetzt, Sie haben keine Einschränkungen festgelegt, die einen passenden Pubkey erfordern). Sie können sich praktisch überall mit Ihrem Benutzernamen und Passwort anmelden. Es gibt sogar SSH-Clients für iOS und andere mobile Geräte. Dies ist eine sehr leistungsstarke Funktion von SSH, deren Portabilität nur von browserbasierten Anwendungen erreicht wird.

Ein lokales Code-Repo

Hoffentlich können Sie die Leistungsfähigkeit von SSH in einem täglichen Entwicklungszyklus erkennen.

Stellen wir uns vor, Sie und einige Freunde arbeiten gemeinsam an einem Code. Angenommen, Sie haben einen lokalen Computer, über den Sie die volle Kontrolle haben und den Sie als Entwicklungs-LAMP-Server verwenden, auf dem einige VMs installiert sind. Sie können SSH lokal verwenden, um Dateien von und zu Ihrem Computer und dem Entwicklungscomputer zu verschieben. Sie können sogar ein lokales Git- (oder SVN- oder Mercurial-) Repo einrichten, das von SSH unterstützt wird, um alles in Schach zu halten. Vielleicht könnten Sie die Entwicklungsmaschine sogar zur einzigen Maschine machen, die über SSH mit dem Remote-Server verbunden ist, sodass der Code einen bestimmten Staging-Prozess durchlaufen muss, bevor er in Produktion gehen kann. Das Rückgrat all dieser Aktionen ist SSH!

Hoffentlich können Sie die Leistungsfähigkeit von SSH in einem täglichen Entwicklungszyklus erkennen, insbesondere für Teams, die die Versionskontrolle verwenden. Wie bereits erwähnt, gibt es zahlreiche Dokumentationen und eine Vielzahl anderer Werkzeugs auf Netzwerkebene, die auf SSH basieren oder auf SSH basieren und Ihnen mehr Kontrolle und Leistung über Ihren Entwicklungsprozess und Ihren Server geben. Wer weiß? Vielleicht könnten Sie eines Tages doch noch als Systemadministrator fungieren!


Einige andere hilfreiche Links

Hier sind einige andere hilfreiche Links, die Ihnen den Einstieg in SSH erleichtern. Es gibt es schon eine Weile, also gibt es eine Menge Dokumentation.

Danke fürs Lesen!

Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.