SSHポート転送を利用すれば、リモート環境のSSHやリモートデスクトップへアクセスできます。
本記事ではリモート環境へSSH接続する手順を解説します。
この手法を使えば下記のようなことが実現できます。
- 職場から自宅のLinuxサーバへのsshアクセス
- 職場から自宅のRaspberry Piへのsshアクセス
- ネットワークが繋がっていない別開発拠点のLinuxサーバへのsshアクセス
また、この手法を応用すれば下記のようなことも実現できます。
- 職場から自宅のPCへのリモートデスクトップ接続
- ネットワークが繋がっていない別開発拠点のPCへのリモートデスクトップ接続
概要
- リモートサーバのsshポート[22]をssh リモートポートフォーワーディングで踏み台Linuxサーバのポート[2222]として転送
- 踏み台Linuxサーバのポート[2222]をssh ローカルポートフォーワーディングでローカルのポート[2223]として転送
- ローカルPCのポート[2223]へアクセスすることにより、リモートサーバのsshへ接続可能
※ どこがリモートポートフォーワーディング
で、どこがローカルポートフォーワーディング
か混乱しやすいので気を付けて下さい。
リモートサーバから踏み台Linuxサーバへの接続
基本的な接続についてはSSH を使用した Linux インスタンスへの接続を参照下さい。
- プライベートキーファイルをリモートサーバへ転送します。
この手順ではプライベートキーファイルを~/.ssh/key-pair-sample.pem
とします。 - リモートサーバのsshポート[22]をssh リモートポートフォーワーディングでEC2のポート[2222]として転送します。
EC2のパブリックIPをxxx.xxx.xxx.xxx
とします。
EC2はubuntuのAMIとします。(amazon linux の場合はユーザ名はubuntu
ではなくec2-user
です。)
ssh -R 2222:localhost:22 -i ~/.ssh/key-pair-sample.pem ubuntu@xxx.xxx.xxx.xxx
接続時の警告を回避するオプションを追加しています。
ssh -t -t -R 2222:localhost:22 -i ~/.ssh/key-pair-sample.pem -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null ec2-user@xxx.xxx.xxx
ローカルPCから踏み台Linuxサーバへの接続
- この解説ではTeratermを使ってまずローカルPCから踏み台Linuxサーバへssh接続されていることを前提とします。
接続についてはSSH を使用した Linux インスタンスへの接続を参照下さい。 - EC2のポート[2222]をssh ローカルポートフォーワーディングでローカルのポート[2223]として転送します。
ポートフォーワーディングを経由してローカルPCからリモートサーバへ接続
応用
- リモートデスクトップはTCPの3389番ポートを使用します。
- 同様の手順で3389番ポートをポートフォーワーディングすればリモート環境のPCへリモートデスクトップ接続することが可能です。
👇参考URL
本記事へのリンク
https://docs.saurus12.com/tips/ssh_port_forward
[keywords]
ssh ポートフォーワーディング Linux リモートデスクトップ
更新日:2024年02月22日