web-dev-qa-db-ja.com

(sshトンネル?)パブリックIPを持つ* DIFFERENT *サーバーを介してプライベートIPを持つリモートサーバーにアクセスします

次のホストを想定します。

  • localhost:私のラップトップ
  • remoteserver:SSHサーバーを実行するパブリックIPを持つサーバー。
  • private.remoteserverremoteserverからのみアクセス可能なプライベートIPを持つサーバー。

remoteserverへのSudoアクセス権がないため、rootユーザーで変更を加えることができません。

質問はprivate.remoteserverのポートにremoteserverからアクセスできますか?単一のコマンドで?

私は幸運のないSSHトンネルで少し遊んだことがあります。 private.remoteserverへのSSHエイリアスを この記事で説明 として作成します。

たとえば、localhostから実行したいとします。

curl http://private.remoteserver:8080/

private.remoteserverのポート8080に接続します。これは可能ですか?

6
David

これまでに試したことは示していませんが、これでうまくいくはずです。

ssh -L 8080:private.remoteserver:8080 remoteserver

これで実行できます:

curl http://localhost:8080/

...これは、先ほど設定したポート転送により、実際に8080のポートprivate.remoteserverに接続します。

クライアントからhttp://private.remoteserver:8080/に直接アクセスできるようにするには、(a)ある種のプロキシを設定し、(b)curl(または他のソフトウェア)を設定してプロキシを使用する必要があります。 SOCKS5オプションを使用して、ssh-Dプロキシを設定できます。

ssh -D 1080 remoteserver

そして次のことができます:

curl --socks5-hostname http://private.remoteserver:8080/

ほとんどのWebブラウザー(Firefox、Chrome)は、SOCKS5プロキシーで動作するように構成することもできます。 「ssh dynamic forwarding」を検索すると、 buntuからのこの記事 を含む多くの優れたドキュメントが見つかります。

8
larsks

実際、私は sshuttle で私の問題を解決しました:

sshuttle --dns -HN -r user@remoteserver

他のプロキシ構成は必要ありません。プライベートIPの任意のポートにアクセスできます。

curl http://private:8080/
3
David