Wie automatisiere ich die SSH-Anmeldung mit Passwort? Ich konfiguriere meine Test-VM, sodass die hohe Sicherheit nicht berücksichtigt wird. SSH wurde aus Sicherheitsgründen mit minimaler Konfiguration ausgewählt.
Ex)
echo password | ssh id@server
Das geht nicht.
Ich erinnere mich, dass ich dies mit einigen Tricks getan habe, die mich jemand geleitet hat, aber ich kann mich jetzt nicht mehr an den Trick erinnern, den ich verwendet habe ...
ssh
password
automation
Eonil
quelle
quelle
Antworten:
Verwenden Sie kein Passwort. Generieren Sie einen passwortlosen SSH-Schlüssel und übertragen Sie ihn auf Ihre VM.
Wenn Sie bereits ein SSH - Schlüssel haben, können Sie diesen Schritt überspringen ... Drücken Sie einfach , Enterfür den Schlüssel und den beiden Paßphrasen:
Kopieren Sie Ihre Schlüssel auf den Zielserver:
Versuchen Sie nun, sich auf dem Computer anzumelden
ssh 'id@server'
, und checken Sie ein:um sicherzustellen, dass wir keine zusätzlichen Schlüssel hinzugefügt haben, die Sie nicht erwartet haben.
Endlich überprüfen Sie die Anmeldung ...
Möglicherweise möchten Sie auch die Verwendung untersuchen,
ssh-agent
wenn Sie versuchen möchten, Ihre Schlüssel mit einer Passphrase zu schützen.quelle
quelle
ssh
vor der Verwendung einmalsshpass
.bash_history
im Klartext auf Ihrem Computer.history -r
den Befehl ausführen , um Ihren Verlauf zu löschen. Guter Punkt.Während die richtige Antwort auf Ihre Frage sshkey lautet , gibt es einen sichereren Weg - SSH-Schlüssel. Sie sind nur drei einfache Schritte von der Lösung entfernt:
Generieren Sie ein RSA-Schlüsselpaar :
Kopieren Sie es dann mit einem einfachen Befehl auf den Server :
Sie können sich jetzt ohne Passwort einloggen :
quelle
ssh-copy-id
.ssh-copy-id -i ~/.ssh/tatu-key-ecdsa user@host
Verwendung erwarten:
Beispiel:
quelle
-oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null
Befehl ssh hinzuzufügen, um zu vermeiden, dass die Maschine in known_hostsDies könnte für Sie nicht von Nutzen sein, aber Sie können es mit Perl tun:
quelle
Ich bin überrascht, dass niemand
plink
aus demputty-tools
Paket in Ubuntu erwähnt:Es ist auch unter Windows verfügbar und die Syntax ist größtenteils mit dem openssh-Client kompatibel.
quelle
putty-tools
PaketSSH Single Sign-On wird normalerweise mit der Authentifizierung mit öffentlichem Schlüssel und einem Authentifizierungsagenten durchgeführt. Sie können Ihren Test-VM-Schlüssel problemlos einem vorhandenen Authentifizierungsagenten hinzufügen (siehe Beispiel unten). Andere Methoden wie gssapi / kerberos existieren, sind jedoch komplexer.
sshpass
In Situationen, in denen
password
die einzige Authentifizierungsmethode verfügbar ist, kann sshpass verwendet werden, um das Kennwort automatisch einzugeben. Bitte beachten Sie insbesondere den Abschnitt SICHERHEITSHINWEISE auf der Manpage . In allen drei Optionen ist das Passwort irgendwann sichtbar oder im Klartext gespeichert :Anonymes Pipe (empfohlen von sshpass)
Es ist ziemlich umständlich in Bash, wohl einfacher mit Programmiersprachen. Ein anderer Prozess kann an Ihre Pipe / fd angehängt werden, bevor das Kennwort geschrieben wird. Das Zeitfenster ist recht kurz und beschränkt sich auf Ihre Prozesse oder Ihre Wurzel.
Umgebungsvariable
Sie und root können die Umgebungsvariablen Ihres Prozesses (dh Ihr Passwort) lesen, während sshpass ausgeführt wird (
cat /proc/<pid>/environ | tr '\0' '\n' | grep ^SSHPASS=
). Das Zeitfenster ist viel länger, aber immer noch auf Ihre eigenen Prozesse oder Root beschränkt, nicht auf andere Benutzer.Befehlszeilenargument (am wenigsten sicher)
Dies ist praktisch, aber weniger sicher, wie in der Manpage beschrieben. Befehlszeilenargumente sind für alle Benutzer sichtbar (z
ps -ef | grep sshpass
. B. ). sshpass versucht, das Argument auszublenden, aber es gibt immer noch ein Fenster, in dem alle Benutzer sehen können, dass Ihr Kennwort als Argument übergeben wurde.Randnotiz
Setzen Sie Ihre Bash- HISTCONTROL-Variable auf
ignorespace
oderignoreboth
und stellen Sie Ihren sensiblen Befehlen ein Leerzeichen voran . Sie werden nicht in der Geschichte gespeichert.SSH-Authentifizierung mit öffentlichem Schlüssel
Die Passphrase ist sehr wichtig. Jeder, der die private Schlüsseldatei erhält, kann sie ohne die Passphrase nicht verwenden.
Richten Sie den SSH-Authentifizierungsagenten ein
Verbinden Sie sich wie gewohnt
Der Vorteil ist, dass Ihr privater Schlüssel verschlüsselt ist und Sie die Passphrase nur einmal eingeben müssen (auch über eine sicherere Eingabemethode).
quelle
Sicher, dass Sie keine SSH-Schlüssel anstelle von Passwörtern verwenden möchten? Auf diese Weise ist es sowohl sicher als auch automatisch.
quelle
Je nach Ihren Automatisierungsanforderungen passt Ansible möglicherweise zu Ihnen. Es kann Dinge wie die Aufforderung zur Eingabe eines Passworts, die Aufforderung zur Eingabe eines Sudo-Passworts, verschiedene Arten der Änderung der Verwendung und die sichere Verwendung verschlüsselter Geheimnisse (Tresor) verwalten.
Wenn das nicht passt, würde ich Expect vorschlagen, wie in einer anderen Antwort vorgeschlagen.
quelle