研究機関がホストする仮想マシンであるリモートサーバーにディレクトリを定期的にバックアップする必要があります。 SSHキーを介してVMにアクセスする必要があります。ただし、rsyncがそのサーバーのSSHキーを指す方法がわからないことを除いては問題ありません。
キーファイルの場合はRsyncに問題はありませんが、~/.ssh/id_rsa
他のファイルであればわかりますPermission denied (publickey)
。
sshを使用すると、指定されたIDファイルを使用できますが、-i
rsyncにはそのようなオプションがないようです。
また、ローカルコンピュータで一時的にキーを移動しようとしましたが、~/.ssh/id_rsa
それも機能しませんでした。
長すぎます。
rsyncを使用してIDファイルを指定できますか?
答え1
"-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 ファイルを調べることをお勧めします。
答え2
これは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 [email protected]:home/user/directory/
これは、SSH、rsyncを使用するすべてのプログラムで機能します。
答え3
私には、次のように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
答え4
参考までに:
1)公開鍵は、常にリモートサーバーにログインしているユーザーのホームディレクトリにあります。つまり、「backup」としてログインした場合、公開鍵は /home/backup/.ssh/authorized_keys にあります。ログイン時に、ユーザーIDはターゲットで使用される公開鍵を定義します。
2 つの方法で接続する場合、ユーザー ID を選択できます。
ssh [email protected]
or
ssh -l user_id destination_server (<-- that is lower case "L")
一方、秘密鍵は、Danの回答で述べたように上書きしない限り、ユーザーのホームディレクトリに同様の方法で存在します。
2)バックアップ目的で「rsync」などの単一のコマンド実行に制限される制限付きキーを生成できます。権限のないユーザーアカウントと「sudo」を使用してサーバー全体をリモートでバックアップできる「rsnapshot」バックアップの良い説明があります。
Rsnapshotは複数のリモートまたはローカルサーバーを簡単にバックアップできるため、便利な予約および集中型バックアップサーバーになります。