2014-04-11 42 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标志添加到该标志中。谢谢! –