MAGAZINE

ルーターマガジン

開発環境

SSHポートフォワーディングとVNCで安全にリモートサーバーのGUIを操作する方法

2025.09.19
Pocket

はじめに

皆さん、こんにちは。エンジニアのHatanoです。

業務において、ローカルで再現しないエラーの原因を探るため、リモートサーバー上で動いているブラウザの画面を直接見たい、という場面がありました。

このような場合、リモートサーバーのファイアウォールでVNCが使用する5900番ポートを開放し、手元のVNC Viewerから直接接続する方法が考えられます。

しかし、サーバーの公開ポートを最小限に保つというセキュリティ上の原則からも、VNCのためだけに新たなポートを開放することは避けたい場合も多いでしょう。また、VNCの通信自体が暗号化されていない場合、通信経路の安全性を別途確保する必要もあります。

そこで今回は、既存のSSH接続を活用したSSHポートフォワーディングを使い、これらの課題を解決します。この方法であれば、新たなポートをファイアウォールで開放することなく、通信経路もSSHによって安全に暗号化した上で、リモートデスクトップを操作できます。

この記事では、サーバーのセキュリティを保ちつつ、VNCでリモートデスクトップを安全に操作する手順を解説していきます。(なお、この記事ではリモートサーバー側でのVNCサーバーのセットアップには触れていません。ご了承ください。)

準備

VNC Viewerは、RealVNCのダウンロードページから導入することができます。この際、PCに直接入っているOSのRealVNCをダウンロードしてください。Linux等の仮想環境を使っている場合でも、WindowsやmacOSに導入します。

導入後に起動し、接続を作成しようとすると、このような画面が出てきます。

ここで、VNC Serverの欄にはローカルサーバーのIPアドレス・ポート番号を入力します。ポート番号は現在使われていないものであれば大丈夫ですが、後で使うので記録しておいてください。 Nameの欄は自分が分かりやすいように適当に決めて大丈夫です。

次に、SSH接続の設定を行います。この記事ではSSH接続に関する初期設定に関しては触れませんが、~/.ssh/configにリモートサーバーやSSH鍵などの設定を書いておくと、接続の際に楽になります。

接続

SSH接続が出来ることを確認したら、VNC Viewerで画面を確認・操作できるようにしていきましょう。 以下のコマンドを入力し、SSH接続・ポートフォワーディングを行います。(-L以前はssh接続のコマンド、12345の部分は先ほどVNC Viewerで設定したローカルサーバーのポート番号を入れてください)

ssh root@10.20.30.40 -p 1111 -L 12345:localhost:5900

SSH接続を行ったら、VNC Viewer側でも接続を行いましょう。そうすれば、VNC Viewerでリモートサーバー側のディスプレイを確認・操作できるはずです。

コマンド解説

Lオプションは「ローカルポートフォワーディングを設定する」ためのオプションであり、今回は引数として"VNC Viewerで設定したローカルホストのポート番号:接続先のIPアドレス:リモート側でアクセスされるポート番号"を与えています。 この引数によって、先ほどのコマンド

-L 12345:localhost:5900

では、「ローカルホストの12345番ポートから、踏み台サーバーを経由し、(踏み台サーバーから見た)ローカルホストの5900番ポートにアクセス可能となる」という設定になります。踏み台サーバーから見たローカルホストというのが分かりにくいですが、この場合は踏み台サーバー自身のことを指しています。 仮に、

ssh user@your-remote-server -p 1111 -L 12345:100.200.100.200:5900

とすれば、「ローカルホストの12345番ポートから、IPアドレスが10.20.30.40のリモートサーバー(踏み台サーバー)の1111番ポートを経由し、IPアドレスが100.200.100.200の5900番ポートへとアクセス可能」となります。

また、5900番ポートを用いていますが、このポートはRFBプロトコル(コンピュータの操作画面をネットワークを通じて別の端末にリアルタイムで転送する)で使われるレジスタードポートであるため、ここに接続することでリモートサーバーの画面を確認・操作することが出来るというわけですね。

あとがき

リモートサーバーの画面を直接確認・操作することによって、処理の流れやエラーの画面を把握し、改修を行うことにつながります。リモートでのエラーに困っている人は、ぜひ一度試してみてください。

Pocket

CONTACT

お問い合わせ・ご依頼はこちらから