2012-10-26 90 views
2

我的開發人員計算機上運行着一臺虛擬機,並且需要通過SSH通過一個ant構建腳本將它rsync文件通過SSH「部署」。在生產中,安全是一個問題,但我真的不關心在與本地計算機上的開發虛擬機進行通信時的安全SSH實踐。使用密碼的螞蟻腳本通過SSH進行的Rsync

我可以創建一個證書並將其安裝在我的SSH密鑰中,但這有點煩人。我寧願只是通過螞蟻腳本將密碼發送到rsync,並將其稱爲一天。 (編輯 - 如果你沒有示例,如果你不能處理這個問題,讓我們假設這個服務器不在我的控制之下,他們的惡意系統管理員拒絕讓我用任何理由用SSH密鑰登錄。 ?他只是個瘋子!)

有沒有什麼辦法可以在沒有編輯你的ssh配置的情況下調用SSH,或者更具體的rsync在非交互模式下?換句話說,只需提供密碼?

回答

4

我碰巧已經想出了一個解決方案,但這不是很容易,所以我想分享它。

基本上,我使用了一個名爲「expect」的命令行程序來將我的密碼填充到rsync的交互模式中。我也不想把它寫成腳本,所以我把它壓縮成一個單一的命令。這也適用於ssh以及rsync,如果你出於某種原因需要這些。

也許有更好的辦法,但這似乎工作正常。

192.168.64.131顯然是我本地虛擬機的IP地址。用您的ssh登錄&通行證替換login_name和login_password。

expect -c 'spawn rsync -avz -e ssh ./ [email protected]:/var/www/auth/; expect "*?assword:*" {send "login_password\r"; interact};' 
+0

這個偉大的工程! (有一個邪惡的管理員誰不允許pubkey身份驗證) – AaL

+0

很高興聽到它。正如@Mark O'Connor指出的那樣,只要記住這是非常不安全的。確保符合您的用例要求。 – DougW

+0

作品!非常感謝 – siddhusingh

-2

使用SSH密鑰更容易和更安全。一個例子在下面的答案給出:

+0

Yeeeep,使用證書。同樣,不要說這不是大多數時候這樣做的安全和正確的方式。但是,就我而言,我明確有意避免它。誰知道?也許我們正在處理不接受密鑰的第三方服務器,或者出於某種原因無法安裝我的證書。或者把它叫做智力好奇心。要點是,問題是關於不想要SSH密鑰的答案。 – DougW