Viele Webentwickler verwenden SSH ("Secure Shell") täglich, um ihre Server zu verwalten, Dateien zu sichern, remote zu arbeiten und eine Vielzahl anderer Aufgaben auszuführen. Heute werde ich erklären, was SSH ist, eine kurze Verlaufsüberprüfung durchführen und schließlich lernen, wie Sie es auf Ihrem Remote-Server oder sogar in Ihrem lokalen Netzwerk einrichten. Lass uns anfangen!
Wenn Sie dies lesen, sind Sie wahrscheinlich mit Terminal (oder unter Windows, z. B. Cygwin) etwas vertraut. Wenn ja, dann werden Sie diese schnelle Funktionserklärung von SSH verstehen.
SSH verwendet im Wesentlichen eine Netzwerkverbindung, um in das Terminal eines anderen Computers zu gelangen.
Wenn Sie sich mit Terminal nicht auskennen, gibt es viele Erklärungen und Anleitungen für Anfänger, sowohl auf Nettuts als auch an anderer Stelle. Die Leistungsfähigkeit von SSH hängt von seiner Einfachheit ab. SSH bietet Ihnen Zugriff auf das Terminal eines anderen Rechners und ermöglicht Ihnen die vollständige Kontrolle über einen entfernten Rechner. Wenn Sie die Leistungsfähigkeit von Terminal und seine direkte Verbindung zum Innenleben Ihres lokalen Rechners kennen, verstehen Sie die Leistungsfähigkeit von SSH!
SSH wurde 1995 im Säuglingszustand entwickelt. Der Hauptentwickler Tatu Ylonen entwickelte es als ersten sicheren Weg zur Verwaltung eines Remote-UNIX-Systems. Vor SSH haben die einzigen vorhandenen Tools Informationen wie Passwörter im Klartext gesendet.
Es gibt eine Million Anleitungen, wie man sich mit SSH einrichten kann. Wir werden heute speziell auf eine Methode eingehen. Zuerst sollten Sie sicherstellen, dass Sie SSH auf Ihrem System haben.
Um festzustellen, ob SSH installiert ist, führen Sie es aus "welche ssh"
. Wenn Terminal etwas in der Richtung von zurückgibt / usr / bin / ssh
, dann bist du gut zu gehen! Ansonsten folgen Sie einer dieser Anleitungen, um es zu installieren.
In diesem Artikel gehe ich davon aus, dass die verwendete Version OpenSSH ist. Es gibt einige Konfigurationsunterschiede, die von Ihrer Version von SSH abhängen. Im Folgenden wird beschrieben, wie Sie einen Mac so einrichten, dass er über einen einzigen SSH-Befehl eine Verbindung zu einem MediaTemple-Server herstellt. Wenn Sie SSH auf Ihrem Computer installiert haben, müssen Sie sicherstellen, dass SSH auf Ihrem Zielhost aktiviert ist. SSH wird standardmäßig über Port 22 ausgeführt. Sie können ein Befehlszeilentool wie verwenden nmap
Sie können einen Ping-Befehl an Ihren Server senden, um festzustellen, ob der Port 22 eingehende Verbindungen akzeptiert:
sudo nmap -sS Hostname.com
Natürlich haben Sie wahrscheinlich Zugriff auf die Verwaltungsschnittstelle des Servers. Stellen Sie sicher, dass Sie die Optionen durchsehen und SSH aktivieren. Auf einem Mediatemple-Server befindet sich diese Konfiguration unter dem Bedienfeld „Server Control“. Der Mediatempel SSH ist über [email protected] erreichbar. Sie können dem Konto Benutzer hinzufügen, aber um die Dinge einfach zu halten, verwenden wir [email protected].
Sobald SSH aktiviert ist (und Sie ein Root-Kennwort in Ihrem Serveradministrator festgelegt haben), können Sie die folgende Zeile zu SSH auf Ihrem Server ausführen.
ssh [email protected]
… Wobei primarydomain.com Ihre primäre MediaTemple-Domäne ist. Sie werden dann aufgefordert, Ihr Passwort einzugeben (dies ist das Root-Passwort, 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, melden Sie sich wahrscheinlich nicht als root an. 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 Unterdomäne wie folgt anmelden:
ssh [email protected]
Letztendlich hängen diese Konfigurationen von Ihrem spezifischen Webserver-Unternehmen ab. Weitere Informationen finden Sie in der Dokumentation Ihres Hosts.
Sobald Sie "geschält" sind, können Sie Befehle ausführen und das Dateisystem in Terminal durchlaufen. Abhängig von Ihrer Zugriffsstufe können Sie möglicherweise mit apt-get- oder wget-Befehlen Dinge auf Ihrem Server installieren. Sie können Ihren Apache-Server verwalten, Konfigurationsdateien mit einem Terminal-basierten Texteditor bearbeiten, Fehlerprotokolle anzeigen, Cache-Speicher löschen, Dateien direkt auf einem Server anzeigen, um sicherzustellen, dass sie die richtige Version sind, und viele andere Systemverwaltungsaufgaben auf einer niedrigeren Ebene . Nun, was wäre, wenn Sie es tun wollten schneller mit SSH?
Es gibt eine Menge mächtiger Dinge, die SSH Ihnen bietet. Wir werden ein paar davon überspringen (da einige mehr sysadminabhängig sind, wie etwa das Tunneln). Aber wir werden ein paar nützliche Tricks durchgehen.
Sie denken sich "es scheint, dass es einen schnelleren Weg geben sollte, dies zu tun." Du hast recht. Und da ist. Anstatt sich für jeden Server Ihre Domäne, Ihr Kennwort und Ihren Benutzernamen merken zu müssen, können Sie einige Konfigurationen einrichten, die es Ihnen ermöglichen, den Vorgang auf diese Weise zu beschleunigen.
ssh myserver
Mit der richtigen Konfiguration können Sie dies ausführen und ohne dass Sie Passwörter, IP-Adressen oder lange Domänennamen eingeben müssen, sind Sie dabei! Wir gehen davon aus, dass Sie sich bei einem MediaTemple-Server anmelden. Zuerst werden wir generieren SSH-Schlüssel. Dies ist im Wesentlichen ein Satz von verschlüsselten Schlüsseln, in denen sich der Schlüssel befindet ~ / .ssh
auf Ihrem lokalen Rechner. Sie haben einen "öffentlichen" und einen "privaten" Schlüssel. Öffnen Sie also zunächst ein neues Terminalfenster und erstellen Sie den Ordner .ssh in Ihrem Basisverzeichnis.
mkdir ~ / .ssh
Als Nächstes generieren Sie Ihre Schlüssel mit der folgenden Zeile. (Dies kommt direkt aus der Dokumentation von MediaTemple.)
ssh-keygen -t rsa -b 2048 -f ~ / .ssh / id_rsa -C "Kommentar zu Ihrem Schlüssel wird hier angezeigt."
Diese Zeile generiert einen ssh-Schlüssel vom Typ rsa mit 2048 Bit (zur Sicherheit) am angegebenen Dateispeicherort und dem angegebenen Kommentar. Sie werden um ein Kennwort gebeten, das jedoch nicht vorgeschrieben oder erforderlich ist. Wenn Sie kein Kennwort angeben, können Sie sich automatisch anmelden. Der RSA-Typ ist für die SSH-Protokollversion 1. Der Typ DSA ist für die Protokollversion 2. Erkundigen Sie sich bei Ihrem Webserver, welche Version er verwendet. Sobald Ihre Schlüssel generiert wurden, führen Sie diesen Befehl aus, um sicherzustellen, dass Ihre SSH-Konfigurationen die richtigen Berechtigungen haben.
chmod 700 ~ / .ssh && chmod 600 ~ / .ssh / *
Als Nächstes laden Sie Ihren öffentlichen Schlüssel auf Ihren Server hoch. Dafür gibt es mehrere Möglichkeiten. Dieser Weg stammt auch aus den Dokumenten von MediaTemple.
cat ~ / .ssh / id_rsa.pub | ssh [email protected] 'cat - >> ~ / .ssh / authorised_keys'
Dieser Code wiederholt Ihre id_rsa.pub durch ein '|' (Pipe) in den nächsten Befehl, der ein SSH ist, in [email protected], wo Sie ein Echo und eine Verkettung von dem ausführen, was Sie im ersten Befehl geleitet haben. Das hört sich etwas kompliziert an, daher gibt es einige alternative Wege, um damit umzugehen. Im Wesentlichen möchten Sie keine Zeilenumbrüche und Ihren öffentlichen Schlüssel in einer eigenen Zeile in einer Datei, genannt authorized_keys
auf Ihrem Server im Verzeichnis ~ / .ssh /. Wenn dies der erste oder einzige Schlüssel ist, den Sie auf Ihrem Server wünschen, können Sie diesen Befehl ausführen, um ihn direkt an diesen Ort zu kopieren.
scp ~ / .ssh / id_rsa.pub [email protected]: .ssh / authorized_keys
Diese Zeile besagt im Wesentlichen: "Kopieren Sie diese erste Datei über SSH auf den Server an diesem Ort relativ zu meinem aktuellen Basisverzeichnis."
Sobald Ihre Authorized_keys Ihren öffentlichen Schlüssel enthalten, können Sie versuchen, sich mit ssh [email protected] am Server anzumelden. Wenn Sie Ihren öffentlichen Schlüssel in die SSH-Konfigurationsdateien des Root-Benutzerverzeichnisses einfügen, können Sie sich direkt bei Root anmelden. Sie werden nach einem rsa-Fingerabdruck gefragt. Gehen Sie voran und erlauben Sie diese Aktion. Es fügt den Server, zu dem Sie eine Verbindung herstellen, zu einer known_hosts-Datei hinzu. Diese Datei kann für viele verschiedene Zwecke verwendet werden, insbesondere jedoch, um sich vor einem so genannten Man-in-the-Middle-Angriff zu schützen. Wenn Sie mehr darüber erfahren möchten, lesen Sie diese Erklärung.
Wenn Sie sich erfolgreich an Ihrem Server anmelden können, als hätten Sie ein Kennwort eingegeben, funktionieren Ihre Schlüssel ordnungsgemäß. Im nächsten Schritt fügen Sie ein paar Zeilen für eine Verknüpfung zu einer Konfigurationsdatei auf Ihrem Computer hinzu. Öffnen Sie ~ / .ssh / config in Ihrem bevorzugten Texteditor (erstellen Sie ihn, falls er nicht existiert) und fügen Sie Folgendes hinzu:
Kurzname des Hosts Hostname somehost.com Benutzername des Benutzers
Dabei ist "Kurzname" ein Kurzname für den Server, bei dem Sie sich anmelden möchten. Zum Beispiel würde "Host myserver" es mir erlauben ssh myserver
. Der Hostname ist Ihr Serverstandort und der Benutzer ist natürlich Ihr Benutzername. Sie haben vielleicht Benutzer root
an dieser Stelle. Sobald diese Datei gespeichert ist, sollten Sie in der Lage sein, einen einfachen Befehl zum Anmelden an Ihrem Server auszuführen.
SSH-Kurzname
Bitte beachten Sie: Dieser Abschnitt erfordert etwas 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 zu einem Git-Repo auf Ihrem eigenen Server zu wechseln.
Um dies einzurichten, stellen Sie sicher, dass Git sowohl auf dem Host als auch auf Ihrem lokalen Computer installiert ist. Möglicherweise müssen Sie durch Ihr Webserver-Unternehmen gehen, um Git zu installieren. Als nächstes ausführen git init
auf Ihrem Server an dem Ort, an dem sich Ihr Git-Repo befinden soll. Natürlich können Sie dies auf hundert verschiedene Arten tun, aber wenn Sie es vorziehen, kein nacktes Repository zu haben, können Sie Verzweigungen für den Push von Ihrem lokalen Computer aus verwenden. Hier ist ein allgemeiner Arbeitsablauf.
ssh [email protected] cd / pfad / to / repo git init git checkout -b staging git checkout master # Verbindung von der Shell-Sitzung mit ctrl-d trennen cd / local / repo git init git add. git commit -am "some message" git remote fügt ursprung [email protected]: / pfad / zu / repo hinzu git checkout -b staging git schieben ursprung-staging
Im Wesentlichen ist das, was hier passiert, dass Sie sich beim Server anmelden, zum gewünschten Repo-Pfad wechseln, ein Repository erstellen und einen "Staging" -Zweig hinzufügen, in den Sie von Ihrem lokalen Computer aus pushen können. Dann erstellen Sie Ihr lokales Repo und einen entsprechenden "Staging" -Zweig auf Ihrem lokalen Computer und fügen Dateien zum Nachverfolgen zum Repo hinzu. Als nächstes folgt ein erstes Commit. Sie fügen dann das Remote-Repository als Alias "Ursprung" hinzu. Als Nächstes verschieben Sie den lokalen Staging-Zweig in den Staging-Zweig des Alias "origin". Zum Schluss ssh'n Sie wieder in den Server und mischen den Zweig "Staging" mit dem Standardzweig "Master".
Sie können auch das SSH-basierte FTP (File Transfer Protocol) verwenden. Hierbei handelt es sich im Wesentlichen um eine sicherere (verschlüsselte) Version von FTP, die über Port 22 (und nicht über den Standard-FTP-Port 21) läuft. 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.
Solange Sie sich in der Nähe eines Computers befinden, der mit dem Internet verbunden ist, über ein Terminal verfügt und SSH installiert hat (z. B. jeder mit WLAN verbundene Mac), können Sie über SSH auf Ihren Server zugreifen. Das ist das Beste. Sie benötigen keine Konfiguration (vorausgesetzt, Sie haben keine Einschränkungen festgelegt) benötigen ein passender Pubkey), Sie können sich mit Ihrem Benutzernamen und Passwort praktisch überall anmelden. Es gibt sogar SSH-Clients für iOS und andere mobile Geräte. Dies ist eine sehr leistungsfähige Funktion von SSH, die nur von browserbasierten Anwendungen in der Portabilität unterstützt wird.
Hoffentlich können Sie die Leistungsfähigkeit von SSH in einem täglichen Entwicklungszyklus sehen.
Stellen wir uns vor, dass Sie und ein paar Kumpels gemeinsam an Code arbeiten. Angenommen, Sie haben einen lokalen Computer, auf den Sie die volle Kontrolle haben, den Sie als Entwicklungs-LAMP-Server verwenden, auf dem einige VMs installiert sind. Sie können SSH lokal verwenden, um Dateien auf und von Ihrem Computer und dem Entwicklungscomputer zu verschieben. Sie können sogar ein lokales Repo von Git (oder svn oder Mercurial) mit SSH einrichten, um alles in Schach zu halten. Vielleicht könnte man sogar die Entwicklungsmaschine als einzige Maschine machen, die über SSH mit dem Remote-Server verbunden ist, damit der Code hat einen bestimmten Inszenierungsprozess durchlaufen, 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 sehen, insbesondere für Teams, die Versionskontrolle verwenden. Wie bereits erwähnt, gibt es eine Vielzahl von Dokumentationen und eine Vielzahl anderer Tools auf Netzwerkebene, die auf SSH basieren oder von SSH abhängen und Ihnen mehr Kontrolle und mehr Kontrolle über Ihren Entwicklungsprozess und Ihren Server geben. Wer weiß? Vielleicht könnte man eines Tages doch als Sysadmin verdoppeln!
Hier finden Sie weitere hilfreiche Links, um den Einstieg in SSH zu erleichtern. Es ist schon eine Weile her, daher gibt es eine Menge Dokumentation.
Danke fürs Lesen!