未分類

SCPまたはRsyncを使用してプライベートネットワーク経由でファイルを安全に転送する

前書き

サーバーのパブリックIPアドレスscpなどのコマンドを使用rsyncすると、ファイルは自動的に(パブリック)インターネット経由で転送されます。プライベートネットワークが有効になっているインスタンスが2つある場合は、これらのファイルをプライベートネットワーク経由で転送して、使用されている帯域幅に対する追加料金を防ぐこともできます。

前提条件

  • 2つのインスタンス(我々は彼らを呼ぶだろうserver_aし、server_bプライベートネットワークを持つ)が有効になって
  • 両方のインスタンスとも、同じサブネット内にプライベートIPアドレスを設定する必要があります(プライベートネットワークの設定を参照)。
  • 両方のインスタンス間でSSH接続が可能になるはずです。
  • rootではないユーザー(これを呼び出しますyour_user

SSH鍵の生成と使用

ユーザー名とパスワードによる認証を使用してファイルを転送することは可能ですが、SSHキーを使用する方がはるかに安全です。公開鍵と秘密鍵の生成については、SSH鍵の生成方法で説明しています。。このセクションをスキップすることにした場合は、すべてのコマンドでリモートユーザーのパスワードを入力する必要があります。

上の公開鍵と秘密鍵のペアserver_aがにあると仮定すると~/.ssh/id_rsa、次のコマンドを実行して公開鍵をに転送できますserver_b。のプライベートIPアドレスを使用しますserver_b

ssh-copy-id your_user@192.168.0.101

プロンプトが表示されたら、パスワードを入力しyour_userます。

ssh-copy-id your_user@192.168.0.101 /usr/bin/ssh-copy-id: INFO: Source of
key(s) to be installed: "/home/your_user/.ssh/id_rsa.pub" The
authenticity of host '192.168.0.101 (192.168.0.101)' can't be
established. ECDSA key fingerprint is
SHA256:g9dfqycqU25b567/HDjPTqaQqKhep/fysNCQAG9yJG4. ECDSA key
fingerprint is MD5:41:67:be:68:51:9b:38:a8:95:82:71:47:f1:35:39:66.
Are you sure you want to continue connecting (yes/no)? yes
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s),
to filter out any that are already installed /usr/bin/ssh-copy-id:
INFO: 1 key(s) remain to be installed -- if you are prompted now it is
to install the new keys your_user@192.168.0.101's password:

Number of key(s) added: 1

それではマシンにログインしてみてください。

ssh your_user@192.168.0.101

必要なキーのみが追加されたことを確認してください。

あなたが今からserver_aにSSH接続した場合server_b、それはもはやパスワードを要求しません。公開鍵と秘密鍵のペアが存在しない場合は、その~/.ssh/id_rsa場所を-iパラメータで指定できます(scpand パラメータでこのパラメータも必要になりますrsync)。

ssh-copy-id -i /path/to/your/public_key your_user@192.168.0.101 
ssh -i /path/to/your/private_key your_user@192.168.0.101 

SCPによるファイル転送

SCPはSecure Copyの略で、SSH接続を介してすべてのデータを転送します。単一のファイルをコピーするには~/myfile、からserver_a/tmpディレクトリにserver_b次のコマンドを発行します。

scp ~./myfile your_user@192.168.0.101:/tmp

すべての内容(シンボリックリンクを含む)を含む完全なフォルダをコピーするには、-rオプションを追加します。

scp -r ~./mydir your_user@192.168.0.101:/tmp

Rsyncでファイルを転送する

Rsyncはファイルをコピーするための多用途のツールです。2つの場所の内容を同期させるために最もよく使われます。データ転送に同じセキュアSSHトンネルを使用します。/tmp次のコマンドで、完全なフォルダをリモートディレクトリに同期させることができます。

rsync -av ~/mydir your_user@192.168.0.101:/tmp

この-vオプションを選択すると冗長性が増し、転送の進行状況を追跡できます。この-aオプションは、所有者、グループ、権限などの属性を保持しながら、ファイルを再帰的にコピーする「アーカイブモード」を有効にします。