2014-06-30 176 views
0

我正在使用通過ssh與服務器rsyncs的cron腳本。使用cron與ssh密鑰

的命令工作的偉大,當我直接運行它們作爲一個bash腳本,但是當我運行它們爲cron的,的cron註銷壞權限。我認爲這是因爲cron用戶無權訪問ssh密鑰。

這是我需要cron來運行代碼:

rsync --progress -rvze ssh [email protected]/root_folder folder/ 

我可以通過SSH密鑰進入cronfile,或者到腳本本身?如果是這樣,你會提供一個像上面那樣的例子嗎?

+0

你有沒有指定要運行腳本根'crontab'? – hek2mgl

+0

哪個用戶可以工作,哪個用戶讓cron運行它?密鑰是否有密碼? –

+0

關鍵是有一個密碼。腳本不能以crontab中的root身份運行。我使用crontab作爲我的平常用戶,並且ssh密鑰是針對同一個用戶的。我不會以root身份運行,因爲我不希望它期望任何密碼,我只是希望它能夠正確地在後臺運行。 – johncorser

回答

2

附加「-I」在命令行中切換到您的ssh命令:

rsync --progress -rvze "ssh -i/path/to/ssh_private_key" [email protected]:/root_folder folder/ 
+0

以'my_user'運行腳本不是更好嗎? (從安全的角度?) – hek2mgl

+0

@ hek2mgl這回答瞭如何傳遞ssh密鑰文件的問題。它不會使命令以不同的用戶身份運行。 –

+0

@thatotherguy是的,我知道,這就是爲什麼我問。如果您要指定腳本應該以'my_user'運行,那麼'-i'開關將不再需要。這將是安全的。以root身份運行該命令是不安全的。 – hek2mgl