Die angezeigte Nachricht ist ein separates Problem. Sie werden aufgefordert, zu bestätigen, dass der Host, zu dem Sie eine Verbindung herstellen, wirklich der ist, den Sie erwarten. Vom Server können Sie den Fingerabdruck durch Ausführen abrufen ssh-keygen -l -f /etc/ssh/ssh_host_rsa_key.pub
. Wenn Sie dann zum ersten Mal eine Remoteverbindung herstellen, können Sie sicherstellen, dass die Fingerabdrücke übereinstimmen.
Host-Schlüssel, die hier in Aktion zu sehen sind, befassen sich mit dem Problem der Man-in-the-Middle- Angriffe - möglicherweise wurde DNS untergraben, und Sie stellen eine Verbindung zu einem Computer eines Mitbewerbers anstelle Ihres eigenen her. Dieser Computer sammelt Ihre Anmeldeinformationen und leitet Ihre Verbindung transparent an den realen Server weiter. Dabei werden Ihre Informationen gestohlen, ohne dass Sie es wissen. Wenn Sie sicherstellen, dass der Hostschlüssel übereinstimmt, wird dies verhindert, es sei denn, der Angreifer hat den öffentlichen Schlüssel Ihres Servers tatsächlich gestohlen.
Es bleibt jedoch ein Problem - woher wissen Sie, welcher Schlüssel richtig ist? Nach der ersten Verbindung wird der öffentliche Schlüssel in Ihrer ~/.ssh/known_hosts
Datei gespeichert , sodass nachfolgende Verbindungen in Ordnung sind. Aber beim ersten Mal benötigen Sie entweder eine Out-of-Band-Methode, um den Fingerabdruck zu erhalten, oder Sie folgen dem "TOFU" -Modell: Vertrauen bei der ersten Verwendung.
Aber nichts davon hat etwas mit Passwörtern oder Schlüsseln zu tun, außer dass sowohl Schlüssel als auch Passwörter durch diesen Angriff gestohlen werden könnten - in gewissem Sinne ist es die Sicherheitslücke, nach der Sie fragen.
Es gibt (mindestens) drei Gründe, warum Passwörter schlechter sind als Schlüssel:
- Sie können brutal gezwungen werden. Ein typisches vom Benutzer ausgewähltes 8-stelliges Passwort weist etwa 30 Bit Vermutungsentropie auf. Ein öffentliches / privates SSH-Schlüsselpaar ist 1024 Bit oder größer. Es ist praktisch unmöglich, einen SSH-Schlüssel brutal zu erzwingen, aber das automatische Erraten von Passwörtern geschieht ständig.
- Sie können dumm sein. Benutzer wählen routinemäßig schreckliche Passwörter aus, selbst wenn Einschränkungen bestehen, und sie neigen dazu, an mehreren Stellen härtere Passwörter zu verwenden. Dies erleichtert offensichtlich Angriffe.
- Passwörter können aus der Ferne gestohlen werden. Wenn Sie SSH verwenden, wird das Kennwort auf dem Kabel verschlüsselt. In kompromittierten Systemen wird der SSH-Server jedoch häufig durch ein System ersetzt, das alle Kennwörter protokolliert. Bei Schlüsseln bleibt der private Schlüssel auf dem lokalen System und wird überhaupt nicht gesendet. Daher kann er nicht gestohlen werden, ohne den Client-Computer tatsächlich zu gefährden.
Darüber hinaus bieten SSH-Schlüssel Komfort bei der Verwendung mit so etwas wie ssh-agent
- Sie können problemlos eine Verbindung herstellen, ohne sich jedes Mal neu zu authentifizieren, und gleichzeitig ein angemessenes Maß an Sicherheit gewährleisten.
Es ist kein wesentlicher Vorteil, nach beidem zu fragen, da jemand, der genügend Zugriff hat, um den privaten Schlüssel zu stehlen, auch ziemlich leicht das Passwort des Benutzers stehlen kann. Wenn Sie mehr Sicherheit benötigen, sollten Sie ein Zwei-Faktor-Authentifizierungssystem wie RSA SecurID oder WiKID in Betracht ziehen .