Remote GUI access to Linux computer using Tightvnc with systemd
On 1月 13, 2022 by adminこれはRaspberry PiにTightVNCをインストールするためのガイドである。 Raspbian の最新バージョンでは、代替のリモートデスクトップツールである RealVNC が含まれています。 もし RealVNC を使いたいなら、raspi-config ツールで簡単に有効にできます。このガイドは、systemd を使って起動時に実行する他のアプリケーションの作成について理解したい人にとって便利でしょう。
コマンドをタイプすることに抵抗がなければ、コマンドラインはリモート Linux コンピュータを管理する素晴らしい方法ですが、時には GUI を表示することが必要な場合があります。 非常に長いケーブルがない場合、これを行う最良の方法の 1 つは、VNC プロトコル (Virtual Network Computing) の使用です。
TightVNC vs Real VNC
TightVNCサーバーは、TightVNCクライアントを使って別のマシンに複製される別の仮想ウィンドウを作成します。 これは、通常デフォルト画面をエコーする RealVNC とは異なります。
多くの人がリモート デスクトップ ツールを考えるとき、通常は RealVNC の動作方法を思い浮かべると思います。 この場合、マウスを動かすか、アプリケーションを起動すると、物理的に接続された画面 (通常は HDMI) とネットワーク上のリモート クライアントに同じ出力が表示されます。
TightVNC は、メイン画面とは異なるものを実行したい場合に有用です。 たとえば、メイン画面 (HDMI 経由) にステータス表示を行い、ラップトップで表示される設定用に別のディスプレイを使用するような場合に使用できます。
TightVNCのもうひとつの利点は、無料のオープンソース ソフトウェアであることです。 そのため、使用に関する制限はなく、ソースコードを閲覧し変更することができます。 Real VNC は VNC の商用版であり、ライセンスが必要です。 Real VNCはRaspberry Pi上で個人的に使用する分には無料ですが、他のことをする場合には商用ライセンスが必要な場合があります。
Systemd を使ったスタートアップスクリプトのインストール
Raspberry Pi (Debian ベース) での設定方法について説明します。 Systemd スタートアップ ファイルを使用する他の Debian ベースのディストリビューション (例: Ubuntu) でも、同様の手順が必要です。
Debian LinuxでRaspberry Piをヘッドレスで動かす方法と組み合わせて使えば、モニターに接続することなくRaspberry Piをリモートアクセスできるように設定できます。 TightVNC を選択した理由は、無料のオープン ソース ソフトウェア (GPL2) であり、遅いネットワーク (インターネット) で動作できるように圧縮を提供し、ソフトウェア リポジトリで容易に利用できるからです。
クライアント サーバー モデル
VNC は従来のクライアント サーバー モデルに従っています。 サーバソフトウェアはアクセスするホスト上で実行され、クライアントソフトウェアはホストを制御したいローカルマシン上で実行される。 サーバーとクライアントは同じである必要はありませんが (たとえば、サーバーが TightVNC である場合、クライアントは RealVNC であることができます)、いくつかの機能は、同じクライアントとサーバーが使用されている場合にのみ動作します。
TightVNCサーバーソフトウェアのインストール
最初に、sudo apt update
を使ってソフトウェアのリポジトリ情報をリフレッシュしてください。
リポジトリからサーバーソフトウェアをインストールします:sudo apt install tightvncserver
サーバーの起動とパスワードの設定
サーバーを初めて起動すると、パスワードを設定するよう促されます。 これは、リモート接続時に使用するパスワードです。
/usr/bin/tightvncserver
特別な必要がない限り、表示専用のパスワードを作成する必要はありません。 この場合、New 'X' desktop is raspberrypi:1
は、それが仮想デスクトップ 1 であることを意味します。 クライアントで IP アドレスの最後に :1 を付けて接続すると、後で自動的に起動するように設定されます。 tightvncserver を起動するたびに、次に利用可能なデスクトップを使用しますが、ほとんどの場合、1 つで済みます。
Adding Tightvnc to systemd startup
Tightvnc を自動的に起動するには、新しいスタートアップ ファイルを作成する必要があります。 私はこれをtightvncserver.serviceと呼んでいます。 これは root ユーザーで作成する必要があるので、sudosudo nano /etc/systemd/system/tightvncserver.service
-
-
Description=TightVNC remote desktop server
-
After=sshd.service
-
-
-
Type=dbus
-
ExecStart=/usr/bin/tightvncserver :1
-
User=pi
-
Type=forking
-
-
-
WantedBy=multi-user.target
で実行する必要があるのですが、このような場合、次のようなコマンドを使用します。
8行目でユーザ名を変更しなければならない可能性があります。 現在、Raspberry Pi Raspbianイメージのデフォルトユーザー名であるpiに設定されています。 これをTightVNCにログインしたいユーザー名に設定します。
Cange the file so it is owned by rootsudo chown root:root /etc/systemd/system/tightvncserver.service
Make the file executable by runningsudo chmod 755 /etc/systemd/system/tightvncserver.service
It’s good idea to test the script at this point rather until a reboot after the time is. これは、sudo systemctl start tightvncserver.service
次のエラーメッセージが表示されても心配しないでください、これは、すでに tightvnc を開始しているためです
Enable startup at boot usingsudo systemctl enable tightvncserver.service
TightVNC will now startup at startup. この時点で、動作していることを確認するために再起動することをお勧めしますが、代わりに systemctl コマンドを使用してサービスを停止および起動することもできます。
これは、コンピュータ上で TightVNC のインスタンスを 1 つだけ実行するために設計されていることに注意してください。 TightVNC の特定のインスタンスを開始および停止できるようにしたい場合は、スタートアップ スクリプトを適切に調整する必要があります。
Linux コンピュータへの TightvNC ビューア (VNC クライアント) のインストール
Linux コンピュータでは、ビューアを sudo apt install xtightvncviewer
またはリポジトリにない場合は、次のようにしてインストールできます: sudo apt-get install ssvnc
Debian / Ubuntu ベース ディストリビューションでのみ機能し、他のディストリビューションでは通常のパッケージマネージャを使用してください。
私が Kubuntu コンピュータにインストールした ssvnc は tightvnc に基づいていますが、GUI で ssh トンネリング (後述) を設定する機能も備えていることに注意してください。
Login usingxtightvncviewer 192.168.1.6:1
(必要に応じて自分の IP アドレスに置き換える)
Tightvnc ビューを Windows コンピュータにインストールする
Windows からまたは TightVNC からダウンロードする Java クライアントを使ってアクセスするには、TightVNC.exe をインストールします。com
Securing TightVNC
TightVNC は、パスワードを知っている誰もが、実行中のユーザーとしてログインすることができます。 また、暗号化なしでこれを行うので、誰でもセッションを詮索することができます。 幸運にも、安全な解決策があります。それは、ssh (secure shell) ログインで接続をトンネル化することです。
最初のステップは、Tightvnc をローカル コンピュータにのみ制限することです。 これは、tightvncserver を起動するときに、オプション -localhost を追加することで行われます。 これを行うには、/etc/systemd/system/tightvncserver.service ファイルの 7 行目を次のように編集します:>
ExecStart=/usr/bin/tightvncserver -localhost :1
それからサーバーを再起動します。
ssh を使用してログインするには – 最初に ssh を使用してホスト コンピュータにログインします ssh [email protected] -L 5901:localhost:5901
-Lオプションは、現在のコンピュータ(デフォルト)ポート 5901 とホスト コンピュータ(ローカルホストとしてのポート 5901)間のトンネルを作成します。 ポート 5901 はディスプレイ 1 のデフォルトのポートで、ディスプレイ 2 は 5902 などです。
ここで tightvnc を使用して接続するには、コマンドxtightvncviewer 127.0.0.1:1
を使用することに注意してください。
Windowsを使用している場合、sshトンネルはPuTTY
それからvncクライアントを使って127.0.0.1:1で接続します。
これでモニタやキーボードなしでRaspberry Pi上でGUIを使ってアプリケーションが実行されるようになりました。
Starting your window manager
以上の手順は、Raspbian (Debian) が動作する Raspberry Pi であれば十分です。 他のシステムでは、通常のウィンドウマネージャやアプリケーションランチャを起動するために、さらに設定を変更する必要があるかもしれません。 接続時に空白画面が表示される場合は、~/.vnc/xstartup ファイルを編集し、/etc/X11/Xsession 行を以下のいずれかに置き換えてください。
exec ck-launch-session startlxde#for an lxde sessionexec ck-launch-session gnome-session#for a gnome-sessionexec ck-launch-session openbox-session#for an openbox desktopexec ck-launch-session startxfce4#for an xfce desktopexec ck-launch-session icewm#for an icewm desktopexec ck-launch-session startkde#for a kde desktop
例えば Ubuntu では gnome、xubuntu では xfce、kubuntu は kde のエントリを使用します。 Raspberry Pi は lxde を使用しますが、これは Raspberry Pi 上で自動的に起動されるので、xstartup ファイルに追加する必要はありません。
コメントを残す