Linux VM へのファイルの転送


Compute Engine の VM インスタンスにファイルを転送する場合、ワークステーションの OS とターゲット VM インスタンスの OS に基づいて各種オプションを使用できます。

転送元 転送先が Linux VM
Linux または macOS
Windows

Cloud Storage を経由したファイルの転送

Cloud Storage バケットは、ユーザーと VM の間の簡易に使用できる中間転送ポイントとして機能します。

このファイル転送方式は、サービス アカウントまたは個人のユーザー認証情報を使用して VM から Cloud Storage バケットにアクセスできる限り、ほぼすべての種類のオペレーティング システムと VM で使用できます。

まず、自身のワークステーションから Cloud Storage バケットにファイルをアップロードします。次に、それらのファイルをバケットからインスタンスへダウンロードします。

  1. Cloud Storage バケットを作成するか、ファイル転送に使用する既存のバケットを指定します。
  2. ワークステーションからバケットにファイルをアップロードします。
  3. SSH を使用して VM に接続します。
  4. VM 上で、バケットからファイルをダウンロードします。

逆方向にファイルを転送する必要がある場合は、上記のプロセスを逆方向に実行します。まず VM からファイルをアップロードし、次にそれらのファイルをワークステーションへダウンロードします。

ブラウザの SSH を使用したファイルの転送

ブラウザの SSH を使用して VM への SSH 接続を確立できる場合は、その接続を使用して VM との間でファイルを転送できます。

VM へのアップロード

  1. コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。

    インスタンス名の横にある SSH ボタン。

  3. 接続が確立されたら、アップロード アイコン をクリックします。

    アップロード ボタン。

    [アップロード] ダイアログが開きます。

  4. アップロードするファイルを選択します。
  5. [ファイルをアップロード] をクリックしてファイルをアップロードします。このファイルは /home/USER ディレクトリにアップロードされます。

VM からダウンロード

  1. コンソールで [VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  2. 仮想マシン インスタンスのリストで、接続するインスタンスの行にある [SSH] をクリックします。

    インスタンス名の横にある SSH ボタン。

  3. 接続が確立されたら、ダウンロード アイコン をクリックします。

    ダウンロード ボタン。

    [ダウンロード] ダイアログが開きます。

  4. [パス] テキスト ボックスに、ダウンロードするファイルの相対ファイルパスを入力します。
  5. [ダウンロード] をクリックしてファイルをダウンロードします。ファイルは、ワークステーションのデフォルトのダウンロード フォルダにダウンロードされます。

Google Cloud CLI を使用してファイルを転送する

Google Cloud CLI には SCP ファイル転送ユーティリティが備わっています。このユーティリティは初回接続時に SSH 認証鍵ペアを作成します。秘密鍵はローカル デバイスに保存され、対応する公開鍵はプロジェクト メタデータまたは VM インスタンス メタデータにコピーされます。

SCP を使用してファイルを転送するには、VM が使用するネットワーク上に、ポート 22 での SSH 接続を許可するファイアウォール ルールが必要です。このファイアウォール ルールが存在することを確認するには、Google Cloud Console で tcp:22 接続を許可するファイアウォール ルールを探します。

[ファイアウォール ルール] に移動

ポート 22 で SSH 接続を許可するファイアウォール ルールがない場合は、ファイアウォール ルールを作成します。

gcloud CLIをインストールすると、scp コマンドを使用して VM にファイルやディレクトリをコピーできます。

次の例では、ワークステーションから VM のホーム ディレクトリにファイルをコピーします。

gcloud compute scp LOCAL_FILE_PATH VM_NAME:~

以下を置き換えます。

  • LOCAL_FILE_PATH: ワークステーション上のファイルのパス
  • VM_NAME: VM の名前

ファイルやディレクトリは、VM からローカルのワークステーションにコピーすることもできます。次の例では、VM(コピー元)からワークステーション(コピー先)にディレクトリを再帰的にコピーします。

gcloud compute scp --recurse VM_NAME:REMOTE_DIR LOCAL_DIR

以下を置き換えます。

  • VM_NAME: VM の名前
  • REMOTE_DIR: VM 上のディレクトリのパス
  • LOCAL_DIR: ワークステーション上のディレクトリを配置するパス

詳細については、gcloud compute scp リファレンス ドキュメントをご覧ください。

Linux ワークステーションや macOS ワークステーションの SCP を使用したファイルの転送

scp コマンドライン ツールは、gcloud compute scp と同様に動作しますが、SSH 認証鍵を手動で管理する必要があります。

SCP を使用してファイルを転送するには、VM が使用するネットワーク上に、ポート 22 での SSH 接続を許可するファイアウォール ルールが必要です。このファイアウォール ルールが存在することを確認するには、Google Cloud Console で tcp:22 接続を許可するファイアウォール ルールを探します。

[ファイアウォール ルール] に移動

ポート 22 で SSH 接続を許可するファイアウォール ルールがない場合は、ファイアウォール ルールを作成します。

scp ツールは、標準 SSH を使用してインスタンスに接続するときと同じ鍵ファイルを使用します。

  1. Google Cloud Console プロジェクトまたは VM インスタンスに公開鍵を適用していない場合は、SSH 認証鍵ペアを作成し、公開鍵をプロジェクトまたはインスタンス メタデータに追加します。

  2. ファイルの送信先となる VM の外部 IP を確認します。Google Cloud Console で、[VM インスタンス] ページに移動します。

    [VM インスタンス] に移動

  3. scp ツールを使用して、ワークステーションからターゲット VM のホーム ディレクトリにファイルをコピーします。この例では、秘密鍵は ~/.ssh/my-ssh-key にあります。

    scp -i ~/.ssh/my-ssh-key LOCAL_FILE_PATH USERNAME@IP_ADDRESS:~
    

    以下を置き換えます。

    • LOCAL_FILE_PATH: アップロードするローカル ファイルの名前
    • USERNAME: ユーザー名
    • IP-ADDRESS: VM の外部 IP アドレス

また、コピー元とコピー先の変数を逆にすることで、VM からローカルのワークステーションにファイルをコピーすることもできます。次の例では、VM からワークステーションのパスにファイルをコピーします。

scp -i ~/.ssh/my-ssh-key USERNAME@IP_ADDRESS:REMOTE_FILE_PATH LOCAL_FILE_PATH

以下を置き換えます。

  • USERNAME: ユーザー名
  • IP_ADDRESS: VM の外部 IP アドレス
  • REMOTE_FILE_PATH: ダウンロードするリモート ファイルの名前
  • LOCAL_FILE_PATH: ファイルをダウンロードする、ワークステーション上の場所

Windows ワークステーションの WinSCP を使用したファイルの転送

Windows ワークステーションでは、WinSCP クライアントにより、ファイル ブラウザのグラフィカル インターフェースを介してインスタンス上のファイルを管理できます。

WinSCP は、PuTTY を使用してインスタンスに接続するときと同じ鍵ファイルを使用します。

  1. インスタンス用に鍵ベースの SSH 認証を構成していない場合は、次の手順を行います。

    1. SSH 認証鍵ペアを作成します

    2. 公開 SSH 認証鍵をプロジェクトのメタデータまたは VM のメタデータに追加します。詳細については、SSH 認証鍵をプロジェクト メタデータに追加するまたは SSH 認証鍵をインスタンス メタデータに追加するをご覧ください。

  2. ファイルの送信先となる VM の外部 IP を確認します。

    1. Google Cloud Console で、[VM インスタンス] ページに移動します。

      [VM インスタンス] に移動

    2. VM のリストで、VM の [外部 IP] 列で外部 IP アドレスを探します。
  3. WinSCP をダウンロードしてインストールします。多くの場合、デフォルトのインストール設定で問題なくインストールできます。

  4. WinSCP プログラムを起動します。ログイン ウィンドウが開き、接続設定を構成できます。

  5. WinSCP で、接続設定を構成します。

    1. [File protocol] フィールドでは、ファイル転送プロトコルとして SCP を選択します。

    2. [Host name] フィールドには、接続する VM の外部 IP アドレスを指定します。

    3. [User name] フィールドに、プロジェクトへのアクセスに使用する Google ユーザー名を入力します。この例では、ユーザーは example-user です。

      ファイル プロトコルを SCP に、ホスト名を 104.196.31.103 に、ユーザー名を example-user に設定。

  6. [Advanced] プルダウン メニューから詳細設定を開き、[SSH] > [Authentication] に移動します。

  7. [Private key file] ボックスに、VM 用に作成した SSH 認証鍵ペアの秘密鍵ファイルのパスを指定します。

    詳細サイト設定ダイアログで、秘密鍵ファイルを my-ssh-key.ppk に設定。

  8. [Ok] をクリックして、詳細設定を保存します。

  9. [Login] をクリックして、VM に接続します。接続に成功するとウィンドウが開き、左側にローカルのファイル システム、右側に VM のファイル システムが表示されます。どちらのファイル システムでも他のディレクトリに移動して、ファイルをドラッグすることで VM から(VM へ)ファイルを転送できます。

  10. 通常、VM のホーム ディレクトリ外のファイルは、操作する権限がありません。VM のホーム ディレクトリに移動します。

    /home/USERNAME
    
  11. WinSCP インターフェースを使用して、ワークステーションと VM の間でファイルを移動します。

  12. VM にファイルをコピーしたら、インスタンスに接続します。これで、完全な sudo 権限でファイルの実行や移動ができます。

次のステップ