Jalankan ssh dengan otentikasi kata sandi melalui prompt perintah windows

93

Saya perlu menjalankan ssh dari baris perintah windows dengan memberikan kata sandi secara non interaktif. Saya bisa mengimplementasikan otentikasi berbasis kunci dan mampu menjalankan perintah ssh seperti

ssh <user>@<host> <command>

Apakah ada perintah seperti itu

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

masukkan deskripsi gambar di sini

Saya tidak tahu apakah itu layak. Namun, mungkin ada beberapa solusi untuk hal yang sama. Beri saya beberapa ide untuk mencapai hal yang sama.

Balachandar
sumber
2
Menggunakan otentikasi berbasis kunci adalah ide yang jauh lebih baik.
Greg Inozemtsev
1
Ya saya memiliki persyaratan untuk otentikasi berbasis kata sandi juga.
Balachandar
12
@GregInozemtsev sementara itu kasusnya, terkadang muncul kebutuhan untuk skrip cepat dan kotor untuk melakukan sesuatu seperti ini, terutama dalam pengujian atau lingkungan lain di mana keamanan murni tidak diperlukan.
TheJosh
Saya tidak tahu mengapa kehilangan opsi dasar itu. Saya mencari -pw superputty (putty) perintah :( Saya kira saya akan pindah ke kunci ssh sebagai gantinya.
m3nda

Jawaban:

159

The sshpass utilitas dimaksudkan untuk persis ini. Pertama, instal sshpass dengan mengetik perintah ini:

sudo apt-get install sshpass

Kemudian tambahkan perintah ssh / scp Anda dengan

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

Program ini paling mudah dipasang saat menggunakan Linux.

Pengguna harus mempertimbangkan untuk menggunakan otentikasi kunci publik SSH yang lebih aman (dengan sshperintah) sebagai gantinya.

Anish Bhatt
sumber
8
Bekerja untuk rsync juga.
TheJosh
15
Karena judulnya tidak menyertakan "windows" dan itu menunjukkan tinggi dalam daftar ketika mencari ini untuk Linux / Unix / Mac. Jadi, menjawab pertanyaan ini di sini menghemat waktu.
Frobbit
1
Bekerja dengan baik di Mac OS X. Saya menginstal sshpass melalui sudo port install sshpass. Padahal, jika ada masalah saat masuk karena hal lain, sshpass cenderung gagal secara diam-diam (tidak ada pesan kesalahan). Jadi debug perintah tanpa sshpassterlebih dahulu; lalu tambahkan sshpass -p blah(dll.).
RedRedSuit
5
Anda harus menyadari bahwa perintah shell yang dieksekusi disimpan (misalnya di '.bash_history') ..
Benjamin
5
Anish - Penulis meminta windows, Anda memberi opsi untuk linux.
arka.b
24

Bagaimana dengan skrip ekspektasi ini?

#!/usr/bin/expect -f
spawn ssh root@myhost
expect -exact "root@myhost's password: "
send -- "mypassword\r"
interact
Illarion Kovalchuk
sumber
Dikatakan saya tidak memiliki skrip yang diharapkan
Sameer Sawla
expectterkenal diremehkan!
Frerich Raabe
6

Solusi Windows

  1. Instal PuTTY
  2. tekan Windows-Key + R
  3. Memasukkan putty.exe -ssh [username]@[hostname] -pw [password]
optimiertes
sumber
2

Solusi PowerShell

Menggunakan 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
sumber