SSHトンネルが機能しない

SSHトンネルが機能しない

Ubuntu サーバーへの SSH トンネルを作成するには、次のコマンドを使用します。

ssh -fNg -L 8888:127.0.0.1:22 -p 1000 username@server-address  -v

次に、OSXのhttpとhttpsプロキシを127.0.0.1:8888に設定します。

そして、次のエラーが発生しました:

SSH-2.0-OpenSSH_6.6.1p1 Ubuntu-2ubuntu2

プロトコルが一致しません。

問題は何ですか?どうすれば解決できますか?

答え1

-L 8888:localhost:22 は、ローカル ポート 8888 を ssh サーバーのポート 22 に転送します。squid サーバーまたは別のプロキシが実行されていない限り、機能しません。

SSH は socks プロキシを提供できます。これを使用して、ssh トンネルを介してブラウズできます。

ssh -fNg -D 8888 -p 1000 username@server-address  -v

接続後にプロキシを設定するだけです:

localhost:8888

答え2

「Ubuntu サーバーへの SSH トンネルを作成するには、次のコマンドを使用します:

ssh -fNg -L 8888:127.0.0.1:22 -p 1000 ユーザー名@サーバーアドレス -v

OK、ポート1000にSSHサーバーが必要です

OK、クライアント プログラムはポート 8888 に接続し、そこに送信されるものはすべてポート 22 に転送されます (22 は ssh で一般的に使用されるポートです)。

ssh 内で ssh をトンネルしようとしているのであれば、それは意味があるかもしれませんが、すぐにはそれが必要なのか思いつきません。

次に、OSX httpおよびhttpsプロキシを127.0.0.1:8888に設定しました。

いいえ、すでに SSH がポート 8888 をリッスンするポートを開いています。そのポートで別のものをリッスンさせることはできません。

宛先マシン(サーバーアドレス)のポート22にhttp[s]プロキシを配置し、Webブラウザをプロキシ127.0.0.1:8888を使用するように構成すると、Webブラウザはポート8888に接続でき、宛先マシンのポート22のhttpプロキシに転送されます。これを行うと、宛先マシンのポート22で-L 8888:127.0.0.1:22リッスンする何かが必要になります。また、22を8080などのより適切なものに変更することもできます。テストしていませんが、機能すると思います。

あるいは、SSH には -D オプションもあります。これは HTTP[s] を実行できる SOCKS プロキシとして機能しますが、Web ブラウザに通常の HTTPS ではなく SOCKS プロキシに接続するように指示します。つまり、David が言ったように、ssh -fNg -D 8888 -p 1000 username@server-address -v -fNg と -v は当然必須ではありません。

関連情報