これは構文です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ファイルを使用するように指定するにはどうすればよいですか?
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
に必要なシェルの展開が妨げられます。単一引用符でキーへのフルパスまたは相対パスを使用できます。
$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でテスト済み
IDキーファイルへの絶対パスを指定する必要があります。これはおそらく、rsyncのある種の奇抜です。 (結局完璧ではない)
私はほんの数日前にこの問題に遭遇しました:-)
これは私のために働く
rsync -avz --rsh="ssh -p1234 -i ~/.ssh/1234-identity" \
"/local/dir/" [email protected]:"/remote/dir/"
Bashまたはshでコマンドを実行していますか?これは違いを生むかもしれません。 ~
を$HOME
に置き換えてみてください。 -e
オプションの文字列を二重引用符で囲んでみてください。
rsyncでキーファイルを使用します。
rsync -rave "ssh -i /home/test/pkey_new.pem" /var/www/test/ [email protected]:/var/www/test