SSH auf einem Linux-Server
SSH, auch bekannt als Secure Shell, ist ein Protokoll, das verwendet werden kann, um sich mit einem Server zu verbinden und zu kommunizieren. Sie können sich mit Ihrem Linux-Server verbinden für eine Terminal-Sitzung über dieses verschlüsselte Protokoll. Wenn Sie einen OpenSSH-Server verwenden, gibt es primär zwei verschiedene Möglichkeiten für den Authentifizierungsprozess. Die erste ist Ihre standardmäßige passwortbasierte Authentifizierung. Hier verwenden Sie einfach Ihre Benutzername- und Passwort-Anmeldedaten, um Zugriff auf Ihr Konto zu erhalten. Der andere Weg besteht darin, Ihren Linux-Server für die SSH-schlüsselbasierte Authentifizierung einzurichten.
In dieser Anleitung konzentrieren wir uns darauf, wie Sie Ihren Linux-Server so konfigurieren können, dass SSH-Schlüssel als primäres Authentifizierungsmittel verwendet werden. Wir werden auch besprechen, warum SSH-Schlüssel oft gegenüber dem üblichen Passwortschutz-Mechanismus bevorzugt werden.
Was sind SSH-Schlüssel?
SSH-Schlüssel ähneln den Anmeldedaten, die Sie verwenden würden, um sich bei Ihrem Konto auf dem Server anzumelden. Anstatt Ihren Benutzernamen und Ihr Passwort einzugeben, verwenden Sie das SSH-Schlüsselpaar, das ebenfalls ein Zugangsdaten-Set ist. Obwohl die Schlüssel kryptografisch sind, müssen Sie sie als Authentifizierungsdaten behandeln, da dies der Zweck ist, dem sie dienen.
Ein typischer SSH-Schlüssel besteht aus zwei Teilen: einem autorisierten Schlüssel und einem Identitätsschlüssel. Der autorisierte Schlüssel ist der öffentliche Schlüssel, der in Kombination mit Ihrem privaten Identitätsschlüssel funktioniert, um Ihnen Kontozugriff zu gewähren. Der öffentliche Schlüssel befindet sich auf dem Remote-Server, auf dem Sie sich mit SSH anmelden möchten, und verbleibt in der Datei ~/.ssh/authorized_keys, die Ihrem Benutzerkonto zugeordnet ist. Identitätsschlüssel dienen dazu, Ihre Identität als korrekter Benutzer zu verifizieren, um sicherzustellen, dass nur autorisiertes Personal auf das jeweilige Konto zugreifen kann. Zusammenfassend werden diese Schlüssel als Benutzerschlüssel bezeichnet, da sie die Identität des Benutzers authentifizieren. Sobald der Server in der Lage ist, beide Schlüssel zu verifizieren, wird eine Shell-Sitzung initiiert, um Ihre Befehle auszuführen.
Sie haben auch Host-Schlüssel und Sitzungsschlüssel. Das Protokoll authentifiziert den lokalen Computer, das System oder den Server mithilfe des Host-Schlüssels. Sitzungsschlüssel helfen dabei, den Datenstrom über die Verbindung zu verschlüsseln. Dies macht Ihre Sitzung und die entsprechenden Aktivitäten viel sicherer.
SSH-Schlüssel gegenüber Passwortschutz
Der Hauptgrund, warum die SSH-schlüsselbasierte Authentifizierung dem Passwortschutz vorzuziehen ist, liegt darin, dass letzterer Sie anfällig für Cyberangriffe machen kann. Die meisten Personen verwenden keine extrem komplexen Passwörter, damit sie sich beim Anmelden an sie erinnern können. Infolgedessen entsteht dadurch eine Schwachstelle. Viele Angreifer wenden Gewalt an, um das relativ einfache Passwort zu knacken und in das Konto einzudringen. Dies ist heutzutage aufgrund von Automatisierung und fortschrittlichen Hacking-Technologien besonders einfach geworden.
SSH-Schlüssel hingegen bieten eine weitaus sicherere Möglichkeit, Zugriff auf Ihr Konto zu erhalten. Wie bereits erwähnt, verwendet diese Methode einen öffentlichen und einen privaten Schlüssel, um die Identität eines Clients zu authentifizieren. Während Sie den öffentlichen Schlüssel mit jedem teilen können, müssen Sie den privaten Schlüssel geheim halten. Wenn sie miteinander gekoppelt sind, entschlüsselt der öffentliche Schlüssel den privaten, um Ihre Identität zu authentifizieren. Darüber hinaus können Sie den Schutz erhöhen, indem Sie dem Schlüsselpaar eine Passphrase hinzufügen. Wir werden im weiteren Verlauf der Anleitung noch näher auf die Passphrase eingehen. Doch selbst ohne Passphrase ist Ihr privater SSH-Schlüssel auf Ihrem lokalen Computer extrem sicher aufbewahrt. Das Netzwerk kann niemals direkt auf den Schlüssel zugreifen, der sich in einem eingeschränkten Verzeichnis befindet und mit eingeschränkten Berechtigungen versehen ist.
SSH-Schlüssel generieren
Um Ihr SSH-Schlüsselpaar zu generieren, müssen Sie die OpenSSH-Toolsuite durchsuchen und ssh-keygen ausfindig machen. Dies ist ein spezielles Hilfsprogramm, mit dem Sie ein SSH-Schlüsselpaar mit einer Größe von etwa 2048 Bit generieren können. Beginnen Sie mit der Ausführung dieses Befehls:
|
1 |
ssh-keygen |
Dies führt zu folgender Meldung:
|
1 2 |
Generieren öffentlich/privat rsa Schlüssel Paar. Eingeben Datei in welcher zu speichern der Schlüssel (/home/Benutzername/.ssh/id_rsa): |
Die Meldung generiert einen privaten Schlüssel namens id_rsa und einen öffentlichen Schlüssel namens id_rsa.pub. An dieser Stelle können Sie wählen, wo Sie den Schlüssel ablegen möchten. Wir empfehlen, den Standardspeicherort beizubehalten, indem Sie die Eingabetaste drücken. Wenn Sie den Standardspeicherort beibehalten, wird sichergestellt, dass der Server die Schlüssel automatisch findet und überprüft, wann immer Sie sich mit diesem System anmelden. Der Standardspeicherort ist das Verzeichnis ~/.ssh im Home-Verzeichnis. Wenn Sie einen anderen Ort bevorzugen, geben Sie den Pfad ein.
Ältere SSH-Schlüssel überschreiben
Es ist wichtig zu beachten, dass Sie jeweils nur ein SSH-Schlüsselpaar auf Ihrem System haben können. Das bedeutet, wenn Sie zuvor ein Schlüsselpaar auf dem System generiert und gespeichert haben, wird die folgende Meldung angezeigt:
|
1 2 |
/home/username/.ssh/id_rsa bereits existiert. Überschreiben (y/n)? |
Um mit dem Erstellen und Speichern Ihres neuen SSH-Schlüsselpaars fortzufahren, müssen Sie das vorhandene löschen. Denken Sie daran: Wenn Sie den bereits auf der Festplatte gespeicherten Schlüssel überschreiben, können Sie ihn nicht mehr zur Authentifizierung verwenden. Dies ist ein unumkehrbarer Vorgang. Stellen Sie daher sicher, dass Sie absolut sicher sind, dass Sie das alte Schlüsselpaar überschreiben möchten.
Festlegen einer Passphrase
Sobald Sie die Schlüssel im Verzeichnis eingerichtet haben, werden Sie gefragt, ob Sie eine Passphrase eingeben möchten:
|
1 2 3 |
Erstellt Verzeichnis '/home/username/.ssh'. Eingeben Passphrase (leer für keine Passphrase): Eingeben gleiche Passphrase erneut: |
Die Passphrase ist optional – Sie können sie überspringen. Sie bietet jedoch eine zusätzliche Sicherheitsebene für Ihren privaten Schlüssel, indem sie ihn auf der Festplatte verschlüsselt. Wenn Sie sich für die Verwendung einer Passphrase entscheiden, müssen Sie diese jedes Mal korrekt eingeben, wenn Sie versuchen, sich mit diesem SSH-Schlüsselpaar anzumelden:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
Ihre Identifikation wurde been gespeichert in /home/username/.ssh/id_rsa. Ihr öffentlicher Schlüssel wurde been gespeichert in /home/username/.ssh/id_rsa.pub. Der Schlüssel-Fingerabdruck ist: a9:49:2e:2a:5e:33:3e:a9:de:4e:77:11:58:b6:90:26 username@remote_host Das Schlüssel's Randomart-Bild ist: +--[ RSA 2048]----+ | ..o | | E o= . | | o. o | | .. | | ..S | | o o. | | =o.+. | |. =++.. | |o=++. | +-----------------+ |
Schließlich sollten Sie nun über Ihre SSH-Schlüssel verfügen, mit denen Sie den Client authentifizieren können.
Einbetten Ihres SSH-Schlüssels in Ihr Server-Konto
Bevor Sie die Schlüssel zur Authentifizierung verwenden, müssen Sie den öffentlichen Schlüssel auf dem Remote-Linux-Server einbetten. Als Nächstes zeigen wir Ihnen, wie Sie das beim Erstellen Ihres CloudSigma-Servers tun. Zuerst müssen Sie Ihren öffentlichen SSH-Schlüssel finden, damit Sie ihn kopieren und einfügen können. Wenn Sie die obige Methode zur Generierung Ihres SSH-Schlüsselpaars verwendet haben, finden Sie den öffentlichen Schlüssel, indem Sie Folgendes eingeben:
|
1 |
cat ~/.ssh/id_rsa.pub |
Dies führt dazu, dass der öffentliche SSH-Schlüssel wie folgt angezeigt wird:
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDNqqi1mHLnryb1FdbePrSZQdmXRZxGZbo0gTfglysq6KMNUNY2VhzmYN9JYW39yNtjhVxqfW6ewc+eHiL+IRRM1P5ecDAaL3V0ou6ecSurU+t9DR4114mzNJ5SqNxMgiJzbXdhR+j55GjfXdk0FyzxM3a5qpVcGZEXiAzGzhHytUV51+YGnuLGaZ37nebh3UlYC+KJev4MYIVww0tWmY+9GniRSQlgLLUQZ+FcBUjaqhwqVqsHe4F/woW1IHe7mfm63GXyBavVc+llrEzRbMO111MogZUcoWDI9w7UIm8ZOTnhJsk7jhJzG2GpSXZHmly/a/buFaaFnmfZ4MYPkgJD username@example.com |
Kopieren Sie diesen Wert, um ihn später zu verwenden. Wenn Sie einen Server mit CloudSigma erstellen, haben Sie die Möglichkeit, einen SSH-Schlüssel hinzuzufügen, nachdem Sie die Servergröße und das OS-Image ausgewählt haben:

Klicken Sie auf Hinzufügen und fügen Sie das Kopierte ein, um den SSH-Schlüssel in Ihren Server einzubetten. Dadurch verfügt Ihr Server bei jedem Booten bereits über den injizierten SSH-Schlüssel.
Kopieren eines öffentlichen Schlüssels auf einen bestehenden Server
Während die obige Methode beim Erstellen eines neuen Servers funktioniert, stellt sich die Frage: Ist es möglich, einen SSH-Schlüssel in einen bestehenden Server einzubetten? Die Antwort lautet Ja, und es gibt verschiedene Möglichkeiten, dies zu tun, je nachdem, welche Tools Ihnen zur Verfügung stehen.
Verwendung von SSH-Copy-ID
Dies ist der einfachste und unkomplizierteste Weg, einen öffentlichen Schlüssel zu kopieren. Alles, was Sie brauchen, ist das Dienstprogramm ssh-copy-id, das Sie in der Standard-OpenSSH-Suite finden. Bevor Sie diese Methode anwenden, stellen Sie jedoch sicher, dass die passwortbasierte Authentifizierung auf Ihrem Server aktiviert ist. Um den Schlüssel zu kopieren, wenden Sie die ssh-copy-id-Syntax an und geben dann den Remote-Host ein, mit dem Sie sich verbinden möchten. Sie müssen auch das Konto angeben, mit dem Sie sich verbinden. Sie müssen passwortbasierten Zugriff auf das Konto haben, damit Ihr Schlüssel an der richtigen Stelle kopiert wird. Der Befehl sollte wie folgt aussehen:
|
1 |
ssh-copy-id username@remote_host |
Dies kann dazu führen, dass eine Meldung wie die folgende auf Ihrem Bildschirm erscheint:
|
1 2 3 |
The authenticity of host '111.111.11.111 (111.111.11.111)' can't be established. ECDSA key fingerprint is fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Are you sure you want to continue connecting (yes/no)? yes |
Dies geschieht in der Regel, wenn Sie sich zum ersten Mal mit diesem bestimmten Remote-Host verbinden. Es bedeutet lediglich, dass der Computer den Host nicht erkannt hat. Sie müssen nur „yes“ eingeben und die Eingabetaste drücken. Sobald Sie das tun, scannt das Tool das Konto, um Ihren öffentlichen Schlüssel zu finden. Sobald er gefunden wurde, werden Sie aufgefordert, Ihr Kontopasswort einzugeben:
|
1 2 3 |
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed /usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys username@111.111.11.111's password: |
Als Nächstes können Sie Ihr Passwort eingeben. Wenn Sie mit Ihrem Konto verbunden sind, kopiert das Tool den Inhalt des Schlüssels ~/.ssh/id_rsa.pub und fügt ihn unter authorized_keys im Verzeichnis ~/.ssh auf Ihrem Remote-Konto ein. Sie sehen dann die folgende Meldung:
|
1 2 3 |
Number of key(s) added: 1 Now try logging into the machine, with: "ssh 'username@111.111.11.111'" and check to make sure that only the key(s) you wanted were added. |
Dies bedeutet, dass Sie Ihren öffentlichen Schlüssel erfolgreich auf Ihren bestehenden Remote-Server kopiert haben.
Using SSH
Dies ist eine eher herkömmliche Methode, um Ihren öffentlichen Schlüssel auf einen Server zu kopieren. Es ist ratsam, sie zu verwenden, wenn Sie keinen Zugriff auf das Tool ssh-copy-id haben. Auch hier müssen Sie einen passwortbasierten Zugriff auf Ihr Konto haben. Im Wesentlichen geben Sie den Inhalt des öffentlichen Schlüssels auf Ihrem Computer aus und übertragen ihn über die hergestellte SSH-Verbindung auf den Remote-Server. Der Befehl, den Sie zu diesem Zweck verwenden, sollte wie folgt aussehen:
|
1 |
cat ~/.ssh/id_rsa.pub | ssh username@remote_host "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys" |
Wie Sie sehen können, haben wir festgelegt, dass der Schlüssel in der Datei authorized_keys im Verzeichnis ~/.ssh auf dem Server abgelegt werden soll. Die Verwendung des Symbols >> stellt außerdem sicher, dass wir Schlüssel hinzufügen, anstatt sie zu überschreiben. Nach dem Ausführen des Befehls sehen Sie möglicherweise diese Meldung:
|
1 2 3 |
Die Authentizität von Host '111.111.11.111 (111.111.11.111)' kann'nicht werden festgestellt. ECDSA Schlüssel Fingerabdruck ist fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Sind Sie sicher Sie wollen zu fortfahren verbinden (yes/no)? yes |
Ähnlich wie bei der vorherigen Meldung bedeutet dies, dass der Computer den Remote-Host nicht erkannt hat. Geben Sie „yes“ ein und drücken Sie die Eingabetaste, um fortzufahren. Nun geben Sie das Passwort des Kontos ein:
|
1 |
username@111.111.11.111's Passwort: |
Sobald das Passwort verifiziert ist, wird der Schlüssel wie angegeben in eine Datei in Ihrem Benutzerkonto kopiert.
Manuell
Falls Sie keinen passwortbasierten Zugriff auf Ihr Konto auf dem Remote-Server haben, können Sie den öffentlichen Schlüssel manuell kopieren. Das Ziel besteht darin, den Wert in der Datei id_rsa.pub in die Datei ~/.ssh/authorized_keys auf Ihrem Remote-Gerät zu übertragen. Wie wir bereits wissen, können wir den Wert des id_rsa.pub-Schlüssels mit diesem Befehl anzeigen:
|
1 |
cat ~/.ssh/id_rsa.pub |
Der Inhalt Ihres öffentlichen SSH-Schlüssels wird wie folgt angezeigt:
|
1 |
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQCqql6MzstZYh1TmWWv11q5O3pISj2ZFl9HgH1JLknLLx44+tXfJ7mIrKNxOOwxIxvcBF8PXSYvobFYEZjGIVCEAjrUzLiIxbyCoxVyle7Q+bqgZ8SeeM8wzytsY+dVGcBxF6N4JS+zVk5eMcV385gG3Y6ON3EG112n6d+SMXY0OEBIcO6x+PnUSGHrSgpBgX7Ks1r7xqFa7heJLLt2wWwkARptX7udSq05paBhcpB0pHtA1Rfz3K2B+ZVIpSDfki9UVKzT8JUmwW6NNzSgxUfQHGwnW7kj4jp4AT0VZk3ADw497M2G/12N0PPB5CnhHf7ovgy6nL1ikrygTKRFmNZISvAcywB9GVqNAVE+ZHDSCuURNsAInVzgYo9xgJDW8wUw2o8U77+xiFxgI5QSZX3Iq7YLMgeksaO4rBJEa54k8m5wEiEE1nUhLuJ0X/vh2xPff6SQ1BL/zkOhvJCACK6Vb15mDOeCSq54Cr7kvS46itMosi/uS66+PujOO+xt/2FWYepz6ZlN70bRly57Q06J+ZJoc9FfBCbCyYH7U/ASsmY095ywPsBo1XQ9PqhnN1/YOorJ068foQDNVpm146mUpILVxmq41Cj55YKHEazXGsdBIbXWhcrRf4G2fJLRcGUr9q8/lERo9oxRm5JFX6TCmj6kmiFqv+Ow9gI0x8GvaQ== demo@test |
Als Nächstes müssen Sie mit allen verfügbaren Mitteln Zugriff auf Ihr Konto auf dem Remote-Host erhalten. Wenn Sie angemeldet sind, überprüfen Sie, ob das Verzeichnis ~/.ssh vorhanden ist. Wenn nicht, können Sie den folgenden Befehl ausführen, um es zu erstellen:
|
1 |
mkdir -p ~/.ssh |
Nun können Sie diesen Befehl verwenden, um den Inhalt der Datei id_rsa.pub zur Datei authorized_keys in diesem Verzeichnis ~/.ssh auf dem Remote-Server hinzuzufügen:
|
1 |
echo public_key_string >> ~/.ssh/authorized_keys |
Anstatt „public_key_string“ in diesen Befehl einzugeben, müssen Sie den Inhalt des Schlüssels eingeben, den Sie zuvor durch Ausführen des Befehls cat ~/.ssh/id_rsa.pub extrahiert haben.
Authentifizierung mit Ihrem SSH-Schlüssel
Jetzt können Sie sich ganz einfach nur mit Ihren SSH-Schlüsseln in Ihr Konto einloggen. Das bedeutet, dass Sie kein Passwort mehr benötigen, um Zugriff auf Ihr Serverkonto zu erhalten. Sie verwenden die Anmeldedaten, die Sie normalerweise für die Anmeldung nutzen:
|
1 |
ssh username@remote_host |
Dies kann dazu führen, dass die folgende Meldung angezeigt wird:
|
1 2 3 |
Die Authentizität von Host '111.111.11.111 (111.111.11.111)' kann'nicht werden festgestellt. ECDSA Schlüssel Fingerabdruck ist fd:fd:d4:f9:77:fe:73:84:e1:55:00:ad:d6:6d:22:fe. Sind Sie sicher, dass Sie fortfahren möchten mit dem Verbinden (yes/no)? yes |
Machen Sie sich keine Sorgen, wenn Sie diese Meldung sehen. Sie bedeutet lediglich, dass das lokale System den Remote-Host nicht erkennen kann. Dies geschieht in der Regel, wenn Sie sich zum ersten Mal mit dem Host verbinden. Sie müssen lediglich „yes“ eingeben und die Eingabetaste drücken. Um auf einige der vorherigen Schritte zurückzukommen: Wenn Sie eine Passphrase eingerichtet haben, müssen Sie diese hier eingeben. Wenn nicht, werden Sie sofort nach der Authentifizierung der SSH-Schlüssel in Ihr Konto eingeloggt. Dadurch wird eine neue Shell-Sitzung über Ihr aktuelles Konto auf dem lokalen Computer geöffnet.
Wie deaktiviert man die Passwort-Authentifizierung auf Ihrem Server?
Da Sie nun wissen, wie Sie Ihre SSH-Schlüssel einrichten, müssen Sie die Passwort-Authentifizierung deaktivieren. Selbst wenn Sie die SSH-Schlüssel zur Authentifizierung verwenden können, sind Sie immer noch anfällig für Brute-Force-Angriffe, wenn Ihr Passwort-Authentifizierungsprozess aktiv ist. Bevor Sie den Passwort-Authentifizierungsmechanismus deaktivieren, stellen Sie sicher, dass die Konfiguration der SSH-schlüsselbasierten Authentifizierung für das Root-Konto auf dem Server gilt oder dass das konfigurierte Konto über Sudo-Zugriff verfügt. Der Grund für diese Bestätigung ist sicherzustellen, dass Sie den administrativen Zugriff auf das Konto behalten, selbst wenn Passwörter deaktiviert sind. Jetzt können Sie diesen SSH-Schlüssel verwenden, um sich bei Ihrem Serverkonto anzumelden. Der nächste Schritt besteht darin, die Konfigurationsdatei des SSH-Daemons zu öffnen:
|
1 |
sudo nano /etc/ssh/sshd_config |
Hier müssen Sie nach der folgenden Direktive suchen:
|
1 |
PasswordAuthentication |
Sie müssen diese Zeile auskommentieren und den Wert wie folgt auf „no“ ändern:
|
1 |
PasswordAuthentication no |
Dadurch wird die passwortbasierte Authentifizierung deaktiviert. Speichern Sie die Datei einfach und schließen Sie sie, wenn Sie fertig sind. Schließlich müssen Sie Ihr Gerät neu starten, um die Änderungen zu übernehmen. Wenn Sie ein Ubuntu- oder Debian-Gerät verwenden, können Sie auch den folgenden Befehl verwenden, um den passwortbasierten Zugriff zu deaktivieren:
|
1 |
sudo service ssh restart |
Um sicherzustellen, dass Ihr Daemon oder sshd auf CentOS- oder Fedora-Maschinen nur die SSH-basierte Authentifizierung auf dem Server zulässt, verwenden Sie den Befehl:
|
1 |
sudo service sshd restart |
Fazit
Sobald Sie alle diese Schritte abgeschlossen haben, sollte die SSH-schlüsselbasierte Authentifizierung auf Ihrem Server konfiguriert sein und ausgeführt werden. Jetzt können Sie sicher sein, dass Ihre Server sicher und geschützt sind!
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.