SSHでサーバーに接続して作業を行う場合、たとえばリモートマシンでブラウザを開いてローカルマシンに表示するにはどうすればよいでしょうか。
ローカル マシンで Ubuntu デスクトップを実行しています。サーバー側では Ubuntu 16.04 サーバーを使用しています。これは開発サーバーなので、次のものを使用する Python スクリプトがあります。
webbrowser.open("https://" + url)
必要な URL でデフォルトのブラウザを開きます。
つまり、サーバーにログインしているときに、ローカル マシン上のリンクを開くにはどうすればよいのでしょうか。
もっと一般的に言えば、Ubuntu リモート サーバー マシンをローカル マシンのように使用するにはどうすればよいですか?
以来:
- サーバー側のマシンには GUI は必要ありません。
- サーバー GUI をインストールして REMOTE DESKTOP を使用したくありません。
自分の開発サーバーにアクセスし、ローカルマシン上で簡単なプログラムを開くにはどうすればよいですか?
答え1
これを行う簡単な方法は、SSH の socks プロキシを使用することです。man ページから引用:
-D [バインドアドレス:]ポート
ローカルの「動的」アプリケーション レベルのポート転送を指定します。これは、ローカル側のポートをリッスンするソケットを割り当て、オプションで指定された bind_address にバインドすることによって機能します。このポートへの接続が行われるたびに、接続は安全なチャネルを介して転送され、アプリケーション プロトコルを使用してリモート マシンからの接続先が決定されます。
ブラウザは socks プロキシを使用することもできます。設定方法は使用するブラウザによって異なりますが、私は通常、socks 経由の作業には 1 つのブラウザを使用し、プロキシを使用しない作業には別のブラウザを使用します。
まず、次のコマンドで ssh を起動します。
ssh -D1080 [email protected]
これにより、SSH が実行され、リモート ホストへの SOCKS プロキシが作成され、ポート 1080 でリッスンします。ブラウザーで、ローカルホストのポート 1080 の SOCKS プロキシを入力します。Firefox では、これは [設定] - [詳細] - [ネットワーク] の下にあります。
これにより、ブラウザからリモート マシンへのトラフィックがトンネリングされ、トラフィックはリモート マシンから送信されたように見えます。
答え2
まず、サーバーのsshd_configで、次のようにX11転送を有効にします。
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost yes
次にサーバーにSSH接続します。
$ ssh user@server -C -X
次にFirefoxを起動します
$ firefox