2012-08-25 96 views
78

我需要執行sshwindows命令行通過以非交互方式提供密碼。我可以實現基於密鑰的認證和能夠執行就像通過Windows命令提示符通過密碼驗證執行ssh

ssh <user>@<host> <command> 

的SSH命令有沒有像

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

enter image description here

我不知道這是否是可行的任何命令。但是,也可以有相同的解決方法。拋出一些想法來實現這一點。

+2

使用基於密鑰的身份驗證是一個更好的主意。 –

+0

是的,我也需要基於密碼的身份驗證。 – Balachandar

+9

@GregInozemtsev雖然這種情況下,有時需要一個快速和骯髒的腳本來做這樣的事情,特別是在不需要純安全性的測試或其他環境中。 – TheJosh

回答

158

sshpass實用程序就是爲了這個。首先,通過鍵入以下命令進行安裝sshpass:

sudo apt-get install sshpass 

然後前面加上您的SSH/SCP命令

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

這個程序是最容易使用Linux時安裝。

用戶應考慮使用SSH更安全的公鑰認證(使用ssh命令)。

+8

也適用於rsync – TheJosh

+0

不完全確定一個linux實用程序(可以爲Cygwin製作,但是這是一個完全不同級別的系統管理)獲得64個最高票數......而Plink完全是這樣做的OP詢問並且不需要任何額外的工作(並且可能已經在他們的系統中首先安裝)得到1. 我傾向於相信Stack這些東西,所以如果有充分的理由跳過令人討厭,偶爾也會令人瘋狂......呃......我真的很好奇爲什麼它會得到這麼多的愛。 – OhkaBaka

+14

因爲該標題不包括「窗口」,並且當它在Linux/Unix/Mac上搜索時顯示在列表中。所以,在這裏回答這個問題可以節省時間。 – Frobbit

24

這個expect腳本怎麼樣?

#!/usr/bin/expect -f 
spawn ssh [email protected] 
expect -exact "[email protected]'s password: " 
send -- "mypassword\r" 
interact 
+0

它說我沒有期望腳本 –

+0

'expect'被低估了! –