Thực thi ssh với xác thực mật khẩu qua dấu nhắc lệnh của windows


93

Tôi cần thực thi ssh từ dòng lệnh windows bằng cách cung cấp mật khẩu theo cách không tương tác. Tôi có thể triển khai xác thực dựa trên khóa và có thể thực hiện các lệnh ssh giống như

ssh <user>@<host> <command>

Có lệnh nào như

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

nhập mô tả hình ảnh ở đây

Tôi không biết nó có khả thi không. Tuy nhiên, có thể có một số công việc tương tự. Nộp cho tôi một số ý tưởng để đạt được điều tương tự.


2
Sử dụng xác thực dựa trên khóa là một ý tưởng tốt hơn nhiều.
Greg Inozemtsev

1
Vâng, tôi cũng có yêu cầu xác thực dựa trên mật khẩu.
Balachandar

12
@GregInozemtsev trong trường hợp đó, đôi khi nhu cầu về một tập lệnh nhanh và bẩn để thực hiện điều gì đó như thế này, đặc biệt là trong môi trường thử nghiệm hoặc môi trường khác không yêu cầu bảo mật thuần túy.
TheJosh

Tôi không hiểu tại sao lại thiếu tùy chọn cơ bản đó. Tôi đang tìm kiếm lệnh -pw superputty (putty) :( Tôi đoán thay vào đó tôi sẽ chuyển sang phím ssh.
m3nda

Câu trả lời:



159

Các sshpass tiện ích có ý nghĩa cho chính xác này. Đầu tiên, cài đặt sshpass bằng cách gõ lệnh này:

sudo apt-get install sshpass

Sau đó thêm lệnh ssh / scp của bạn với

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

Chương trình này dễ cài đặt nhất khi sử dụng Linux.

Người dùng nên cân nhắc sử dụng xác thực khóa công khai an toàn hơn của SSH (bằng sshlệnh).


8
Cũng hoạt động cho rsync.
TheJosh

15
Bởi vì tiêu đề không bao gồm "cửa sổ" và nó hiển thị cao trong danh sách khi tìm kiếm này cho Linux / Unix / Mac. Vì vậy, trả lời câu hỏi này ở đây tiết kiệm thời gian.
Frobbit

1
Hoạt động tuyệt vời trong Mac OS X. Tôi đã cài đặt sshpass qua sudo port install sshpass. Mặc dù vậy, nếu có vấn đề khi đăng nhập do nguyên nhân khác, sshpass có xu hướng không thành công một cách âm thầm (không có thông báo lỗi). Vì vậy, gỡ lỗi lệnh mà không có sshpassđầu tiên; sau đó thêm sshpass -p blah(v.v.).
RedRedSuit

5
Bạn nên biết rằng các lệnh shell đã thực thi được lưu trữ (ví dụ: trong '.bash_history') ..
Benjamin

5
Anish - Tác giả yêu cầu windows, bạn đã cung cấp tùy chọn cho linux.
arka.b

24

Điều gì về kịch bản mong đợi này?

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

Nó nói tôi không có hy vọng kịch bản
Sameer Sawla

expectnổi tiếng là đánh giá thấp!
Frerich Raabe

5

Giải pháp Windows

  1. Cài đặt PuTTY
  2. nhấn Windows-Key + R
  3. Đi vào putty.exe -ssh [username]@[hostname] -pw [password]

2

Giải pháp PowerShell

Sử dụng 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
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.