GCPのVMインスタンスを外部から操作するにあたり、デフォルトのSSHポートは22で設定されているのですが、セキュリティ的なことを考慮してポート設定を変更したいと思います。
単純な話なのですが、設定した際に超基本的なことが抜けてハマったので今後のためにメモ。
1.ファイアウォールルールの設定
SSHのポート設定を変更して接続するには、まずファイアウォールルールを設定する必要があります。
GCPのVPCネットワークからファイアウォールルールを選択します。
デフォルトでいくつかのルールが登録済みで、その中に「defalut-allow-ssh」とSSHのルールが存在しており、この設定を変更するだけでもよいですが、今回は別途ルールを作成して適用させてみます。
まずは画面上部の「ファイアウォールルールの作成」をクリックします。
⚪︎名前
名前は任意の名前で構いません。
今回は例えば allow-ssh-999 としておきます。
⚪︎説明
ルールのことがわかる内容を記載します。入力なしでもかまいません。
⚪︎ログ
オフのままでOK
⚪︎ネットワーク
VMインスタンスで使用しているネットワークを選択します。
今回、インスタンスではdefaultとい名前のネットワークを使っています。
⚪︎優先度
数値が小さいほど優先度が高いです。
default-allow-sshの優先度が65534(設定範囲は0〜65535)に設定されているのでそれよりも高い優先順位を指定します。
今回はデフォルトで入力されている1000でも問題ありません。
⚪︎トラフィックの方向
VMインスタンスは「アクセスされる側(受信)」なので 上り を選択
⚪︎一致したときのアクション
今回は一致した時に接続できるようにするので 許可 を選択
⚪︎ターゲット
このファイアウォールのルールを特定のインスタンスのみに適用するか、すべてのインスタンスに適用させるかの設定です。とりあえずすべてに適用で問題ないです。
⚪︎ソースフィルタ
IPv6運用をしていなければIPv4範囲で構いません。
送信元も特定のIPアドレスを設定する必要がなければ _0.0.0.0/0_に設定しておきます。
2番目のソースフィルタ、送信先フィルタはデフォルトでOK
プロトコルトポート
ここでアクセスに使うポートの設定をします。
指定したプロトコルとポートを選択し、TCPにチェックを入れます。
その後ポート欄に任意の値を入力してください。
今回は例えば 999 とします。
UDP、その他については今回は空欄で問題ありません。
以上まで設定したら 作成 をクリックして完了させます。
ファイアウォールルールの一番上に作成した新しいルールが追加されていると思います。
※基本的に優先度順に並びます
2. インスタンスの設定
続いてVMインスタンス側に作成したファイアウォールルールを適用します。
適用したいインスタンスの編集をクリックしてネットワークタグににファイアウォールルールを追加してあげればOKです。
作成したルール「allow-999」を追記し、保存します。
※画像では default-allow-http と default-allow-https タグも記載されていますが、今回のSSHのポート変更には関係ありません。
3.仕上げ
SSHの設定変更を適応するため、インスタンスを再起動します。
再起動したらポート番号を指定してアクセスしてみます。
ssh ユーザ名@インスタンス外部IPアドレス -p 999 -i (/User/xxx/.ssh/id_rsa)
パスワード入力を求められれば設定完了です。
4.おまけ
もし.ssh/configを設定している場合はそちらのファイルのポート番号を書き換えます。
そうすればconfigを引き続き使用できます
HOST (任意の名前)
HostName インスタンス外部IPアドレス
User ユーザ名
Port 999
IdentityFile (id_rsaファイルの場所)