グラフィカルなログイン画面でアクセスするようにx11vncをセットアップする方法は?


50

Ubuntu 12.10を実行しているサーバーがあり、ログインせずにこのサーバーにリモート接続できる必要があります。

私は多くの解決策を見つけましたが、12.10で動作するものはありません。

x11vncVNCで接続するときにグラフィカルなログイン画面が表示されるように、サービスとして(ユーザーログインの前に)起動するように構成する方法について、手順を追って説明してください。

私はLinuxが初めてなので、回答/コメントにできるだけ詳細を記入してください。

ありがとう


平均的なユーザーがリモートコンピューターの画面に接続するためだけに必要なこれらすべてのコマンドと構成の量は、ばかげています。Windowsでは、マウスを数回クリックするだけで機能しますが、リモートデスクトップ機能は高価なエディションでのみ機能します。数時間を費やしましたが、VNCを自動的に起動させることはできませんでした。これがLinuxが平均的なユーザーにとって人気のないOSのままである理由です...(「LinuxはAndroidで使用されています!」などを指摘しないでください。言葉は文脈によって意味が異なります。コンテキスト。)
くそ野菜

回答:


43

x11vncをインストールします。

sudo apt-get install x11vnc

ユーザーのパスワードを作成します。

x11vnc -storepasswd

sshがセットアップされている場合は、すでにログインしていると仮定してx11vncを起動することができますが、パスワードファイルを使用するように忘れないでください。

x11vnc -usepw

ログインしていない場合は、説明付きのエラーが表示されます。

If NO ONE is logged into an X session yet, but there is a greeter login
program like "gdm", "kdm", "xdm", or "dtlogin" running, you will need
to find and use the raw display manager MIT-MAGIC-COOKIE file.
Some examples for various display managers:

 gdm:     -auth /var/gdm/:0.Xauth
          -auth /var/lib/gdm/:0.Xauth
 kdm:     -auth /var/lib/kdm/A:0-crWk72
          -auth /var/run/xauth/A:0-crWk72
 xdm:     -auth /var/lib/xdm/authdir/authfiles/A:0-XQvaJk
 dtlogin: -auth /var/dt/A:0-UgaaXa

ログインにlightdmを使用していると仮定すると、この問題を修正できるので、次のコマンドでx11vncを起動できます。

sudo x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

これがルートとしてx11vncを実行するのに最適なアイデアかどうかはわかりません。誰かがsudoを使用せずにログインにアクセスする方法で編集できる可能性があります。

これが実行されると、krdc(KDE用)などのvncクライアントを使用して接続できるようになります。sshセッションを開く必要なく、GNU Screenを使用してx11vncを実行し続けることができます。

http://ubuntuforums.org/showthread.php?t=2039022を使用してこれを理解することができました。

起動時に実行するために使用できるサンプルの起動ジョブを次に示します。/etc/init/x11vnc.confに配置する必要があります。(Ubuntuの新しいバージョンではsystemdが使用されているため、systemd構成のサンプルがある他の回答を参照してください):

# description "start and stop x11vnc"

description "x11vnc"

start on runlevel [2345]
stop on runlevel [^2345]

console log
#chdir /home/
#setuid 1000
#setgid 1000

respawn
respawn limit 20 5

exec x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth /var/run/lightdm/root/:0 -usepw

このファイルを作成したら、次のコマンドを実行して起動できます。sudo start x11vnc次の場所でログを確認できます:/var/log/upstart/x11vnc.log


1
x11vnc通常のユーザーとして問題なく実行できます。例:ホストにsshしてx11vnc -safer -forever -display :0 2>&1 &tmuxセッションで実行する(良い方法)と、それはの下で実行され$USERます。
テリー王

また、単に参照のために、ビューポートを変更するために:superuser.com/questions/270608/...
Wtower

2
これは、要求どおりに自動起動する方法を説明していません(そのような機能の一般的な要件です)
LovesTha

1
x11vncオプションの完全なリストについては、こちらをご覧ください。:それはこの見つけることが私に長い時間がかかったkarlrunge.com/x11vnc/x11vnc_opts.html
ガブリエル・ステープルズ

1
起動時に自動起動するRaspberry Piでこれを設定するための優れたチュートリアルについては、こちらを参照してください:megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

42

上記の回答は問題を解決しますが、次のようにsystemd(15.04+)を使用するUbuntuのバージョンに対するいくつかの修正があります。

  • -auth guessx11vnc の新機能を活用してください-これは役立ちます!
  • systemdの更新(upstartではありません)

以下を実行してインストールします。

sudo apt-get install x11vnc
sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
# for Ubuntu 15.04+
sudo nano /lib/systemd/system/x11vnc.service
# for Ubuntu 16.10+
sudo nano /etc/systemd/system/x11vnc.service

これをファイルに挿入します。

[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc
Restart=on-failure
Restart-sec=2

[Install]
WantedBy=multi-user.target

次に、次から始めます。

sudo systemctl daemon-reload
sudo systemctl start x11vnc

起動時にサービスが開始されることを確認します。

sudo systemctl enable x11vnc

参照さbbs.archlinux.org/viewtopic.php?id=168756必要/ Aftersのparamsにいくつかのアドバイスのために
babelmonk

2
この答えが正しい答えとしてマークされないのはなぜですか?
サイベックス

1
ディスプレイがまったくない場合は、任意の解像度を設定できますsudo xrandr --fb 1920x1080
オリエント

2
x11vncがすぐに動作することはありません。2秒ごとに失敗すると再起動するサービスにコミットする前に、テストコマンドを提供することをお勧めします。ヘッドレスクラウドUbuntu 17.10サーバーでlightdmとxfce4を使用しています。 Restart-secあるべきRestartSec
レイ・フォス

1
Ubuntuの18.04もしたいようだRestartSecのではなくRestart-sec
スコットウィレケ

14

方法は次のとおりです。

  1. X11VNCサーバーをインストールします(またはUbuntu Software Center-> X11VNC Serverを使用)。

    sudo apt-get install x11vnc
    
  2. VNCパスワードファイルを作成します。

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. エディターnano(またはgedit、leafpadなど)でジョブファイルを作成します。

    sudo nano /etc/init/x11vnc.conf
    
  4. これをファイルに貼り付けます:

    start on login-session-start
    
    script
    
    /usr/bin/x11vnc -xkb -forever -auth /var/run/lightdm/root/:0 -display :0 -rfbauth /etc/x11vnc.pass -rfbport 5900 -bg -o /var/log/x11vnc.log
    
    end script
    
  5. ファイルを保存します。Upstartイベントlogin-session-startのジョブを作成しました。

  6. Ubuntuを再起動します。

それでおしまい!これで、ログインする前であっても、VNCクライアントに接続できるようになります。


しかし、lightdmがモニターが接続されるまで認証ファイルを作成しない場合、どのように動作させるのでしょうか?
-LovesTha

@didibus Lubuntuでこれを実行しようとしましたが、x11vnc毎回自動起動に失敗します。さらに言えば、サービスとしては開始されません。ファイルの構文は正しいx11vncので、シェルから問題なく開始できます。私は何が欠けていますか?
linuxgringo

これはLubuntuでも機能します。具体的には、LeMakerのバナナPi用Lubuntuバージョンです。
アーロン

3

babelmonksはbashスクリプトとして回答し、x11vnc.shとしてコピーして保存し、sudo bash /path/to/file/x11vnc.shで実行します(コメントを投稿するのに十分な担当者がいません)

#!/bin/bash
#install x11vnc & set password
apt-get install x11vnc -y
x11vnc -storepasswd 123456 /etc/x11vnc.pass
#create config file for  system service
cat > /lib/systemd/system/x11vnc.service <<-EOF
[Unit]
Description="x11vnc"
Requires=display-manager.service
After=display-manager.service

[Service]
 ExecStart=/usr/bin/x11vnc -xkb -noxrecord -noxfixes -noxdamage -display :0 -auth guess -rfbauth /etc/x11vnc.pass
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target
EOF
#restart new services &  enable on boot
systemctl daemon-reload
systemctl start x11vnc
systemctl enable x11vnc

別の回答を改善したい場合は、編集を提案し、新しい回答を作成しないでください。
デビッドフォースター

編集@ nix-badweasel
babelmonk


1

構成は次のとおりですsddm(KDE 5用)。現在、-auth guessでは機能しません。sddm認証ファイルは毎回異なるため、のようなものが必要です-auth /var/run/sddm/*。サービスは次のようになります。

[Unit]
Description="x11vnc"
After=multi-user.target

[Service]
ExecStart=/bin/sh -c "/usr/bin/x11vnc -xkb -noxrecord -display :0 -auth /var/run/sddm/* -rfbauth /etc/x11vnc.pass"
ExecStop=/usr/bin/killall x11vnc

[Install]
WantedBy=multi-user.target

afterを配置するmulti-user.target必要があります。afterが認証ファイルを見つけられない場合はdisplay-manager.service、認証ファイルを後で生成します。これはManjaro 18でテストされています。x11vncsddm


0

私は自分のシェルを使用しています:https : //github.com/dvdvideo1234/UbuntuBatches/tree/master/x11VNC

start on login-session-start

script

sudo /usr/bin/x11vnc -xkb -auth /var/run/lightdm/root/:0 -noxrecord -noxfixes -noxdamage -rfbauth /var/srv/x11vnc/x11vnc.pass -forever -bg -rfbport <your_port> -o /var/srv/x11vnc/x11vnc.log

end script

ファイルに:

/etc/init/x11vnc.conf

パスワードを要求するログオン画面でも、起動時に自動起動します。


0

x11vncパッケージをインストールする

#sudo apt-get install x11vnc

次に、パスワードを設定します

#x11vnc -usepw

次に、x11vncの起動スクリプトを作成します

#sudo nano /etc/x11vnc.sh

ファイル内:

/usr/bin/x11vnc -bg -forever -shared -reopen -usepw

次に保存する

#sudo chmod 777 /etc/x11vnc.sh

次に、Control Center => Startup Applicationにスクリプトファイルを追加し、[追加]をクリックします。

> Name-----------x11vnc

> Command-----<map the script file

> Comment------service

すべてのユーザーに追加するにはこれが必要です。

これは、ユーザーのログイン後にのみ実行されます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.