私はブラウザで対話できるプログラムを実行しています。これを行うには、プログラムを実行してブラウザで「localhost:8080」を開きます(8080が正しいポートの場合)。
しかし、私はサーバー上でプログラムを実行しており、SSH接続を介して自分のブラウザを使用して自分のコンピュータからそのプログラムにアクセスしようとしています。これは、プログラムが使用するSSH接続で同じポートを使用する必要があることを意味します。しかし、それはうまくいきません。私の理論は、プログラムとSSH接続がポートのために戦っているということです。
つまり、私の質問は次のようになります。 SSH接続にポート8080を使用せずにサーバーのポート8080にどのようにアクセスしますか?
追加の注意:SSH接続でX転送(-Xオプション)を使用し、サーバー上でブラウザを実行してみました。これはうまくいきますが、非常に遅いです。
ベストアンサー1
ssh
リモートサーバーでブラウザを実行する代わりに、トンネルを使用してローカルポートをリモートサーバーのローカルポートに転送します。
localhost:8080
リモートホストにポート8080があると仮定すると、このコマンドはローカルシステムに着信ポート8080(最初のポート)を作成し、そのポートへのすべての接続をトンネリングしてlocalhost:8080
実行します。リモートホストのコンテキストで- つまり、remote_host自体のポート8080です。セッションが端末で開いていることを確認する-f
には、sshにバックグラウンドで実行し続けるように指示します。ssh
local$ ssh -f -L localhost:8080:localhost:8080 remote_host
local$ firefox http://localhost:8080/