Apacheでsshプロクシを作る

各種アプリケーションサーバにインタネットからsshで接続するためのプロクシを構成しました。要件としてはこんな感じ。

  • インタネットからプライベートLANにあるサーバへssh接続させたい。
  • ゲートウェイにアカウントつくって、さらにってのは面倒だな。
  • ゲートウェイsshでログインさせたくない。
  • 鍵認証で直接ログインさせたい。

当初はこんなことをやっていました。

  • インタネットにTCP/22が開いているsshゲートウェイへアカウントを作成
  • 上記sshゲートウェイにもらった公開鍵を設定
  • authorized_keysへcommandを記述して、特定のサーバへsshで接続するようにコマンドを強制。

これでもいいといえばいいんですが、目的のサーバへ直接ssh接続しているわけではないのでポートフォワードや、scpなんかはできないんですね。それにこれ、設定するのがめんどくさい。

プロクシできないの

ということでsshをインタネットから受け取って、認証とか関係なしで目的地へプロクシできないかなと調べたところ、httpサーバでできるみたい。へー、httpしか喋れないのかと思ってたらポートそのままフォワードするようなこともできるみたい。
ということで作成した仮想ホスト設定はこんな感じです。

<VirtualHost ssh-proxy.hoge.com:8022>
    ProxyRequests on
    ProxyVia block
    AllowCONNECT 22
    <Proxy *>
        Require all denied
    </Proxy>
    <ProxyMatch 172.16.*>
        # 特定LANだけ許可する
        Require all granted
    </ProxyMatch>
</VirtualHost>

超簡単ですね。8022をListenする設定はどこか別のところに書く必要はあります。