Lösung 1:
Nein, es gibt keine Methode zum Angeben oder Bereitstellen des Kennworts in der Befehlszeile auf nicht interaktive Weise für die SSH-Authentifizierung mithilfe eines integrierten Openssh-Mechanismus. Zumindest keine, die ich kenne. Sie könnten Ihr Passwort fest in das erwartete Skript codieren, aber das ist auch keine gute Lösung.
Sie würden auf jeden Fall Schlüsselpaare für die passwortlose Authentifizierung verwenden wollen, wie Michael sagte, am Ende ist der private Schlüssel so ziemlich ein großes Passwort in der Datei.
Lösung 2:
Um die Reihe von Kommentaren zu vermeiden:Ja, das ist unsicher (nicht einmal wohl unsicher). Ich würde Ihnen dringend empfehlen, dies nur in einer Laborsituation in einem isolierten Netzwerk oder einer ähnlichen Situation zu tun, die keine Produktionsserver oder möglicherweise Produktionsserver ohne vollständiges Zurücksetzen/Formatieren umfasst.
Ich wollte dies einrichten, da ich nicht glaube, dass mein 2950-Switch private/öffentliche Schlüssel unterstützt, und ich hoffe, dieses Wissen irgendwann zu erlangen, aber ich bin noch nicht so weit.
Mit einem Alias und sshpass kann dies erreicht werden.
- Installieren Sie sshpass
- Ändern Sie Ihre .ssh/config Datei, um den in der Frage aufgeführten Benutzernamen aufzunehmen
- Fügen Sie Ihrem Terminal einen Alias hinzu (ich habe .bashrc verwendet und würde gegen globale Einstellungen empfehlen)
- Alias verwenden, um sich beim Ziel anzumelden
Mein Beispiel-Alias lautet:
alias ssc='sshpass -pcisco ssh'
Wobei „cisco“ das Passwort ist. Beachten Sie, dass zwischen dem -p und dem Passwort kein Leerzeichen steht.
Verwendung ist (bezieht sich auf die Frage):
ssc server1
Hinweis:Dies beantwortet die Frage im Titel nur für diejenigen, die Suchmaschinen verwenden. Wenn Sie Server wie im Fragebeispiel verwenden, sollten private/öffentliche Schlüsselpaare und nicht diese Antwort verwendet werden
Lösung 3:
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 zuerst Ihren Schlüssel :
ssh-keygen
Kopieren Sie dann den Schlüssel auf Ihren Servern/Desktops:
ssh-copy-id -i .ssh/id_rsa.pub [email protected]:
Das ist alles. Sie werden nie wieder nach dem Passwort gefragt.
Ich empfehle auch, die Passwortautorisierung im Allgemeinen zu entfernen, aber das liegt an Ihnen.
Lösung 4:
Es gibt keine Möglichkeit, dies mit ssh zu tun, es ist so unsicher, wie es nur sein kann.
Wie Danila erwähnte, könnten Sie Expect-Skripte verwenden, 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 wird der Anmeldedatenaustausch an Ihren lokalen Agenten weitergeleitet, ohne dass Sie Ihren privaten Schlüssel kopieren müssen.
Lösung 5:
Ich verwende dieses Skript von ~/.local/bin
Verzeichnis
#!/usr/bin/bash
ORIG_SSH=/usr/bin/ssh
HOST=$1
SSHPASS=$(grep -Pzo "Host $HOST"'\s*\n((?!Host).*\n)*#PS\s(\N+)\n' ~/.ssh/config|tail -n 2|head -n 1 | sed 's/#PS //')
if [ -n $SSHPASS ]; then
export SSHPASS
sshpass -e $ORIG_SSH [email protected]
else
$ORIG_SSH [email protected]
fi
Dadurch kann ich die Passphrase als #PS <password>
angeben in .ssh/config
Datei.
Aber wie jeder sagt, ist es besser, ssh-keys
zu verwenden mit ssh-agent
wenn es möglich ist