12

rsync タスクを cron ジョブとして自動化したいと考えています。パスフレーズが必要なため、cronjob を実行できません。rsync コマンドと一緒にパスフレーズを指定する必要があります。そうしないと、パスフレーズをファイルに保存して、そこから読み取ります。私のコマンドは次のようになります。

rsync -aPe "ssh -i ' . $server->{'ssh_key'} . '" ' . $server_lock_dir;

では、パスワードはどこに入力すればよいのでしょうか?

4

3 に答える 3

15

これを行う必要はありません。1 組の ssh キーをセットアップし、リモート システムの .ssh ディレクトリに公開キーを配置するだけです。

次に、これを行うだけです:

rsync -a -e ssh /local/path/ server:/remote/path/

(-e sshかなり古いバージョンを使用していない限り、これはおそらく省略できることに注意してください。)

キーの設定に関する「ハウツー」ガイドがここにあります。

于 2010-04-21T09:50:36.253 に答える
5

これを cron から機能させたい場合は、いくつかの可能性があります。

  • パスワードなしの ssh キーをセットアップする - あまり安全ではない
  • パスワードなしの ssh キーをセットアップしますが、authorized_keys ファイル内の ssh ForceCommand と組み合わせて、その ssh キーで実行できるコマンドを制限します。「ssh ForceCommand」でman sshd、googleを参照してください
  • パスワード付きの ssh キーをセットアップしますが、それらをキーチェーンと組み合わせて、セッション間でキーをメモリに保持します。これに関するブログ記事を書きました: ssh, ssh-agent, keychain and cron notes
于 2011-04-07T02:48:34.833 に答える
4

ファイルをリモートでコピーする場合:

  1. リモート マシンにログインできる公開鍵がローカル マシンにあることを確認します (この場合、私の ssh キーは「/home/myaccount/.ssh/id_rsa」です)。
  2. リモートと同期するローカル フォルダーを指定します。私の場合は「/home/myaccount/mysourcefolder」です。
  3. 私の場合は remoteaccount@remoteserver:"/home/remoteaccount/mydestinationfolder/" で、リモート サーバーの宛先フォルダーのフル パスを指定します。

ノート:

  • --progress は、コピー中の各ファイルの進行状況を表示します
  • -a mysourcefolder 内のすべてのファイルを再帰的に転送する
  • -v 冗長性
  • -z 小さいファイルのデータ部分を圧縮する

私のコマンドは以下のようになります:

rsync -avz --progress -e "ssh -i /home/myaccount/.ssh/id_rsa" /home/myaccount/mysourcefolder remoteaccount@remoteserver:"/home/remoteaccount/mydestinationfolder/"

于 2012-05-30T09:04:44.833 に答える