web-dev-qa-db-ja.com

rsyncでIDファイル(id_rsa)を指定する

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

キーファイルが_~/.ssh/id_rsa_であればRsyncは問題ありませんが、それ以外の場合はPermission denied (publickey)を取得します。

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

ローカルマシンのキーを一時的に_~/.ssh/id_rsa_に移動することも試みましたが、同様に機能しません。

tl; dr

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

224
Jangari

「-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ファイルを学習するのが最善です。

385
Dan Garthwaite

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

$ 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 [email protected]:home/user/directory/

これは、SSH、rsync、

17
Cbaker510

私にとっては、次のようにssh-agentを起動するだけで十分です。

eval `ssh-agent -s`
ssh-add /path/to/mykey

ここでより長い回答も参照してください https://stackoverflow.com/questions/17846529/could-not-open-a-connection-to-your-authentication-agent

8
pietro

ご参考までに:

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

ユーザーIDは、次の2つの方法で接続するときに選択できます。

ssh [email protected]
or
ssh -l user_id  destination_server     (<-- that is lower case "L")

一方、Danの回答で説明されているようにオーバーライドしない限り、秘密鍵はユーザーのホームディレクトリでも同様です。

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

"rsnapshot" howto

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

4
ajaaskel