Wykonaj ssh z uwierzytelnianiem hasłem za pomocą wiersza poleceń systemu Windows

93

Muszę wykonać ssh z wiersza poleceń systemu Windows , podając hasło w sposób nieinteraktywny. Mógłbym zaimplementować uwierzytelnianie oparte na kluczach i móc wykonywać polecenia ssh tak samo

ssh <user>@<host> <command>

Czy są jakieś polecenia, takie jak

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

wprowadź opis obrazu tutaj

Nie wiem, czy jest to wykonalne. Jednak można obejść to samo. Podaj mi kilka pomysłów, aby osiągnąć to samo.

Balachandar
źródło
2
Korzystanie z uwierzytelniania opartego na kluczach jest znacznie lepszym pomysłem.
Greg Inozemtsev,
1
Tak, mam również wymóg uwierzytelniania za pomocą hasła.
Balachandar
12
@GregInozemtsev W tym przypadku czasami pojawia się potrzeba, aby szybki i brudny skrypt zrobił coś takiego, szczególnie w środowisku testowym lub innym, w którym czyste bezpieczeństwo nie jest wymagane.
TheJosh
Nie rozumiem, dlaczego brakuje tej podstawowej opcji. Szukałem polecenia -pw superputty (putty) :( Chyba
przejdę

Odpowiedzi:

159

Narzędzie sshpass jest przeznaczone właśnie do tego. Najpierw zainstaluj sshpass, wpisując to polecenie:

sudo apt-get install sshpass

Następnie dodaj polecenie ssh / scp przedrostkiem

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

Ten program jest najłatwiejszy do zainstalowania w systemie Linux.

Zamiast tego użytkownik powinien rozważyć użycie bezpieczniejszego uwierzytelniania za pomocą klucza publicznego SSH (z sshpoleceniem).

Anish Bhatt
źródło
8
Działa również dla rsync.
TheJosh
15
Ponieważ tytuł nie zawiera „okien” i pojawia się wysoko na liście podczas wyszukiwania tego dla Linux / Unix / Mac. Odpowiedź na to pytanie oszczędza więc czas.
Frobbit
1
Działał świetnie w Mac OS X. Zainstalowałem sshpass przez sudo port install sshpass. Jeśli jednak występuje problem z logowaniem z innego powodu, sshpass zwykle kończy się niepowodzeniem (brak komunikatu o błędzie). Więc debuguj polecenie bez sshpasswcześniejszego; następnie dodaj sshpass -p blah(itp.).
RedRedSuit
5
Powinieneś być świadomy, że wykonane polecenia powłoki są zapisywane (na przykład w '.bash_history') ..
Benjamin,
5
Anish - autor poprosił o okna, dałeś opcję dla linuxa.
arka.b
24

A co z tym spodziewasz się scenariusza?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
Illarion Kovalchuk
źródło
Mówi, że nie mam scenariusza oczekiwania
Sameer Sawla
expectjest notorycznie niedoceniany!
Frerich Raabe
5

Rozwiązanie Windows

  1. Zainstaluj PuTTY
  2. naciśnij Windows-Key + R
  3. Wchodzić putty.exe -ssh [username]@[hostname] -pw [password]
optimiertes
źródło
2

Rozwiązanie PowerShell

Korzystanie 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
Owain Esau
źródło