Ich benutze Ubuntu 11.10. Ich verwende ssh
für die Verbindung mit vielen Servern täglich, damit ich ihre Parameter in die .ssh/config
Datei wie folgt setzen:
Host Home
User netmoon
Port 22
HostName test.com
Gibt es eine Möglichkeit, Kennwörter für jede Verbindung in diese Datei einzufügen, sodass das Terminal, wenn der Server nach dem Kennwort fragt, sein Kennwort eingibt und es an den Server sendet?
Ich brauche das, weil ich manchmal vom PC wegstehe und wenn ich zurückgehe, ein Passwort eingebe und auf Enterdas Terminal drücke, sagt CONNECTION CLOSED
.
PS Ich möchte kein öffentliches / privates Schlüsselpaar verwenden.
command-line
bash
ssh
remote-access
Netmoon
quelle
quelle
SSH_ASKPASS
.Antworten:
Sicherheit aus Bequemlichkeitsgründen auszutauschen, hört nie gut auf ...
Könnten Sie
ssh-copy-id
aus demopenssh-client
Paket verwenden?Von
man ssh-copy-id
:quelle
Wenn Sie ein öffentliches / privates Schlüsselpaar nicht wirklich verwenden möchten, können Sie ein
expect
Skript schreiben , um das Kennwort abhängig von der Zieladresse automatisch für Sie einzugeben.Bearbeiten: Was ich meine ist, dass Sie ein Skript haben können, das
expect
zum einen das Passwort für Sie eingibt und zum anderen das Passwort für einen bestimmten Benutzer und Host aus einer Konfigurationsdatei liest. Das folgende Python-Skript funktioniert beispielsweise für das Sonnentages-Szenario:und das Konfigurationsdateiformat wäre wie folgt:
Hinweis: Wie bereits erläutert, müsste das Python-Skript wesentlich komplexer sein, um alle möglichen Fehler- und Fragenachrichten von ssh und alle möglichen URLs zu verarbeiten (im Beispiel wird davon ausgegangen, dass dies in etwa der Fall ist
user@host
, aber der Benutzerteil ist nicht ' Die meiste Zeit nicht verwendet), aber die Grundidee wäre immer noch die gleiche. In Bezug auf die Konfigurationsdatei können Sie eine andere Konfigurationsdatei verwenden oder.ssh/config
Ihren eigenen Code verwenden und schreiben, um diese Datei zu analysieren und das Kennwort für einen bestimmten Benutzer und Host abzurufen.quelle
Dafür gibt es auch ein
sshpass
Programm. Wie benutzt man:sshpass -p MyPa55word ssh [email protected]
quelle
sshpass
anstelle vonsshpass
) voranstellen, haben Sie gerade Ihr Kennwort ("MyPa55word") in der Verlaufsdatei Ihrer Shell gespeichert..ssh/config
, warum nicht auch in der Shell-Geschichte?brew install https://raw.githubusercontent.com/kadwanev/bigboybrew/master/Library/Formula/sshpass.rb
. Mehr: gist.github.com/arunoda/7790979read -s password; sshpass -p "$password" ssh [email protected]
. Dadurch wird verhindert, dass das Kennwort im Verlauf angezeigt wirdWie wäre es mit ProxyCommand:
Sie können
ssh -W
anstelle vonnc
auch verwenden:quelle
-W
Option funktioniert es nicht wie erwartet . Haben Sie eine Problemumgehung?test.com
Anforderung eines Passworts zurHome
Anforderung eines Passworts zu verschieben. Was ist der Punkt? Was ist der Trick, um es zum Laufen zu bringen?Nein, das ist leider nicht möglich.
Die einzige echte Alternative besteht darin, private Schlüssel zu verwenden, aber Sie haben gesagt, Sie möchten nicht (warum nicht?).
quelle
Sie können einen einfachen ssh-Skriptersatz in / usr / local / bin erstellen:
Und dann können Sie in Ihrer ~ / .ssh / config-Datei verwenden
quelle
Ich verwende eine Anwendung von VanDyke Software namens SecureCRT .
http://www.vandyke.com/products/securecrt/
Es ist nicht kostenlos, aber sehr günstig. Ich benutze es seit Jahren (unter Windows oder mit Wine) für den Remotezugriff, die Terminalemulation und die (verteilte) Netzwerkverwaltung. Sie veröffentlichten schließlich Anfang 2011 eine native Linux-Version davon.
Es werden komplexe Anmeldeeinstellungen (oder Skripte), gespeicherte Kennwörter (oder Zertifikate), mehrere Sitzungen mit Registerkarten usw. unterstützt.
Beim Start können Sie aus einer strukturierten Liste (Baumansicht) gespeicherter entfernter (oder lokaler) Maschinen auswählen, welches entfernte Ziel (und welches Protokoll) Sie verwenden möchten, oder einfach eine Verbindung erstellen (die dann gespeichert wird).
Ich fand es besonders nützlich für entfernte Standorte mit erweiterter Authentifizierung, nicht standardmäßigen Ports oder Firewall-Zugriffsverhandlungen.
Wenn Sie häufig Fernzugriff durchführen (Teil Ihrer Hauptrolle), rechtfertigt diese Anwendung ihre Kosten im ersten Nutzungsmonat.
quelle
Bei Beantwortung der von Ihnen gestellten Frage ist es nicht möglich, ein Standardkennwort in einer ssh-Konfigurationsdatei zu konfigurieren.
Aber wenn es tatsächlich so ist, wie Sie sagen, "weil ich manchmal vom PC wegstehe und wenn ich zurückgehe, ein Passwort eingebe und auf Enterdas Terminal drücke
CONNECTION CLOSED
" , warum dann nicht stattdessen verhindern, dass die Sitzung geschlossen wird? SSH kann Verbindungen für Sie am Leben erhalten.quelle
Danke, Arek für die Inspiration ...
Anstatt einen anderen Shell-Prozess auszuführen, ist dies nur eine Funktion, die in der aktuellen Bash-Shell ausgeführt wird. Es führt einen einzelnen
awk
Befehl aus, um die Konfigurationsdatei zu analysieren und herauszufinden, ob das Kennwort aus einer Shell-Variablen oder aus dem im Klartext geschriebenen Kennwort in die ssh-Konfigurationsdatei übernommen werden soll (mitawk
einereval
anstelle vondescribe
aufgrund von Problemen getroffenen Verwendungdescribe
).Ich habe so viele Möglichkeiten ausprobiert, ProxyCommand
sshpass
direkt in einerssh
Konfigurationsdatei zu verwenden, aber nichts schien wie erwartet zu funktionieren, außer wenn ich mich über RSA an einer Box anmelden konnte. Aber dann musste ich ein Passwort senden, um mein verschlüsseltes Verzeichnis zu öffnen. Die folgende Funktion scheint jedoch in allen Fällen für mich zu funktionieren, auch für Cygwin.Dann
~/.ssh/config
sieht ein Abschnitt so aus:Wenn
#Passvar
im Konfigurationsabschnitt ein vorhanden ist, wird das überschrieben#Password
.$MYPASS_ENVVAR
ist die Umgebungsvariable, die Ihr Passwort enthält.Genießen!
quelle
Die Antwort von @BrunoPereira auf diese Frage zeigt eine alternative Methode, um eine Verbindung herzustellen, ohne explizit ein Kennwort einzugeben und ohne ssh-Schlüssel.
Sie können ein Skript, einen Alias oder eine Funktion in Ihrem erstellen,
~/.bashrc
um diesen Befehl schnell auszuführen.Offensichtlich gibt es Sicherheitsaspekte, die Sie bei diesem Ansatz berücksichtigen sollten.
quelle
Hier ist meine ausführliche Variation der Antwort von @ ArekBurdach. Es bietet folgende Erweiterungen:
ssh
Befehlszeile befinden. dh es unterstützt auch diessh <args> <host> <commands>
Syntaxssh
ssh_config
scp
auch dafürssh-wrapper
scp-wrapper
Installation
Definieren Sie Aliase in Ihrem
~/.bashrc
:Aufbau
Beschwert sich mit der
IgnoreUnknown
Direktivessh
nicht über eine neu eingeführtePassword
Direktive, so können wir (im Gegensatz zu @ ArekBurdachs Antwort) diese als "echte" Konfiguration erscheinen lassen. Wenn Ihnen das nicht gefällt, ist es trivial, das Skript wieder in das auskommentierte zu ändern.quelle
Wenn Sie keinen direkten Zugriff auf das Schlüsselpaar haben, können Sie das Kennwort auf Ihrem lokalen Computer verschlüsseln.
Die Möglichkeit besteht darin, Ihr Kennwort zusätzlich zu @Eric Woodruffs ProxyCommand mit einem Schlüssel zu verschlüsseln.
Eine Möglichkeit zum Kombinieren ist die Verwendung von Pipe:
wo
quelle
Es gibt eine kleine Variante eines im Blog beschriebenen Weges zur Verwendung,
sshpass
die hier zu finden ist . Vorausgesetzt, Sie haben ein gpg-verschlüsseltes Passwort (wie dies im Blog beschrieben wird), können Sie so etwas tun:und speichern Sie diesen Befehl einfach als Alias in Ihrem
.bashrc
.Wenn Sie durch diese Verbindung tunneln möchten, können Sie so etwas tun
quelle