9

Web サーバー (odin) とバックアップ サーバー (jofur) があります。jofur では、次のコードを実行して、web ディレクトリを (キー認証を介して) odin から jofur に再同期できます。

rsync -avz -e ssh backups@odin.mydomain.net:/home/backups /home/myuser/odin

これをコマンド ラインに入力すると、すべてが完全に再同期されます。

myuser@jofur:~$ rsync -avz -e ssh backups@odin.mydomain.net:/home/backups /home/myuser/odin

receiving incremental file list

sent 23 bytes  received 1921 bytes  1296.00 bytes/sec
total size is 349557271  speedup is 179813.41

これを毎朝実行したいので、crontabを編集してこれを読みました:

0 4 * * * rsync -avz -e ssh backups@odin.mydomain.net:/home/backups /home/myuser/odin

これはうまくいきません。次のメッセージが /var/mail/myuser に保存されます。

ディレクトリ '/home/myuser/.ssh' を作成できませんでした。ホスト キーの検証に失敗しました。rsync: 接続が予期せず閉じられました (これまでに受信したバイト数は 0 です) [Receiver] rsync エラー: 説明できないエラー (コード 255) at io.c(605) [Receiver=3.0.9]

このエラーの意味がわかりません。バックドアを開いたままにしたくないので、盲目的にパーミッションをいじることには警戒しています。助言がありますか?

4

8 に答える 8

2

同様の問題がありました。私はHOMEディレクトリが暗号化されていました。

ユーザーがログに記録されている場合、known_hosts で動作します。

しかし、それがcronの場合、cronは正しいユーザーを使用しますが、暗号化されているため、$HOME/~/.sshディレクトリにアクセスできません:-(

于 2013-03-08T17:09:05.427 に答える
2

cron が間違った rsync バイナリを使用しているのか、rsync に cron で設定されていない変数が必要なのかを判断するのは困難です。以下に示すように stdout/stderr を設定し、ログ ファイルの出力を渡してください。

また、コマンドラインから「which rsync」を実行してみてください。これにより、コマンドラインから使用している rsync がわかります。

0 4 * * * rsync -avz -e ssh backups@odin.mydomain.net:/home/backups /home/myuser/odin > /tmp/cron_output.log 2>&1

編集 :

以下を含む SOME_DIR/cron_job_rsync.sh というシェル スクリプトを作成できますか。必ず実行ビットを設定してください。

#!/ビン/sh
/usr/sbin/rsync -avz -e ssh backups@odin.mydomain.net:/home/backups /home/myuser/odin

そして、以下に示すようにcronjobを変更します

0 4 * * * SOME_DIR/cron_job_rsync.sh >/tmp/cron_output.log 2>&1
于 2012-12-28T22:33:35.370 に答える
0

サーバーの管理者と連絡を取り、この問題を解決しました。彼らが私に言ったことは次のとおりです。

高度なセキュリティとパフォーマンスのために、ユーザー向けに chrooted 環境を利用する 1H (Hive) を使用します。ライブラリとバイナリは、chroot 環境にコピーしてアクセスできるようにする必要があります。

彼らは、「Relevent」パッケージがインストールされたことを知らせるフォローアップの電子メールを私に送りました。その時点で、問題は解決しました。残念ながら、彼らから追加情報は得られませんでした。ホストは Arvixe でしたが、1H (Hive) を使用している人なら誰でも同様の問題に遭遇すると思います。この回答がお役に立てば幸いです。

于 2013-12-04T20:54:56.167 に答える
0

エラーを回避するには、以下の手順に従ってください http://umasarath52.blogspot.in/2013/09/solved-rsync-not-executing-via-cron.html

于 2013-09-27T18:01:01.600 に答える
0

rrsync次のように、専用の ssh キーとともにスクリプトを使用します。

リモートサーバー

mkdir ~/bin
gunzip /usr/share/doc/rsync/scripts/rrsync.gz -c > ~/bin/rrsync
chmod +x ~/bin/rrsync

ローカルコンピュータ

ssh-keygen -f ~/.ssh/id_remote_backup -C "Automated remote backup"      #NO passphrase
scp ~/.ssh/id_remote_backup.pub devel@10.10.10.83:/home/devel/.ssh

リモートコンピュータ

cat id_remote_backup.pub >> authorized_keys

新しく追加された行に次の行を追加します

command="$HOME/bin/rrsync -ro ~/backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding

結果が次のようになるように

command="$HOME/bin/rrsync -ro ~/backups/",no-agent-forwarding,no-port-forwarding,no-pty,no-user-rc,no-X11-forwarding ssh-rsa AAA...vp Automated remote backup

ローカル

許可を得てcrontab、次のスクリプトを挿入します。x

#!/bin/sh
echo ""
echo ""
echo "CRON:" `date`
set -xv
rsync -e "ssh -i $HOME/.ssh/id_remote_backup" -avzP devel@10.10.10.83:/ /home/user/servidor 

ソース: http://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/

于 2016-12-12T15:35:43.170 に答える
0

正しいキーリングを使用すると、問題が解決しました。次の行を crontab に追加します。

SSH_AUTH_SOCK=/run/user/1000/keyring/ssh

全体として、crontab (crontab -e端末から呼び出して編集) は次のようになります。

SSH_AUTH_SOCK=/run/user/1000/keyring/ssh
0 4 * * * rsync -avz backups@odin.mydomain.net:/home/backups /home/myuser/odin

背景:一部の Linux ディストリビューションでは、キーリングを使用して公開鍵と秘密鍵のペアを保護していることが判明しました。そのため、鍵のペアは、ユーザーに気づかれることなくパスワードで保護されています。その結果、rsync認証のために ssh キーを開くことができません。

-e ssh;も省略したことに注意してください。ここは必要ないと思います。

さらなるトラブルシューティング: rsync多くのデバッグ出力は提供されません。scp問題を特定するのに役立ったのは、はるかに冗長なダミーコマンドを crontab に入れることでした。トラブルシューティング用の crontab エントリは次のようになります。

* * * * * scp -v backups@odin.mydomain.net:/home/backups/dummy.txt /home/myuser/odin/dummy.txt >> /home/myuser/odin/dummy.txt.log 2>&1

上記のコマンドは毎分実行され (開発に最適)、/home/backups/dummy.txtローカル マシンにファイルがコピーされます。すべてのログ (stdout および stderr) は に書き込まれ/home/myuser/odin/dummy.txt.logます。これらのログを調べて、エラーの正確な原因を確認してください。

参照:上記で説明したトラブルシューティングにより、解決策にたどり着きました: https://unix.stackexchange.com/a/332353/395749

于 2020-05-25T09:39:13.740 に答える
0

私はそれを機能させるためにいくつかの手順を実行しました。

  1. パスを確認してください。使用するコマンドごとwhich [command]に、crontab のフル パスを確認して使用します。

  2. 実行したいユーザーとしてcrontabを開き、そのユーザーのssh-keyにアクセスできるようにします

  3. (remember to user which) を追加ssh-agent && [your ssh-command]して、ssh 経由で接続できるようにします。

  4. この時点でまだ認証に失敗する場合。パスワードなしの ssh キーを生成してみてください。これにより、パスワードのプロンプトをスキップできます。

デバッグには、rsync の ssh コマンドに -vvv を追加すると便利です。何が悪いのかを明確にします。

于 2017-05-22T08:25:58.347 に答える