SCP + SSH鍵認証でGCEインスタンス間ファイル転送

はじめに

SCPを理解するために、GCEインスタンス間で、SCPファイル転送をしてみました。

技術要素

  • SSH
  • SCP
  • GCP(Google Cloud Platform)
    • GCE(Compute Engine)

前提条件

  • GCPプロジェクトが作成済みであること。

環境構築

VPCネットワークの作成

1. メニュー > VPCネットワーク > VPCネットワーク をクリックする。
2. 「VPCネットワークを作成」をクリックする。
3. 下記の通りに値を設定する。(下記以外の項目はデフォルト値)
 名前:my-network
 サブネット:
  カスタム:
   新しいサブネット:
    名前:my-subnet1
    リージョン:asia-northeast1
    IPアドレス範囲:10.0.0.0/9  
4. 完了ボタンをクリックする。
5. 作成ボタンをクリックする。

GCEインスタンスの作成

転送元サーバの作成

1. メニュー > Compute Engine > VMインスタンス をクリックする。
2. 「インスタンスを作成」をクリックする。
3. 下記の通りに値を設定する。(下記以外の項目はデフォルト値)
 名前:bastion
 リージョン:asia-northeast1
 ゾーン:asia-northeast1-a
 マシンタイプ:f1-micro
4. 「管理、セキュリティ、ディスク、ネットワーク、単一テナンシー」をクリックする。
5. 「ネットワーキング」をクリックする。
6. ネットワークタグに「bastion」を設定する。
7. ネットワークインタフェースをサブネットワークに「my-subnet1」を設定する。
8. 完了ボタンをクリックする。
9. 作成ボタンをクリックする。

転送先サーバの作成

1. メニュー > Compute Engine > VMインスタンス をクリックする。
2. 「インスタンスを作成」をクリックする。
3. 下記の通りに値を設定する。(下記以外の項目はデフォルト値)
 名前:fortress
 リージョン:asia-northeast1
 ゾーン:asia-northeast1-a
 マシンタイプ:f1-micro
4. 「管理、セキュリティ、ディスク、ネットワーク、単一テナンシー」をクリックする。
5. 「ネットワーキング」をクリックする。
6. ネットワークタグに「fortress」を設定する。
7. ネットワークインタフェースをサブネットワークに「my-subnet1」を設定する。
8. 外部IPを「なし」に設定する。
9. 完了ボタンをクリックする。
10. 作成ボタンをクリックする。

GCEインスタンスにSSH接続できないことの確認

1. メニュー > Compute Engine > VMインスタンス をクリックする。
2. 「bastion」の「SSH」ボタンをクリックする。
3. 「fortress」の「SSH」ボタンをクリックする。
まだファイアウォールの設定をしていないため、SSH接続できません。
次のファイアウォールの作成で、SSH接続できるようにします。

ファイアウォールの作成

転送元サーバへのSSH接続許可

1. メニュー > VPCネットワーク > ファイアウォールルール をクリックする。 
2. 「ファイアウォールルールを作成」をクリックする。 
3. 下記の通りに値を設定する。(下記以外の項目はデフォルト値)
  名前:bastion-allow-ssh-ingress
  ネットワーク:my-network
  ターゲット:指定されたターゲットタグ
  ターゲットタグ:bastion
  ソースフィルタ:IP範囲
  ソースIPの範囲:0.0.0.0/0
  プロトコルとポート:tcp:22
 4. 作成ボタンをクリックする。

転送先サーバへのSSH接続許可

1. メニュー > VPCネットワーク > ファイアウォールルール をクリックする。 
2. 「ファイアウォールルールを作成」をクリックする。 
3. 下記の通りに値を設定する。(下記以外の項目はデフォルト値)
  名前:fortress-allow-ssh-ingress
  ネットワーク:my-network
  ターゲット:指定されたターゲットタグ
  ターゲットタグ:fortress
  ソースフィルタ:IP範囲
  ソースIPの範囲:0.0.0.0/0
  プロトコルとポート:tcp:22
 4. 作成ボタンをクリックする。

GCEインスタンスにSSH接続できることの確認

1. メニュー > Compute Engine > VMインスタンス をクリックする。
2. 「bastion」の「SSH」ボタンをクリックする。
3. 「fortress」の「SSH」ボタンをクリックする。
接続できました。

転送元サーバの設定

転送元サーバでキーペアの作成

1. 「bastion」の「SSH」ボタンをクリックする。
2. キーペアを作成する。
ssh-keygen -t rsa -b 2048
鍵の名前を変更したい場合、鍵の名前を入力して、Enterする。
 パスワードを設定したい場合、パスワードを入力してEnterする。(パスワードが不要の場合、未入力でEnterする。) 
3. /home/<ユーザ名>/.ssh配下にキーペアが作成されたことを確認する。  
$ ls -a ~/.ssh
 .  ..  id_rsa  id_rsa.pub
4. 公開鍵の内容を確認する。  
$ cat ~/.ssh/id_rsa.pub
 ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjhefN4XLxMd2xAghrII4FLgh94JkRDXWGtxU+znXYBXkeFIR4056DxFkq7I9QoMcVfp8oKrSQMYZ00n1C6qpsYfIM+vEiyKyh5959CQzBdW9KhVNaMLISnZzrCDDSyquVWSM+iI4rQshdWaYplazyMlaSk5U/My7Bp5nY0xNd5VmijJ3yDOs3XmB8jLDJbM9z+S+GNFfyTo1gqdjtldRTCY87ovNyOp9P7zslX9fTXu2pADK1dcwGwegznIs7h5mw3zF1FyTu9olqS7AVblRu4c+/ecEJ9IuTAtuqCsnAL93wkCZJbnefzb3+QkrS1gF4FkpkgHHCpG1VZr5M74VV <ユーザ名>@bastion

転送先サーバの設定

転送元サーバの公開鍵の設定

1. 「fortress」の「SSH」ボタンをクリックする。
2. authorized_keysに転送元サーバの公開鍵をコピペする。
echo ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDjhefN4XLxMd2xAghrII4FLgh94JkRDXWGtxU+znXYBXkeFIR4056DxFkq7I9QoMcVfp8oKrSQMYZ00n1C6qpsYfIM+vEiyKyh5959CQzBdW9KhVNaMLISnZzrCDDSyquVWSM+iI4rQshdWaYplazyMlaSk5U/My7Bp5nY0xNd5VmijJ3yDOs3XmB8jLDJbM9z+S+GNFfyTo1gqdjtldRTCY87ovNyOp9P7zslX9fTXu2pADK1dcwGwegznIs7h5mw3zF1FyTu9olqS7AVblRu4c+/ecEJ9IuTAtuqCsnAL93wkCZJbnefzb3+QkrS1gF4FkpkgHHCpG1VZr5M74VV <ユーザ名>@bastion > authorized_keys

動作検証

ファイル転送 

1. メニュー > Compute Engine > VMインスタンス をクリックする。
2. 「bastion」の「SSH」ボタンをクリックする。
3. テスト用のファイルを作成する。
touch test.txt
4. ファイルをSCP転送する。
$ scp -v -i ~/.ssh/id_rsa test.txt <ユーザ名>@fortress:~/

ファイル受信確認

1. メニュー > Compute Engine > VMインスタンス をクリックする。
2. 「fortress」の「SSH」ボタンをクリックする。
3. ファイルが存在することを確認する。
$ ls
 test.txt
4. 転送成功!

コメント

このブログの人気の投稿

Angular + Go Ginで簡単なWebアプリ作成

初めまして