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で登録しておけばここまで設定する必要もないのですが、設定してみてわかることもあるのでやってみました。