Ich habe einen Server, auf den ich häufig per ssh zugreifen muss, weil ich darauf rechne. Das Rechenzentrum verbietet nun ausdrücklich SSH-Schlüssel, da diese "unsicher" sind. Sie sind der Meinung, dass die Eingabe meines Passworts über eine Tastatur, die immer vor anderen Menschen möglich ist, eine viel sicherere Möglichkeit ist, sich anzumelden.
Jetzt; Ich kann ihre Meinung nicht ändern (ich habe es versucht).
Gibt es eine Möglichkeit, SSH-Kennwörter zumindest vorübergehend zu speichern, wie GIT Kennwörter für eine bestimmte Zeit in einem Cache speichern kann?
the computing center explicitly forbids SSH-keys because they are "insecure"
- meine Meinung dazu? Suchen Sie einen neuen Server-Host, da der Ihre offensichtlich unpassend ist.publickey
Authentifizierung bietet jedoch noch weitere Vorteile . Wenn Sie diepassword
Authentifizierung auf dem Server deaktivieren , verhindern Sie, dass alle Angreifer versuchen, Kennwörter zu erraten. Wenn ein Angreifer einen Mitm-Angriff auf einen Client unternimmt, auf dem der öffentliche Schlüssel des Servers noch nicht gespeichert ist, sind Sie besser geschütztpublickey
als bei Verwendung derpassword
Authentifizierung.Antworten:
Wiederverwendung der Verbindung
Mit SSHv2 kann dieselbe authentifizierte Verbindung mehrere "Kanäle" einrichten - interaktive Shell, Batch-Befehl, SFTP sowie sekundäre wie z. B. Agentenweiterleitung oder TCP-Weiterleitung. Ihr Server unterstützt wahrscheinlich standardmäßig das Multiplexen von Verbindungen. (Wenn sich Ihre Administratoren beschweren, wird Ihr Kennwort nirgendwo zwischengespeichert - die gesamte Verbindung wird zwischengespeichert.)
Mit OpenSSH haben Sie
ControlMaster
undControlPath
Optionen (-M und -S), um dies zu nutzen:Starten Sie eine 'Master'-SSH-Verbindung mit
-M
. (Da Sie noch keinen ControlPath in Ihrer Konfiguration haben, müssen Sie ihn in der Befehlszeile mit angeben-S
. Er muss eine lange Lebensdauer haben, daher füge ich die-fN
Optionen zum Ablegen im Hintergrund hinzu. Ansonsten sind sie technisch optional.)Du bist zurück in der lokalen Shell.
Starten Sie eine neue Verbindung über den Master:
Du bist in.
Um dies für Git / rsync / SFTP nützlich zu machen, müssen Sie
ControlPath
in Ihrer Konfiguration einrichten , da Sie nicht immer Folgendes angeben-S
können:Sie können dies automatisieren - neuere OpenSSH-Versionen verfügen auch über eine Funktion,
ControlPersist
die automatisch eine Masterverbindung im Hintergrund herstellt, falls noch keine vorhanden ist. Auf diese Weise können Sie Schritt 1 überspringen und ssh wie gewohnt verwenden.Konfiguration in
~/.ssh/config
:Bei der ersten Verbindung wird nach dem Passwort gefragt:
Der zweite nicht:
Verwenden Sie die
-O
Option, um den Multiplex-Master zu steuern (stoppen oder TCP-Weiterleitungen konfigurieren) .Eine ähnliche Methode wird von neueren PuTTY-Versionen unterstützt .
quelle
Verwenden
sshpass
sshpass ( github , man page ) ist ein Tool, das das Passwort automatisch an ssh weiterleitet. Der sichere Weg, es zu benutzen, ist der folgende:
Dadurch wird das Kennwort
~/.ssh/compute_password
ähnlich wie bei einer privaten Schlüsseldatei ohne Passphrase gelesen . Sie können densshpass
Befehl in ein kleines Shell-Skript oder einen Shell-Alias einfügen, um die Eingabe des vollständigen Befehls zu vermeiden. Leider habe ich keinen Weg gefunden, dies zu tun~/.ssh/config
.(Es ist auch möglich, das Kennwort direkt in der Befehlszeile anzugeben
sshpass
, dies sollte jedoch vermieden werden, da das Kennwort an alle weitergegeben wird, die dazu in der Lage sind.ps
)Vergleich mit anderen Methoden
Dieser Ansatz ist natürlich weniger sicher als die ordnungsgemäße Einrichtung der Authentifizierung mit öffentlichen Schlüsseln, aber das wissen Sie wahrscheinlich bereits.
Es ist auch weniger sicher als die Antwort von @grawity zur Wiederverwendung von Verbindungen, hat jedoch den Vorteil, dass das Kennwort überhaupt nicht interaktiv eingegeben werden muss.
Sie könnten die Antwort von @ grawity als Alternative zur Authentifizierung von Pubs mit einer Passphrase und privatem Schlüssel-Caching (z. B.
ssh-agent
) betrachten. Dann wäre meine Antwort eine Alternative zu pubkey auth ohne eine Passphrase für die private Schlüsseldatei.quelle
head -c 16 /dev/urandom | base64
für 128 Bit) generieren und es nicht auf anderen Systemen verwenden, ähnelt es in Bezug auf die Sicherheit einem Schlüssel. Als schwer zu brachialisieren und als einfach zu verwendende Datei, wenn sie nicht verschlüsselt ist. Das gilt auch für die Bösen, wenn sie die Akte bekommen. Der einzige Unterschied besteht darin, dass das Kennwort so wie es ist an den Server gesendet wird, während Schlüssel besser berechnet werden können, um zu beweisen, dass Sie den richtigen privaten Schlüssel besitzen, ohne ihn preiszugeben Standardwerkzeuge).Verwenden Sie den Passwort-Manager.
Einige Kennwortmanager (z. B. KeePassXC) verfügen über die Funktion zum automatischen Eingeben. Sie speichern das Kennwort im Kennwort-Manager, entsperren die Datenbank, wenn Sie den Manager ausführen, und
ssh
drücken jedes Mal, wenn Sie zur Eingabe Ihres Kennworts aufgefordert werden, eine Tastenkombination, mit der der Kennwort-Manager Ihr langes Kennwort in die Konsole schreibt.Sie müssen nichts kopieren, nichts merken (mit Ausnahme des Kennworts zum Entsperren der Datenbank), und Sie können bei jedem Anmeldeversuch ein sicheres Kennwort festlegen, ohne diese 30 Zeichen zu zerstören.
Sie können Ihren Favoriten aus dieser Liste auswählen: https://en.wikipedia.org/wiki/List_of_password_managers
quelle
gnome-terminal
ändert seinen Titel in,ssh somehost
wenn ssh mich nach einem Passwort fragt, damit Sie das Titelfenster problemlos mit diesem abgleichen können. Ich habe keine Ahnung von Funktionen zur Keylog-Abwehr - ich verwende KeePassXC täglich im Terminal und das Schlimmste, mit dem ich zu kämpfen hatte, ist die Auswahl des entsprechenden Kontos aus der Liste.Eine andere Alternative ist die Verwendung eines GUI-ssh-Clients. Unter Windows wäre PuTTY die naheliegende Wahl . Es gibt auch eine Linux-Version von PuTTY, insbesondere die meisten Debian-basierten Distributionen wie Ubuntu enthalten PuTTY normalerweise in ihrem Repo.
Ein weiterer wirklich guter Kunde ist Termius . Es unterstützt nicht nur Windows und Linux, sondern auch OSX, iOS und Android. Obwohl es hauptsächlich für Handys entwickelt wurde, ist die Desktop-Version eigentlich recht gut.
Wenn ich mich nicht irre, hat / hatte das ehrwürdige Hyperterminal unter Windows auch einen ssh-Client eingebaut, aber ich habe lange Zeit kein Fenster mehr benutzt, daher bin ich mir nicht ganz sicher.
Alle GUI-Clients können Verbindungseinstellungen speichern, die Ihren Benutzernamen und Ihr Kennwort enthalten.
quelle