rsyncを使用してIDファイル(id_rsa)を指定する


197

研究機関がホストする仮想マシンであるリモートサーバー上のディレクトリの定期的なバックアップを作成する必要があります。VMへのアクセスはsshキーを介して行われることを義務付けていますが、rsyncをこのサーバーのsshキーにポイントする方法がわからないことを除いて、これはすべて良好です。

キーファイルがあるならRsyncは問題ありません~/.ssh/id_rsaが、それが他のものであるとき、私は得Permission denied (publickey)ます。

sshでは、でIDファイルを指定できます-iが、rsyncにはそのようなオプションがないようです。

また、ローカルマシンのキーを一時的にに移動しようとしました~/.ssh/id_rsaが、同様に機能しません。

tl; dr

rsyncでIDファイルを指定できますか?


1
また、sudo rsync何らかの理由で自分のsshキーを使用しないために便利です。
ijoseph

1
@ijosephまさに、私が使用してrsync -aAP "sudo -u user ssh" user@server:dir local_dirrootとして実行するcronスクリプトから同期するとき
マーティンPecka

回答:


342

'-e'オプションを使用して、正確なsshコマンドを指定できます。

rsync -Pav -e "ssh -i $HOME/.ssh/somekey" username@hostname:/from/dir/ /to/dir/

多くのsshユーザーは、〜/ .ssh / configファイルになじみがありません。構成ファイルを介して、ホストごとにデフォルト設定を指定できます。

Host hostname
    User username
    IdentityFile ~/.ssh/somekey

長期的には、〜/ .ssh / configファイルを学習するのが最善です。


ssh_configにIdentityFileが含まれていると役に立ちません。問題なく「ssh web1」を実行できますが、web1にrsyncを使用すると、「Permission denied(publickey)」で失敗します。
Zitrax

1
sshトランスポートの冗長性を上げてみてください:rsync -e 'ssh -vv' web1:/ etc / issue / tmp / issue
Dan Garthwaite

1
あ。これを自動化していて、パスワードを提供できない場合は、両端で追加のパスワードなしsshキーが必要になります。インタラクティブセッションでrsyncをパスワードなしで動作させたい場合は、ssh-agentを使用する必要があります。
ダンガースウェイト

16
デュウウウウウデ!~/.ssh/configファイル-あなたは私のために、新たな宇宙を開設しました!
-demaniak

2
〜/ .ssh / configで1日が節約できました。ありがとう。
-smishra

17

これは、SSHユーザー設定で行うことができます:http : //www.cyberciti.biz/faq/create-ssh-config-file-on-linux-unix/ 基本的に〜/ .ssh / configを編集:

$ nano ~/.ssh/config
#Add Hosts below 
Host server1
HostName examplehost.com
User username
Port 22
IdentityFile /path/to/key

$ rsync -e ssh /home/user/directory user@remote.host.net:home/user/directory/

これは、SSH、rsync、



4

ご参考までに:

1)公開鍵は常にリモートサーバーにログインしているユーザーのホームディレクトリにあります。つまり、「バックアップ」としてログインした場合、/ home / backup / .ssh / authorized_keysにあります。ログイン時のユーザーIDは、宛先で使用される公開鍵を定義します。

接続を行うときに、2つの異なる方法でユーザーIDを選択できます。

ssh user_id@destination.server
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

一方、秘密鍵は、ダンの回答で説明されているように上書きしない限り、ユーザーのhomedirでも同様の方法です。

2)バックアップのために、「rsync」などのコマンドを1つだけ実行するように制限された制限キーを作成することが望ましい場合があります。「rsnapshot」バックアップに関連する説明があり、非特権ユーザーアカウントと「sudo」を使用してサーバー全体をリモートバックアップできます。

「rsnapshot」howto

Rsnapshotは、多数のリモートサーバーまたはローカルサーバーを簡単にバックアップでき、スケジュールされた集中管理されたバックアップサーバーとして便利です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.