Ich benutze Ubuntu 12.04. Ich verwende ssh, um täglich eine Verbindung zu vielen Servern herzustellen, und füge ihre Parameter in die Datei .ssh / config ein . so was :
Host server1
User tux
Port 2202
HostName xxx.x.xx.x
Gibt es eine Möglichkeit, Passwörter für jede Verbindung in diese Datei einzutragen? Wenn der Server nach einem Passwort fragt, gibt das Terminal seinen Pass ein und sendet ihn an den Server. Daher muss ich das Passwort nicht jedes Mal eingeben. Außerdem möchte ich kein öffentliches / privates Schlüsselpaar verwenden.
Antworten:
Nein, es gibt keine Methode, um das Kennwort in nicht interaktiver Weise für die SSH-Authentifizierung mithilfe eines in openssh integrierten Mechanismus in der Befehlszeile anzugeben oder bereitzustellen. Zumindest nicht eines, von dem ich weiß. Sie könnten Ihr Passwort in das Expect-Skript einprogrammieren, aber es ist auch keine gute Lösung.
Sie möchten definitiv Schlüsselpaare für die kennwortlose Authentifizierung verwenden, wie Michael feststellte. Der private Schlüssel ist so ziemlich ein großes Kennwort in der Datei.
quelle
So vermeiden Sie die Folge von Kommentaren: Ja, dies ist unsicher (nicht einmal wahrscheinlich unsicher). Ich würde Ihnen dringend empfehlen, dies nur in einer Laborsituation in einem isolierten Netzwerk oder in einer ähnlichen Situation zu tun, in der keine Produktionsserver oder potenziell Produktionsserver ohne einen vollständigen Reset / ein vollständiges Format involviert sind.
Ich wollte dies einrichten, da ich nicht glaube, dass mein 2950-Switch private / öffentliche Schlüssel unterstützt, und ich hoffe, dass ich dieses Wissen irgendwann erlangen kann, aber ich bin noch nicht da.
Mit einem Alias und sshpass kann dies erreicht werden.
Mein Beispielalias lautet:
Wobei "cisco" das Passwort ist. Beachten Sie, dass zwischen -p und Passwort kein Leerzeichen steht.
Verwendung ist (unter Bezugnahme auf die Frage):
Hinweis: Dies beantwortet die Frage im Titel nur für diejenigen, die Suchmaschinen verwenden. Wenn Sie Server wie im Beispiel mit Fragen verwenden, sollten private / öffentliche Schlüsselpaare und nicht diese Antwort verwendet werden
quelle
Ja, wie oben erwähnt gibt es keine Möglichkeit, das Passwort einfach zu speichern. Ich würde empfehlen, den SSH-Schlüssel für die Autorisierung zu verwenden.
Generieren Sie zunächst Ihren Schlüssel:
Kopieren Sie dann den Schlüssel auf Ihre Server / Desktops:
Das ist alles. Sie werden nie wieder nach dem Passwort gefragt.
Ich empfehle auch, die Kennwortberechtigung im Allgemeinen zu entfernen, aber das liegt bei Ihnen.
quelle
sshpass -p $PASSWORD ssh $USERNAME@$HOST "echo `cat ~/.ssh/id_rsa` >> /home/$USERNAME/.ssh/authorized_keys"
aber dieses Programm ist sauberer und macht die Absicht klar.Mit ssh geht das nicht, es ist so unsicher wie es nur geht.
Wie Danila erwähnt hat, kann man Skripte erwarten, aber ich würde mich nicht darum kümmern.
Ich frage mich, was versuchst du zu erreichen? Möchten Sie von einem Server zum anderen springen? In diesem Fall möchten Sie ssh-agent auf Ihrer Workstation einrichten und verwenden und die Agentenweiterleitung auf den Zielhosts aktivieren. Auf diese Weise kann der Austausch von Anmeldeinformationen an Ihren lokalen Agenten weitergeleitet werden, ohne dass Sie Ihren privaten Schlüssel kopieren müssen.
quelle
Ich benutze dieses Skript aus dem
~/.local/bin
VerzeichnisDamit kann ich die Passphrase wie
#PS <password>
in der.ssh/config
Datei angeben .Aber, wie jeder sagt, es ist besser zu Einsatz
ssh-keys
mit ,ssh-agent
wenn es möglich istquelle
Der richtige Weg, um mit dieser Situation umzugehen, ist die Verwendung eines sitzungsbasierten ssh-Agenten. Hier ist, wie:
Das Passwort bleibt dann für den Rest der Sitzung gültig. Sie müssen den ersten Befehl nur einmal ausführen und können anschließend beliebig viele Schlüssel hinzufügen. Wenn die Sitzung beendet wird, wird auch der Agent beendet, sodass kein Kennwort fest codiert gespeichert wird.
Schockiert, dass diese Antwort nach so langer Zeit nicht hier war!
quelle
Sie können dies auf sicherere Weise mit sshpass tun
Legen Sie Ihr Passwort ohne Verlauf fest
exportiere PS = dein_Kennwort ; history -d $ (history 1)
Legen Sie den Host-Alias wie oben in ~ / .ssh / config fest
Verwenden Sie ssh pass, um die Umgebungsvariable zu verwenden, und melden Sie sich mit einem einzigen Befehl auf dem gewünschten Computer an
sshpass -p $ PS ssh host_alias
In Ihrer Umgebung ist Ihr Kennwort gespeichert, und es besteht das Risiko, dass bei der Ausführung von Skripts dieses Kennwort verloren geht, wenn Sie nicht wissen, was Sie ausführen
quelle
sshpass -p $PS ...