我正在编写一个使用rsync的脚本,并且我希望它在SSH密钥有密码时错误输出,告诉用户使用非密码保护密钥(而不是因为脚本在后台运行)。错误输出而不是使用SSH请求密码短语
但是,我尝试过的SSH都没有这样做,并且我在man页面中找不到任何东西。
禁用SSH密码提示的最佳方法是什么?
我正在编写一个使用rsync的脚本,并且我希望它在SSH密钥有密码时错误输出,告诉用户使用非密码保护密钥(而不是因为脚本在后台运行)。错误输出而不是使用SSH请求密码短语
但是,我尝试过的SSH都没有这样做,并且我在man页面中找不到任何东西。
禁用SSH密码提示的最佳方法是什么?
您可以使用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
我已经使用rsync和'-e'标志来指定SSH命令,所以我可以将BatchMode标志添加到该标志中。谢谢! –
是,禁用密码认证,公钥认证 –
显然不是密码短语,对不起没有仔细阅读。由于用户会执行脚本,我是否正确地假设脚本能够访问用户的私钥(或者您是否认为可以在脚本中执行此操作)? – devnull