特定の許可されているサーバーからだけアクセスできるDBやwebページに接続する場合、sshでポートフォワーディングして、踏み台(特定のアクセス許可されているサーバー)経由で接続しに行く場合があると思います。うまく接続できない時のチェックポイント書きました。
やりたいこと
EC2サーバー経由(3.113.xx.xx)でIPアドレスが表示されるhttps://www.cman.jp/network/support/go_access.cgi
に接続する。
文法の確認
ssh -N 踏み台ホスト -L ローカルポート:リモートホスト:リモートポート
実際に発行するコマンド:
ssh -N ec2-user@3.113.xx.xx -L 3333:www.cman.jp:80`
-
ローカルポート
を-Lオプションで接続先のポートにバインドします。
上記例ではローカルの3333
経由でアクセスするように指定しています。このポート番号は他のアプリと被らなければ適当で問題ないと思います。 -
リモートホスト
はアクセス先のホスト名を指定しています。パス(network/support/go_access.cgi)は指定しなくてもドメイン以下はフォワーディングしてくれるようでした。 -
リモートポート
はhttp接続したいので80番を指定します。
ローカルのブラウザーから127.0.0.1:3333//network/support/go_access.cgi
に接続するとwww.cman.jp/network/support/go_access.cgi
のページが表示されIPアドレスがEC2サーバーのものになっているのがわかります。
エラーが発生する場合
channel 2: open failed: administratively prohibited: open failed
- リモートサーバーで
/etc/ssh/sshd_config
にAllowTcpForwarding
が許可されているか確認する。コメントアウトされていたらコメント外してyesにします。
# Example of overriding settings on a per-user basis
#Match User anoncvs
# X11Forwarding no
AllowTcpForwarding yes
# PermitTTY no
- リモートサーバーから当該のウェブページにアクセスできるか確認する
[ec2-user@ip ~]$ wget www.cman.jp
--2019-05-26 12:38:42-- http://www.cman.jp/
www.cman.jp (www.cman.jp) をDNSに問いあわせています... 157.65.27.7
www.cman.jp (www.cman.jp)|157.65.27.7|:80 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [text/html]
`index.html' に保存中
[ <=> ] 9,865 --.-K/s 時間 0s
2019-05-26 12:38:42 (137 MB/s) - `index.html' へ保存終了 [9865]
できなければ名前解決ができているか、firewalldやiptablesなどでアクセスを遮断していないか確認します。