web-dev-qa-db-ja.com

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

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

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

VNCで接続するときにグラフィカルログイン画面が表示されるように、(ユーザーログインの前に)x11vncをサービスとして開始するように構成する方法について、ステップバイステップの手順を教えてもらえますか?

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

ありがとう

50
user115250

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クライアントを使用して接続できるはずです。 GNU Screen を使用して、sshセッションを開かずに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

43
Allen

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

  • X11vncの新しい-auth guess機能を活用してください-これは役立ちます!
  • 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
42
babelmonk

方法は次のとおりです。

  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クライアントに接続できるようになります。

14
Didier A.

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
3
Nix Badweasel

以下はsddm(KDE 5の場合)の動作設定です。現在、-auth guesssddmに対して機能しません。認証ファイルは毎回異なるため、-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

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

1
sudoer

スクリプトを使用して簡単にセットアップできます。 installvncubuntu1604.sh

使用法:

chmod +x ./installvncubuntu1604.sh; Sudo ./installvncubuntu1604.sh
1
user665310

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

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

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

0
Nandhakumar M

私は自分のシェルを使用しています: 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

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