通常のユーザーとして次のコマンドを実行すると、すべてがうまく機能します。
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ではなくSSHから来ることができますrsync
。sudo
SSH秘密鍵のロックを解除するにはパスワードが必要です。
パスワードなしでキーを使用することはあまりお勧めできませんので、スクリプトが root として実行される場合を考えてみましょう。ログインすると、スクリプトは常にrootとして実行されますか?ログイン後にパスワードを一度だけ入力できますか?
この場合、次のようなものを使用することをお勧めします。keychain
スクリプトが root として実行されるときに、ユーザーとして起動された ssh-agent を使用していることを確認します。ログイン後にパスワードを一度入力するだけで、その後の通話では対話が不要になるように設定できます。
それ以外の場合は、対話型認証なしでスクリプトを自動的に実行する必要がある場合は、バックアップスクリプト用に特別にキーペアを作成し、他のユーザーの認証の最後にリモート認証することで実行できる操作を制限します。 (つまりfabio
、ではなく、たとえば)またはリモート側のファイルのパラメータを使用して制限しますfabio-backup
(これは環境変数を確認する必要があるため、もう少し複雑です)。command=
.authorized_keys
SSH_ORIGINAL_COMMAND
認証キー(5)詳細)