web-dev-qa-db-ja.com

LinuxでMSリモートデスクトップの効果を実現するにはどうすればよいですか?

Windowsマシンでは、1台のマシンAがリモートデスクトップサービスを実行し、別のマシンB(実際にはWindowsである必要はありません)がリモートデスクトップクライアントを実行している場合、Bのユーザーはセッションの制御を「盗む」ことができます。 A、そこで開かれたアプリウィンドウを確認し、それらを操作します。 RDPでは、既存のセッションがない場合に新しいセッションを開くこともできますが、それは問題ではないことに注意してください。

私の質問:AがLinuxマシンであり、進行中のXセッションでXサーバーを実行している場合、どうすれば同じことを達成できますか。

注:

  • ソリューションはMSRDP自体に基づく必要はなく、NX、VNC、またはその他の好きなものを使用できます。
  • Rootユーザーとしてのインストールを含め、AとBにソフトウェアをインストールしたいと思っています。
  • 商用ソリューションは適切ですが、私はそれらに頼りたくありません。
  • 解決策には、Aで追加のポートを開くことが含まれる場合があります(たとえば、SSHのポート22に加えて)。
  • ディストリビューションがDebianベースで、かなり最近のものであると仮定します。
  • この質問は this one に似ていますが、同じではありません。理由は次のとおりです。1。Xと2以外のサービスを実行したい。その質問では、OPは取得に興味があるようです。特定のウィンドウですが、私にとっては全体を見ることが重要です。
  • AとBの両方のユーザーが同じセッションと対話できるソリューションも関連しています。
5
einpoklum

実行中のXセッションを制御するには、Xと同じディスプレイに接続するようにVNCサーバーを構成する必要があります。通常、Xは最初のディスプレイ-:0に接続されます。

そのXセッションにはX権限も必要になります。これは、リモートのディスプレイマネージャが使用しているXAuthorityファイルにアクセスすることで見つけることができます。これはディスプレイマネージャによって異なり、ps auxおよびgrepを使用して見つけることができます。例:psaux | grep Xorgは、次のようなものを提供します。

/usr/libexec/Xorg -background none :0 -seat seat0 -auth /var/run/lightdm/root/:0 -listen tcp vt1 -noswitch

VNCで必要になるため、-authオプションに注意してください。次に、x11vncをインストールした後、リモートコンピューターでrootとして次のようなものを実行する必要があります。

/usr/bin/x11vnc -norc -forever -shared -bg -autoport 5900 -auth /var/run/lightdm/root/:0

最も簡単な方法は、起動時にこれを実行するサービスを作成することです。 systemdを使用するディストリビューションで、次のようなファイル/etc/systemd/system/x11vnc.serviceを作成します。

[Unit]
Description=VNC Server for X11
Requires=display-manager.service
After=display-manager.service

[Service]
Type=forking
ExecStart=/usr/bin/x11vnc -norc -forever -shared -bg \
        -autoport 5900 \
        -rfbauth /etc/x11vnc.pass \
        -o /var/log/x11vnc.log \
        -auth /var/run/lightdm/root/:0

[Install]
WantedBy=graphical.target

-rfbauthオプションに注意してください。事前に以下を使用してパスワードファイルを作成する必要があります。

$ Sudo x11vnc -storepasswd /etc/x11vnc.pass

または、パスワードで保護されたVNCセッションが必要ないと思われる場合は、-rfbauth行を削除してください。

起動時に有効にする:

$ Sudo systemctl enable x11vnc.service

次のコマンドで手動で開始します。

$ Sudo systemctl start x11vnc.service

これで、VNCクライアントを使用してリモートコンピューターに接続し、セッションを引き継ぐことができます。

6
garethTheRed