今回はGCPを初めて使いGCEでVMインスタンスを作成したため、備忘録として書いています。ここでは、VMインスタンスの作成、SSH接続のための認証鍵作成・設定、22番ポートを変更し、他のポートを開けるファイアウォールルール設定までを紹介しています。
無料枠でGCEのVMインスタンスを作成
VMインスタンスを作成する前にGCPに登録していない場合は、下記ページからGCP無料トライアルに登録します。
Cloud Computing Services | Google Cloud
登録方法は下記サイトに詳しく書かれているため、参考にしてください。
「Compute Engine」→「VM インスタンス]」選択します。
VMインスタンスの画面に移動したら、作成ボタンをクリックします。
無料枠で利用するためには、以下の条件でVMインスタンスを作成する必要があります。
Google Cloud の無料プログラム | Google Cloud Free Program
無料枠で利用できる条件を元に作成すると、以下のようになりました。
リージョンはオレゴン(us-west1)を指定し、マシンタイプはf1-micro(1台まで)を指定しています。
標準永続ディスクストレージはデフォルトだと10GBなので、30GBに変更しています。
ファイアウォールは80 番と 443 番のポートを開けておきます。後からでも変更できます。
作成ボタンを押して少し待つと、VMインスタンスが作成されていることが確認できます。
SSH認証鍵作成・SSH接続
ssh-keygen コマンドを使って認証鍵を作成します。今回はWindows環境で行っています。
使用ユーザの.sshディレクトリ配下に移動します。
1 | $ cd C:\Users\sample\.ssh |
-Cオプションでユーザネームを指定できます。パスワードを尋ねられるので2回入力します。
1 2 3 4 5 6 | $ C:\Users\sample\.ssh> ssh-keygen -t rsa -f my-ssh-key -C sample_user Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in my-ssh-key. Your public key has been saved in my-ssh-key.pub. |
表示されたSSH認証鍵の公開鍵をコピーします。
1 | $ cat my-ssh-key.pub |
GCPの画面に戻り、「Compute Engine」→「メタデータ」に移動します。「SSH認証鍵」タブに移動し、編集ボタンをクリックします。
先ほどコピーした公開鍵を張り付け、保存ボタンをクリックします。
コンソール画面に戻り、SSH接続をしてみます。先ほどのパスワードを入力し、接続完了です。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | $ ssh sample_user@<指定IPアドレス> -i ~/.ssh/my-ssh-key Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '指定IPアドレス' (ECDSA) to the list of known hosts. Enter passphrase for key 'C:\Users\sample/.ssh/my-ssh-key': Linux sample-webserver 4.9.0-9-amd64 #1 SMP Debian 4.9.168-1+deb9u5 (2019-08-11) x86_64 The programs included with the Debian GNU/Linux system are free software; the exact distribution terms for each program are described in the individual files in /usr/share/doc/*/copyright. Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. Last login: Wed Aug 21 08:07:45 2019 from 203.152.218.33 sample_user@sample-webserver:~$ |
ファイアーウォール ルール設定・SSHポート番号の変更
SSHデフォルトの22番ポートに攻撃されることを防ぐために、22番ポートを閉じて代わりに他のポートを開けます。今回は40022番ポートを開けるようファイアウォールルールを作成します。
40022番ポートを開ける設定は以下の通りになりました。
ファイアウォールルールの設定が完了したら、SSHでインスタンス内に入ります。
1 | $ ssh sample_user@<指定IPアドレス> -i ~/.ssh/my-ssh-key |
sshd_configファイルを編集し、先ほど設定したポート番号「Port 40022」を追加して保存します。
1 2 3 4 5 6 7 8 9 10 11 | $ sudo vi /etc/ssh/sshd_config # The strategy used for options in the default sshd_config shipped with # OpenSSH is to specify options with their default value where # possible, but leave them commented. Uncommented options override the # default value. Port 40022 ←追加 #Port 22 #AddressFamily any #ListenAddress 0.0.0.0 #ListenAddress :: |
SSHを再起動します。
1 | $ sudo service ssh restart |
次に22番ポートを閉じるため、ファイアウォールルールを作成します。22番ポートを閉じるための設定は以下の通りになりました。
設定が完了したら、VMインスタンスの編集に移動します。先ほど設定した40022番ポートを開ける設定と22番ポートを閉める設定をネットワークタグに追加します。
VMインスタンスの設定を保存したら、22番ポートで接続できないことを確認しましょう。以下のように接続できなメッセージが出たら成功です。
1 2 | $ ssh sample_user@<指定IPアドレス> -i ~/.ssh/my-ssh-key ssh: connect to host <指定IPアドレス port 22: Connection refused |
次に40022番ポートでSSH接続できるか確認しましょう。問題なく接続できればファイアウォールルールが正しく設定されたことが確認できます。
1 | $ ssh sample_user@<指定IPアドレス> -i ~/.ssh/my-ssh-key -p 40022 |
以上、ざっくりですがGCEでVMインスタンス作成からポート番号変更までを紹介しました。