2013-12-12 78 views
0

我有一个共享的SSH密钥与另一台服务器,所以我可以无需密码登录。执行:为什么rsync在bash脚本中提示输入密码,但在脚本之外执行时运行良好?

rsync -avze ssh --blocking-io --delete --rsh='ssh -p2020' [email protected]:/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' [email protected]:/foo/* /bar/; 

像下面这样运行:

sudo ./copyfiles.sh 

给了我这样的:

[email protected]'s password: 

任何想法,为什么?

+1

你的根的〜/ .ssh /文件夹不包含您正在使用的服务器上进行身份验证的私钥。 – RedX

+0

运行'sudo rsync -avze ssh --blocking-io --delete --rsh ='ssh -p2020'[email protected]:/ foo/*/bar /;''会发生什么? – Donovan

回答

3

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

+0

检查了这个,不是这种情况:( – Nadine

+0

嗯,也许你是对的,当我执行带有sudo前缀的rsync命令时,系统会收到提示,但root和用户ssh密钥已被复制到:/ – Nadine

+0

根密钥复制到目标机器上的/home/user/.ssh下?因为那似乎是你连接的用户。 –

0

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

尝试

sudo -E ./copyfiles.sh 
+0

试过这个,这不起作用 – Nadine

相关问题