2014-04-11 43 views
0

我正在編寫一個使用rsync的腳本,並且我希望它在SSH密鑰有密碼時錯誤輸出,告訴用戶使用非密碼保護密鑰(而不是因爲腳本在後臺運行)。錯誤輸出而不是使用SSH請求密碼短語

但是,我嘗試過的SSH都沒有這樣做,並且我在man頁面中找不到任何東西。

禁用SSH密碼提示的最佳方法是什麼?

+0

是,禁用密碼認證,公鑰認證 –

+0

顯然不是密碼短語,對不起沒有仔細閱讀。由於用戶會執行腳本,我是否正確地假設腳本能夠訪問用戶的私鑰(或者您是否認爲可以在腳本中執行此操作)? – devnull

回答

3

您可以使用BatchMode選項執行此操作。這將導致SSH避免可能導致腳本掛起的任何事情,例如密碼/密碼提示。

這個例子是從一個類似的問題在http://www.unix.com/programming/184775-test-ssh-but-do-not-return-password-prompt.html

if ssh -o BatchMode=yes "$hostname" true 2>/dev/null; then 
    echo "it works" 
else 
    echo "it's broken." 
if 

問直接取自這裏的rsync的一個例子:

rsync -e "ssh -o BatchMode=yes -i /var/www/.ssh/id_rsa" /path/to/test/file.txt remotehost:/path/to/test/file.txt 
+0

我已經使用rsync和'-e'標誌來指定SSH命令,所以我可以將BatchMode標誌添加到該標誌中。謝謝! –