SSH-Login mit Klartext-Passwort als Parameter? [duplizieren]

Diese Frage hat hier bereits Antworten :

Kommentare

  • serverfault.com/ Fragen / 241588 / …
  • Der sichere Weg besteht darin, einen SSH-Schlüssel mit ssh-keygen -t rsa -b 2048 zu generieren und diesen Schlüssel zu verwenden Melden Sie sich alternativ beim Remote-Server an. Sie können " sshpash " installieren und anschließend Ihren Computer mit dem folgenden Befehl sshpass -p ' Passwort ' ssh Benutzername @ Servername
  • Die Frage, an die umgeleitet wird, ist nicht dieselbe wie diese. Dieser fragt nach einer Möglichkeit, eine interaktive Sitzung zu initiieren.

Antwort

Installieren Sie unter Ubuntu das sshpass Paket, dann verwenden Sie es wie folgt:

sshpass -p "YourPassword" ssh user@host 

sshpass Unterstützt auch die Übergabe des Tastatur-interaktiven Kennworts aus einer Datei oder einer Umgebungsvariablen. Dies ist möglicherweise eine geeignetere Option in Situationen, in denen Sicherheit relevant ist. Weitere Informationen finden Sie unter man sshpass .

Kommentare

  • Gedanken werden nicht empfohlen und sind keine gute Praxis. Dies ist genau die Antwort auf die Frage. Verwenden Sie die oben angegebenen Schlüssel. Aber wenn es ' ein großes technisches Problem gibt, ist dies die Lösung, die gefragt wird.
  • Ich stimme nur der Antwort zu. Nicht " rational, warum ' Sie dies nicht auf diese Weise tun, sondern " Antworten. Nur die Antwort. Daher habe ich dich positiv bewertet 🙂
  • Ich hasse ' sshpass nicht vollständig, tatsächlich benutze ich ' es auf vorübergehender Basis. Die Verwendung von ' -p ' ist jedoch unnötig und unerwünscht. Setzen Sie zuerst die Variable SSHPASS und führen Sie dann sshpass -e ssh < ssh-args > aus.
  • @Brad If Wenn Sie root auf der Box haben, können Sie sshpass mit yum --enablerepo=epel install sshpass installieren.
  • Diese Antwort funktioniert auch auf Manjaro ( Arch-basiert).

Antwort

Wenn Sie alternativ ein Kennwort in ein Skript oder ssh Befehlszeile oder Nur-Text-Datei, dann „sind Sie VIEL Verwenden Sie stattdessen besser einen ssh -Schlüssel. In beiden Fällen jeder, der Zugriff auf das Konto hat, in dem das ssh -Client-Skript gespeichert ist wäre in der Lage, dies zu verwenden, um in den Server zu gelangen, aber zumindest im Fall eines ssh -Schlüssels unterstützt OpenSSH ihn ordnungsgemäß, Sie gewähren keinen Zugriff auf andere Weise als ssh, es kann bei Bedarf leichter widerrufen werden, etc …

Sie müssen erklären, warum Sie keinen SSH-Schlüssel verwenden müssen.

Verwenden Sie auch einen erzwungenen Befehl (command="..." in der -Datei), sodass der Client nur Zugriff hat, um den von ihm benötigten Befehl auf dem Server und nicht auf einer vollständigen Shell auszuführen.

Kommentare

  • Der Remote-Host ist eine VM, die von anderen Ingenieuren verwendet wird und keine anderen Ressourcen als Kopien des Testautomatisierungscodes riskiert. Nehmen wir zum Zwecke der Diskussion an, ich habe nur Zugriff auf die Skriptdatei und keine SSH-Schlüssel in ~/.ssh/.
  • Diese ' ist hoch erfunden. Ein etwas weniger ausgeklügeltes Szenario wäre, dass ein fehlgeleiteter Administrator des Servers die SSH-Schlüsselanmeldungen deaktiviert (PubkeyAuthentication no in /etc/ssh/sshd_config). In beiden Fällen besteht die bessere Lösung darin, das zugrunde liegende Problem zu beheben, das Sie daran hindert, SSH-Schlüsselanmeldungen durchzuführen. Andernfalls konsultieren Sie die Frage, auf die Gilles hinweist.
  • @MichaelM Sie müssen in . Fügen Sie den Schlüssel hinzu, wo immer Sie möchten, und verwenden Sie ssh -i /path/to/id_rsa
  • Die Antwort von Stackexchanges sollte die Frage beantworten und nicht argumentieren, dass die Frage korrekt ist. Ich habe ein gültiges Szenario dafür. Ich muss meine ~/.ssh/authorized_keys in 95 verschiedenen Feldern einrichten. Ich habe ein Skript geschrieben, um meine Datei „authorized_keys“ automatisch zu übertragen, aber trotzdem zur Eingabe des Kennworts aufgefordert. Es wäre schöner, wenn das Skript am Anfang einmal nach dem Passwort fragen würde.
  • Ich stimme flarn2006 zu.Sie können nicht sagen, " diese Frage ist dumm, daher ist hier ' eine Antwort auf eine andere Frage, weil ich denke, dass sie ist eine bessere Frage und ich kenne die Antwort darauf ".

Antwort

Zunächst empfehle ich, wie die anderen Befragten, nur die Verwendung von ssh-Schlüsseln. Ich gehe jedoch davon aus, dass die Person, die den Server steuert, die Verwendung der SSH-Schlüsselauthentifizierung einfach nicht zulässt und Sie die Kennwortauthentifizierung verwenden müssen.

Sie können ControlMaster und ControlPath verwenden.

Sei A der Server, auf den Sie keinen Zugriff haben (denken Sie an einen Continuous Integration Server wie Bamboo), und C der Remote-Host, auf dem Ubuntu ausgeführt wird.

Nun sei B ein Computer, den Sie steuern. Wenn Sie können Wenn Sie keinen geeigneten B-Computer bereitstellen, funktioniert diese Antwort nicht.

  1. Erstellen Sie ein Schlüsselpaar und fügen Sie den öffentlichen Teil der Datei „Authorized_keys“ von B hinzu. Geben Sie A den privaten Schlüssel. Jetzt können Sie sich von A ohne Passwort bei B anmelden.
  2. Auf B manuell ssh -M -S /tmp/controlpath C und geben Sie Ihr Passwort an der Eingabeaufforderung ein. Danach sollten Sie sich von A ohne Kennwort bei C anmelden können ssh -S /tmp/controlpath C.

In das Skript auf A können Sie ssh B ssh C dostuff.

Bei jedem Neustart von B müssen Sie die Verbindung ssh -M -S /tmp/controlpath C.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.