研究機関がホストする仮想マシンであるリモートサーバー上のディレクトリのバックアップを定期的に作成する必要があります。彼らは、VMへのアクセスはsshキーを介することを義務付けています。これは、rsyncがこのサーバーのsshキーをポイントする方法を理解できないことを除いて、すべて適切です。
キーファイルが_~/.ssh/id_rsa
_であればRsyncは問題ありませんが、それ以外の場合はPermission denied (publickey)
を取得します。
Sshでは、_-i
_でIDファイルを指定できますが、rsyncにはそのようなオプションがないようです。
ローカルマシンのキーを一時的に_~/.ssh/id_rsa
_に移動することも試みましたが、同様に機能しません。
tl; dr
RsyncでIDファイルを指定できますか?
「-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ユーザー設定を使用して行うことができます: 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、
私にとっては、次のように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
ご参考までに:
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は、多数のリモートサーバーまたはローカルサーバーを簡単にバックアップできるので、便利なスケジュールされた集中型バックアップサーバーになります。