11 Feb 2015, 17:21

SSHポートフォワードを通してhttps接続をするときの注意点

SSHローカルフォワードを使いこなしてますか?SSHを制するものはインフラを制するとも言われています。最近良く使っているのですが、ローカルポートフォワードでhttps接続をする際に間違えやすいポイントがあるので紹介します。

下記は、以前に書いたSSHのローカルポートフォワードに関する記事です。まず基本的な概念や使い方を知りたい方は書きを参照してください。

1. やりたいこと

httpsでサービスを提供しているサーバへ、SSHローカルポートフォワーディングを使って接続する。
該当のサーバへは、ネットワーク上、直接疎通性がないためにポートフォワーディングする必要がある。

具体的なユースケースだと、KubernetesやKibanaのダッシュボード(管理画面)などインターネットにそのまま公開していないが、接続にhttpsを接続に要求しており、SSH越しで接続したいなどがある。

2. 行ったこと

httpsでしか接続ができないので、ローカル端末のポート5000を接続したいサーバのポート443にフォワードすれば問題ないと思い、 下記のようにssh接続をしたあと、ブラウザから接続を行った。

``` // 対象のサーバへローカルポートフォワードのため接続する $ ssh -L5000:web-host:443 [email protected] ```

※web-host: 今回httpsで接続したサーバ
※ssh-host: ssh接続先サーバ

これでローカルフォワーディングの設定は終わったので、ブラウザから以下に接続すれば接続できると考えていた。しかし実際は接続することができなかった。それはなぜでしょうか?

``` http://localhost:5000 ```

3. 何が間違いだったか

正しくは以下のようにhttpsプロトコルで接続をしなければいけない。httpsが必要ということだ。

https://localhost:5000 

よく考えればアタリマエのこと。
URLのはじめの<http(s)>の部分はプロトコルで最後の<:5000>の部分はポート番号
httpsは443のポートを一般的に使うが、ポート443がhttpsというわけではない。

あたりまえのことだし知っていることなんだけど、見落としがちかもしれない。

4. まとめ

非常に単純なことではあるのですが間違えやすいポイントかと思います。ローカルポートフォワードの接続先で443ポートを指定したので感覚的にhttpsにしていると思いがちです。実際に接続するプロトコルがなにか、改めて見直してみるとこういったミスは軽減できるし、非常に重要なことです。

関連する記事はこちら
  • SSHでローカルポートフォワードを実際に試す (2014/12/31)
  • デスクトップUbuntuにVNC接続。ついでにSSHローカルポートフォワードの復習。 (2015/08/13)
  • 【VPS1台でインフラ勉強】多段SSH設定(おまけ) (2014/11/09)
  • Ansible、実行速度高速化の実験。ControlMasterとPipeliningについて (2015/12/01)
  • Ansibleを踏み台サーバ越しに実行する方法 (2015/09/25)
  • comments powered by Disqus
    このエントリーをはてなブックマークに追加