自宅でテレワークをしているが会社の社内にある Web や RDP サーバにアクセスしたい場合、社内に設置してあるグローバルIPを持つサーバにVPN サーバを立ち上げキーを発行して、ローカルのPCでVPNクライアントを立ち上げてキーを読み込ませてVPN コネクションを張るのが長期運用の為には良いのかもしれませんが設置のハードルが少々高いです。
しかし、ssh のポートフォワーディング機能を使えば、社外からグローバルIPを持つサーバに ssh でアクセスできれば、その先にある社内のローカルサーバに自在にアクセス出来るようになります。
まず試す前にグローバルIPを持つサーバの sshd の TCP フォワーディングが有効になっているか確認します。
Ubuntu ではデフォルト有効になっていますが、無効であるなら yes として sshd を再起動します。
/etc/ssh/sshd_config
AllowTcpForwarding yes
$ sudo systemctl restart sshd
8080-------------------->80 localhost remote target --ssh-->
次にリモート転送を行いたい場合は、ローカルで以下のコマンドを実行して remote にログインすると、remote の 8080 ポートにアクセスするとtarget のサーバの 80 ポートにアクセスできるようになります。
# localhost で実行
$ ssh -R 8080:target:80 username@remote -N
なおリモート転送を行う場合は、GatewayPorts 有効にする必要があります。
/etc/ssh/sshd_config
GatewayPorts yes
しかしリモート転送は、社員みんなで共有するには便利だが、誰からも http://remote:8080 へのアクセスを許可してしまうので、ファイヤーウォールなどでの IPアドレスのアクセス制限が必要になってくる。
-L : ローカル転送
-R : リモート転送
-N : コマンド実行無し
-f : バックグラウンドで実行