For

2023.10.3

MacOSで443ポートをsshのconfigに定義したHost名でローカルポートフォワーディングする方法

概要

この記事ではMacOSでローカルポートフォワーディングを設定する方法について書いていきます。
AWS環境の特定のVPC内のパブリックサブネットに配置されたインスタンスから、そのパブリックサブネットからの443ポートへのアクセスのみを許可するプライベートサブネットに配置されたリソースにアクセスすることを想定した設定をしていきます。
ホストPCの443ポートをローカルポートフォワーディングすることで <target-domain>:443( = https://<target-domain>) にアクセスすると特定のドメインの443ポートにリクエストされるようにします。

ポートと権限

1024以下のポートをローカルポートフォワーディングするときは、root権限が必要になります。

設定ファイル

known_hostsにアクセスしたい対象のドメインを記述しておき、sshのconfigにHostを定義しますが、root権限以外のユーザーとrootではssh接続時に参照される設定ファイルが異なります。

root権限以外のユーザー

sshのconfig: ~/.ssh/config
hosts: /etc/hosts

root

sshのconfig: /var/root/.ssh/config
hosts: /var/root/.ssh/known_hosts

今回はroot権限が必要なため、こちらの各ファイルに設定を記述していきます。

/var/root/.ssh/config

まずこのファイルが作成されていない場合は作成します。

bash_____terminal_____$ cd /var/root/.ssh
$ touch config


続いて以下のように記述します。

text_____config_____Host <your-host-alias>
    HostName        <your-host-name>
    User            <username>
    IdentityFile    ~/.ssh/<your-private-key>
    LocalForward    443 <target-domain>:443


これでホストPCの443ポートを <target-domain> の443ポートのポートフォワーディングできます。
ちなみに静的なページを表示するだけならホストPC側のポートを1443など1025以上にすることでroot権限を持たないユーザーでもローカルポートフォワーディングできますが、今回はWebアプリケーションのAPIリクエストもあることを想定してホストPCの443ポートをローカルポートフォワーディングしています。

/var/root/.ssh/known_hosts

hostsの設定は以下のように記述します。

text_____known_hosts_____127.0.0.1	<target-domain>


ssh接続

設定ができたので、あとはroot権限を持たないユーザーでログインしている状態でも、以下のようにssh接続することでポートフォワーディングできます。

bash_____terminal_____$ sudo ssh <your-host-alias>


まとめ

今回はあまり需要がないかもしれませんが1024以下のポートをローカルポートフォワーディングするときの設定方法を紹介しました。
コマンドをaliasで登録しておけばここまで設定する必要もないのですが、設定してみてわかることもあるのでやってみました。