GCEで永久無料サーバー構築の備忘録
はじめに
個人的にポートフォリオや勉強で作成したサイトなど公開できるサーバーが欲しかった。お金をできる限りかけたくなかったのでGCEの無料枠で済む範囲の設定でサーバーを立ち上げて見ました。
環境
GCE
CentOS7
apacheかnginx(悩み中)
参考サイト
手順
GCEでインスタンス立ち上げ
【注意点】
・リージョンをus-*1から選択する
・1つのf1-micro VM インスタンス
・30GB以内 の永続ストレージ
・80,443ポートを解放する
HTTPトラフィックとHTTPSトラフィックを許可するにチェックをつける。
この設定で一旦作成する。
IPアドレスを固定する
ナビゲーションメニュー>VPCネットワーク>外部IPアドレス から
タイプ>静的を選択。名前を適当につけてOK。
設定もしていない状態だと外部IPアドレスはエフェメラルの状態。
この状態だとインスタンスが立ち上がるたびに違うIPアドレスに変わる。
インスタンスが動いていれば、固定のIPアドレスにしても無料で使える。
SSHの設定
1、ポートの変更、追加を行う
ナビゲーションメニュー>VPCネットワーク>ファイアウォールルールから
追加するポートの設定を行う(下記では2022を)
2、サーバーにタグつけ
ナビゲーションメニュー>Compute Engine>VM インスタンスから
先ほど作成したインスタンスを選択、編集
下記の様に作成したファイアウォールルールを追加する
保存したら設定したルールが適用されることになる
3、sshd_config のポート番号の設定を変更
画像 SSH▼ の部分をクリック
すると黒い画面(ターミナル)が出てきます
ここで下記のコマンドを打ちます
sudo vi /etc/ssh/sshd_config
すると英語の長文が出てくるので
i を打つ(インサートモードになり、編集可能になる)
下記の様に変更
#Port 22
#2022の部分は個人で決めたポート番号にする
Port 2022
変更したら escでインサートモード終了、:w で保存、 :p で終了
再起動のコマンドを打ちます。
sudo systemctl restart sshd
再起動時に下記の様なエラーが出た場合
Job for sshd.service failed because the control process exited with error code. See "systemctl status sshd.service"
and "journalctl -xe" for details.
対処法
yumでpolicycoreutils-pythonをインストールする
sudo yum install policycoreutils-python
導入出来たら、以下のコマンドで2022ポートを許可する。
sudo semanage port -a -t ssh_port_t -p tcp 2022
これで再起動のコマンドが打てる様になる。
再起動したら新しく設定したポート番号で待機するようになる。
sshd_config の編集をしたターミナルは閉じずにそのままで、新しく設定したポートでログインできるかを、新規に繋いで確認する。確認できたら閉じてOK
3、22番ポートを閉じる
先ほど同様にファイアウォールルールを追加する
【注意点】
一致したときのアクション:拒否 を選択する
4、サーバーにタグつけ
これで一通りの設定は完了です。
おまけ
SSHで鍵認証を行いたいとき
公開鍵の登録方法・場所
ナビゲーションメニュー>Compute Engine>メタデータ>SSH 認証鍵
ここに登録する