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.


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).


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

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]

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.