为什么rsync在bash脚本中提示输入密码,但在脚本外部执行时运行正常?

时间:2013-12-12 14:41:23

标签: bash rsync

我有一个与另一台服务器共享的SSH密钥,所以我可以在没有密码的情况下登录。执行:

rsync -avze ssh --blocking-io --delete --rsh='ssh -p2020' user@XXX.XX.XXX.XX:/foo/* /bar/;

运行良好。没有密码提示。但是bash文件中的那个命令:

#!/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
rsync -avze ssh --blocking-io --delete --rsh='ssh -p2020' user@XXX.XX.XXX.XX:/foo/* /bar/;

像这样跑:

sudo ./copyfiles.sh

给我这个:

user@XXX.XX.XXX.XX's password:

任何想法为什么?

2 个答案:

答案 0 :(得分:3)

您似乎以root用户身份运行脚本(sudo),但是像其他用户一样运行命令行(这只是猜测)。最有可能的是,root用户的公钥在目标计算机上不存在。

答案 1 :(得分:0)

sudo程序可能正在创建一个没有SSH环境变量的新shell。

尝试

sudo -E ./copyfiles.sh