Führen Sie ssh mit Kennwortauthentifizierung über die Windows-Eingabeaufforderung aus


93

Ich muss ssh über die Windows-Befehlszeile ausführen , indem ich das Kennwort nicht interaktiv gebe. Ich könnte die schlüsselbasierte Authentifizierung implementieren und die ssh-Befehle genauso ausführen

ssh <user>@<host> <command>

Gibt es irgendwelche Befehle wie

ssh <user>@<host> -P <password> <command>

Geben Sie hier die Bildbeschreibung ein

Ich weiß nicht, ob es machbar ist. Es kann jedoch einige Probleme geben. Wirf mir ein paar Ideen, um dasselbe zu erreichen.


2
Die Verwendung der schlüsselbasierten Authentifizierung ist eine viel bessere Idee.
Greg Inozemtsev

1
Ja, ich habe auch eine Anforderung für die passwortbasierte Authentifizierung.
Balachandar

12
@GregInozemtsev Während dies der Fall ist, entsteht manchmal die Notwendigkeit eines schnellen und schmutzigen Skripts, um so etwas zu tun, insbesondere in einer Test- oder anderen Umgebung, in der keine reine Sicherheit erforderlich ist.
TheJosh

Ich weiß nicht, warum diese grundlegende Option fehlt. Ich suchte nach dem Befehl -pw superputty (putty) :( Ich denke, ich werde stattdessen zu ssh-Schlüsseln wechseln.
m3nda

Antworten:



160

Das Dienstprogramm sshpass ist genau dafür gedacht. Installieren Sie zuerst sshpass, indem Sie diesen Befehl eingeben:

sudo apt-get install sshpass

Stellen Sie dann Ihren Befehl ssh / scp mit voran

sshpass -p '<password>' <ssh/scp command>

Dieses Programm ist unter Linux am einfachsten zu installieren.

Benutzer sollten stattdessen die sicherere Authentifizierung mit öffentlichem Schlüssel von SSH (mit dem sshBefehl) in Betracht ziehen .


8
Funktioniert auch für rsync.
TheJosh

15
Weil der Titel keine "Fenster" enthält und bei der Suche nach Linux / Unix / Mac ganz oben in der Liste steht. Die Beantwortung dieser Frage hier spart also Zeit.
Frobbit

1
Funktionierte hervorragend unter Mac OS X. Ich habe sshpass über installiert sudo port install sshpass. Wenn jedoch aufgrund eines anderen Problems ein Problem beim Anmelden auftritt, schlägt sshpass in der Regel stillschweigend fehl (keine Fehlermeldung). Debuggen Sie den Befehl also ohne sshpassvorher; dann hinzufügen sshpass -p blah(etc.).
RedRedSuit

5
Sie sollten sich bewusst sein, dass ausgeführte Shell-Befehle gespeichert werden (zum Beispiel in '.bash_history').
Benjamin

4
Anish - Der Autor hat nach Windows gefragt, Sie haben die Option für Linux angegeben.
Arka.b

24

Was ist mit diesem Erwartungsskript?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact

Es heißt, ich habe nicht das erwartete Skript
Sameer Sawla

expectwird notorisch unterschätzt!
Frerich Raabe

4

Windows- Lösung

  1. Installieren Sie PuTTY
  2. Drücken Sie Windows-Key + R
  3. Eingeben putty.exe -ssh [username]@[hostname] -pw [password]

2

PowerShell-Lösung

Verwenden von Posh-SSH:

New-SSHSession -ComputerName 0.0.0.0 -Credential $cred | Out-Null
Invoke-SSHCommand -SessionId 1 -Command "nohup sleep 5 >> abs.log &" | Out-Null
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.