web-dev-qa-db-ja.com

rsyncでIDファイルをどのように使用しますか?

RsyncでIDファイルをどのように使用しますか?

これは構文ですI think rsyncでIDファイルを使用して接続する必要があります:

 rsync -avz -e 'ssh -p1234 -i〜/ .ssh/1234-identity'\
 "/ local/dir /" [email protected]: "/ remote/dir/「

しかし、それは私にエラーを与えています:

警告:IDファイル〜/ .ssh/1234-identity not access:そのようなファイルまたはディレクトリはありません。

ファイルは正常で、パーミッションは正しく設定されています。少なくともrsyncではなく、sshを実行するときに機能します-少なくとも私の構文では。私は何を間違えていますか?リモートマシンでIDファイルを検索しようとしていますか?その場合、localマシンでIDファイルを使用するように指定するにはどうすればよいですか?

117
cwd

ssh-agentおよびssh-addを使用して、キーをメモリにロードできます。 sshは、ssh-agentからのIDを見つけることができる場合、それらを自動的に試行します。コマンドは

eval $(ssh-agent) # Create agent and environment variables
ssh-add ~/.ssh/1234-identity

ssh-agentは、メモリ内に暗号化されていないsshキーを保持するユーザーデーモンです。 sshは、実行時にssh-agentが出力する環境変数に基づいて検出します。 evalを使用してこの出力を評価すると、環境変数が作成されます。 ssh-addは、キーメモリを管理するコマンドです。エージェントはssh-addを使用してロックできます。キーのデフォルトのライフタイムは、ssh-agentの起動時に指定できます。または、キーの追加時にキーに指定できます。

〜/ .ssh/configファイルをセットアップして、ポートとキーの定義を提供することもできます。 (その他のオプションについては `man ssh_configを参照してください。)

Host 22.33.44.55
    IdentityFile ~/.ssh/1234-identity
    Port 1234

Sshコマンドを単一引用符で囲むと、~または$HOMEに必要なシェルの展開が妨げられます。単一引用符でキーへのフルパスまたは相対パスを使用できます。

80
BillThor

$HOMEのいずれかを使用します

rsync -avz -e "ssh -p1234  -i \"$HOME/.ssh/1234-identity\"" dir remoteUser@server:

またはキーへのフルパス:

rsync -avz -e "ssh -p1234  -i /home/username/.ssh/1234-identity" dir user@server:

Ubuntuでrsync 3.0.9でテスト済み

70
Tombart

IDキーファイルへの絶対パスを指定する必要があります。これはおそらく、rsyncのある種の奇抜です。 (結局完璧ではない)

私はほんの数日前にこの問題に遭遇しました:-)

36
Alpha01

これは私のために働く

rsync -avz --rsh="ssh -p1234  -i ~/.ssh/1234-identity"  \
"/local/dir/" [email protected]:"/remote/dir/"
22
ilcavero

Bashまたはshでコマンドを実行していますか?これは違いを生むかもしれません。 ~$HOMEに置き換えてみてください。 -eオプションの文字列を二重引用符で囲んでみてください。

6
Darhuuk

rsyncでキーファイルを使用します。

rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ [email protected]:/var/www/test
4
Avinash Raut