2013-12-12 80 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

相關問題