1. ホーム
  2. unix

[解決済み] IDファイルをrsyncで使用するにはどうすればよいですか?

2022-07-10 04:12:40

質問

rsync で ID ファイルを使用するにはどうすればよいですか。

これは私の構文です を考える 接続するために ID ファイルを使用するために rsync で使用する必要があります。

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

でも、エラーになっちゃう。

Warning: Identity ファイル ~/.ssh/1234-identity にアクセスできません。そのようなファイルまたはディレクトリはありません。

ファイルは正常で、パーミッションも正しく設定されており、ssh を実行すると動作しますが、少なくとも私の構文では rsync では動作しません。私は何を間違えているのでしょうか。リモート マシン上で ID ファイルを探そうとしているのでしょうか。もしそうなら、どのようにすれば私の ローカル マシンの ID ファイルを使用するように指定するにはどうしたらよいでしょうか。

どのように解決するのですか?

この場合 ssh-agentssh-add でキーをメモリにロードします。 ssh は、ID が見つかれば自動的に 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 . 一重引用符で囲んだキーへのフルパスまたは相対パスを使用することができます。