
私はブラウザで対話できるプログラムを実行しています。これを行うには、プログラムを実行してブラウザで「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/
答え2
あなたの質問を正しく理解したかどうかはわかりません。まず、SSHはデフォルトでポート22で実行されます。
ここで興味深いのは、まずsshdが実行されていることを確認し、設定ファイルを変更した場合は実行中のポートを確認することです。
ポート8080でWebインターフェイスを実行して継続的にリッスンしている場合、このポートを介して他のアプリケーションに接続することはできません。