Ssh
rsync 作為另一個使用者
當我以普通使用者身份執行以下命令時,一切正常:
fabio@myclient:~$ rsync -rv myserver:~/backup /home/fabio/backup/
它無需任何使用者互動即可工作,但我需要在以 root 身份執行的腳本中執行,所以我嘗試了:
root@myclient:~# sudo -u fabio rsync -rv myserver:~/backup /home/fabio/backup/
並嘗試過:
root@myclient:~# su - fabio -c "rsync -rv myserver:~/backup /home/fabio/backup"
兩者都有效,但問我一個“密鑰密碼”,我可以避免嗎?
“密鑰密碼”很可能來自 SSH not
rsync
orsudo
,它要求輸入密碼來解鎖您的私人 SSH 密鑰。由於我真的不建議您使用沒有密碼的密鑰,因此請考慮腳本以 root 身份執行的情況。登錄後腳本是否始終以 root 身份執行?您可以在登錄後的某個時間輸入一次密碼嗎?
如果是這種情況,我建議使用類似
keychain
的方法來確保 ssh-agent 在以 root 身份執行時由腳本使用以您的使用者身份啟動。您可以進行設置,以便您只需在登錄後的某個時間輸入一次密碼,並且以後的任何呼叫都不需要互動。如果不是這種情況,如果腳本必須在沒有任何互動式身份驗證的情況下自主執行,請考慮專門為備份腳本生成一個密鑰對,然後限制它可以做什麼,或者讓它作為遠端上的另一個使用者進行身份驗證end (即不是
fabio
,但是,例如, ),或使用遠端文件中的參數來fabio-backup
限制它(儘管這有點複雜,因為它需要查看環境變數;有關詳細資訊,請參閱authorized_keys(5) )command=``.authorized_keys``SSH_ORIGINAL_COMMAND