AWS EC2にSSHでリモート/ローカルフォワーディングして気づいたこと
プライベートアドレスで立ち上げた計算機1(Ubuntu)のHTTP(80)
を、SSH(22)だけ開いているAWS EC2の8080ポート
へリモートフォワーディングして、そこへプライベートアドレスの計算機2(Windows)の8080ポート
へローカルフォワーディングしようと考えた。
- 計算機1:Ubuntu ← private address(IP1)
- 計算機2:Windows ← private address(IP2)
- 計算機3:AWS EC2 ← グローバルIP(外向き:IP_AO)+private IP(内向き:IP_AI)
- EC2はUbuntuを採用、SSH(22)しかポートは開いてない
- EC2のセキュリティポリシー(インバウンド) もSSH(22)しか開いてない
実験1
まずはリモートフォワーディング:
計算機1(Ubuntu)
$ ssh -R IP_AO:8080:localhost:80 username@IP_AO
続いてローカルフォワーディング
計算機2(Windows)
$ ssh -L 8080:IP_AO:8080 username@IP_AO
すると、リモートフォワーディングの方はできているが、ローカルフォワーディングの方で、Open channel的なエラーがでる。すなわち、計算機2(Windows)でブラウザからlocalhost:8080としても計算機1(Ubuntu)のWEBページは閲覧できない。
実験2
まずはリモートフォワーディング:
計算機1(Ubuntu)
$ ssh -R IP_AO:8080:localhost:80 username@IP_AO
続いてローカルフォワーディング
計算機2(Windows)
$ ssh -L 8080:IP_AI:8080 username@IP_AO
実験1との違いはIP_AI
のところ。些細なことだけど気づきにくい。これで計算機2(Windows)でブラウザからlocalhost:8080として計算機1(Ubuntu)のWEBページが閲覧できた。