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.pub4. 公開鍵の内容を確認する。
$ 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.txt4. ファイルをSCP転送する。
$ scp -v -i ~/.ssh/id_rsa test.txt <ユーザ名>@fortress:~/
ファイル受信確認
1. メニュー > Compute Engine > VMインスタンス をクリックする。2. 「fortress」の「SSH」ボタンをクリックする。
3. ファイルが存在することを確認する。
$ ls test.txt4. 転送成功!
コメント
コメントを投稿