web-dev-qa-db-ja.com

cronでssh経由でrsyncを使用するにはどうすればよいですか?

ローカルの/homeディレクトリからいくつかのディレクトリをバックアップしようとしているプラ​​イベート仮想サーバーがあります。

このスクリプトを準備しました。

#!/bin/bash

/usr/bin/rsync -rvvv /home/arkadiusz/scripts [email protected]:/home/backup/

/usr/bin/notify-send "Backup complete" "~/scripts -> vps" -i cryptkeeper

ユーザーのcrontabにエントリを追加しました:

*/1 * * * * /home/arkadiusz/scripts/vps.sh > /home/arkadiusz/cron-vps.log 2> /home/arkadiusz/cron-vps.error.log

シェルスクリプトの実行後、scriptsディレクトリがリモートサーバーの/home/backup/に表示されません。 cron-vps.logファイルには、これだけが表示されます。

opening connection using: ssh -l root XXX.XXX.26.106 rsync --server -vvvre.iLsfx . /home/backup/  (9 args)
[sender] _exit_cleanup(code=12, file=io.c, line=226): about to call exit(255)

cron-vps.error.logファイルでは、これは認証の問題であることがわかります。

Permission denied, please try again.
Permission denied, please try again.
Permission denied (publickey,password).
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: unexplained error (code 255) at io.c(226) [sender=3.1.1]

リモートサーバーのsshdステータスをさらに確認しました:

root@vpsXXXXXX:/home/backup# service sshd status
● ssh.service - OpenBSD Secure Shell server
   Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2017-04-12 01:04:09 CEST; 12h ago
 Main PID: 281 (sshd)
   CGroup: /system.slice/ssh.service
           └─281 /usr/sbin/sshd -D

...

Apr 12 13:41:01 vpsXXXXXX.ovh.net sshd[5019]: Failed password for root from XXX.XXX.232.122 port 21782 ssh2
Apr 12 13:41:01 vpsXXXXXX.ovh.net sshd[5019]: Failed password for root from XXX.XXX.232.122 port 21782 ssh2
Apr 12 13:41:01 vpsXXXXXX.ovh.net sshd[5019]: Connection closed by XXX.XXX.232.122 port 21782 [preauth]

これらのログに基づいて、認証に問題があるようですが、このコマンドでリモートサーバーにログインしようとすると、SSH接続が機能します。

ssh [email protected]

また、rsyncコマンドは、パスワードなしで端末で機能します。

/usr/bin/rsync -rvvv /home/arkadiusz/scripts [email protected]:/home/backup/

何が間違っていますか?

5

Cron-vps.error.logファイルで、これは認証の問題であることがわかります。

認証と承認は別の問題です。これは認証であり、失敗します(この場合、ログに表示されるパスワード)。

ほとんどの場合、秘密鍵を暗号化するように設定していますが、ssh-agentに保存されているため、通常のセッションでは気づきません。セッションでは正常に機能しますが、crontabから開始されたセッションでは機能しません。

4
Jakuje