作為另一個用戶進行 rsync

作為另一個用戶進行 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"

兩者都有效,但要求我輸入“密鑰密碼”,我可以避免嗎?

答案1

「金鑰密碼」可能來自 SSH notrsyncsudo,它要求輸入密碼來解鎖您的 SSH 私鑰。

由於我確實不建議您使用沒有密碼的金鑰,因此請考慮腳本以 root 身份運行的情況。在您登入後,腳本是否總是以 root 身分執行?登入後可以輸入一次密碼嗎?

如果是這種情況,我建議使用類似的東西keychain確保腳本在以 root 身分執行時使用以您的使用者身分啟動的 ssh-agent。您可以進行設置,以便在登入後只需輸入一次密碼,並且以後的任何調用都不需要互動。

如果情況並非如此,如果腳本必須自主運行而無需您進行任何互動式身份驗證,請考慮專門為備份腳本產生金鑰對,然後限制它可以執行的操作,方法是讓它以遠端另一個使用者的身份進行身份驗證end (即不是fabio,而是例如),或使用遠端檔案中的參數fabio-backup來限制它(儘管這有點複雜,因為它需要查看環境變數;請參閱command=.authorized_keysSSH_ORIGINAL_COMMAND授權密鑰(5)詳情)

答案2

您的 ssh 私鑰受密碼保護。當您以(登入)使用者身分手動執行它時,它使用 ssh 代理,您曾經在其中儲存過密碼金鑰庫。

然而,當無人值守運行時,這種情況不會發生——畢竟,用戶甚至可能沒有登入(因此其密鑰庫不可用)。為了讓它始終工作,您需要從 ssh 私密金鑰中刪除密碼(透過以ssh-keygen -p使用者身分登入時fabio- 只需按 Enter 鍵取得新密碼,它就會被刪除)。

次要安全說明:當私鑰不受密碼保護時,任何獲得fabio帳戶存取權限的人都可以透過 ssh 連線到允許該金鑰的其他主機,而無需先從使用者嗅探密碼)

相關內容