

こちらのページを参照し、sshポートフォワーディングについてはおおよそ理解しました。

<http://komaken.me/blog/2014/05/23/ssh-remote-
forward%E3%82%92%E5%88%A9%E7%94%A8%E3%81%97%E3%81%A6%E5%A4%96%E9%83%A8%E3%82%B5%E3%83%BC%E3%83%90%E3%81%AE%E3%83%AA%E3%82%AF%E3%82%A8%E3%82%B9%E3%83%88%E3%82%92%E3%83%AD%E3%83%BC%E3%82%AB/>

グローバルアドレスをもった、EC2インスタンス（仮にexample.com:9876）に対し、アクセスを行った際に、  
localで起動しているサーバー(localhost:80)に転送をさせたいです。

[code]

    ※ 実際にはまだドメインをもっていないため
    EC２作成時にできるパブリック DNSであるこちらを使用しております。
    ec2-<IPアドレス>.ap-northeast-1.compute.amazonaws.com
    
[/code]

ただ、今回は、example.com/sample/hoge というURLに対してGETのリクエストが来たときに、localhost/sample/hoge
のURLに転送をしてほしいです。

`ssh -R 80:example.com:9876 username@example.com`

これらをふまえてわからない点が2点御座います。

1) 上記コマンドでsshしたあと、curlした際に、port 9876: 接続を拒否されましたと表示されます。  
尚、該当のEC2のセキュリティグループでは、ポートを開放しております。

`curl example.com:9876 -X GET`

[code]

    カスタム TCP ルール(タイプ)
    TCP(プロトコル)
    9876(ポート)
    0.0.0.0/0(送信元)
    
[/code]

2) また、質問1では、パス指定をしておりませんが、前述のlocalの指定のパスに転送するという方法についてがわかりません。

よろしくお願いします。


CC BY-SA 3.0
2017-01-01T08:58:46.547
31559
2017-01-01T18:24:31.593
2017-01-01T11:19:39.670
76
13175
question
ssh
sshポートフォワーディングで、localに転送する際に、localの指定のパスに転送したい。


(1)については、コメントにも書いてありますが、`ssh -R 9876:localhost:80
username@example.com`が正しいコマンドです。これでexample.com:9879へのアクセスがsshを実行しているPCのポート80に転送されます。  
詳しくは[この記事](http://qiita.com/mechamogera/items/b1bb9130273deb9426f5#%E3%83%AA%E3%83%A2%E3%83%BC%E3%83%88%E3%83%95%E3%82%A9%E3%83%AF%E3%83%BC%E3%83%89)を参照してください。  
なお、example.comのサーバ(EC2インスタンス)のsshd_config(`/etc/ssh/sshd_config`)に`GatewayPorts
yes`を書いておく必要があると思います。ssh_configと間違えないように気を付けてください。

(2)については何もすることはありません。sshが転送するのはトランスポート層の話で、HTTPリクエストのパスの部分はその上の層のデータなので、そのまま転送されるはずです。


CC BY-SA 3.0
2017-01-01T18:24:31.593
31563
2017-01-01T18:24:31.593
19437
31559
answer