Bagaimana cara mengatur x11vnc untuk mengakses dengan layar login grafis?


50

Saya memiliki server yang menjalankan Ubuntu 12.10 dan harus dapat melakukan remote ke server ini tanpa login.

Saya telah menemukan banyak solusi, tetapi tampaknya tidak ada yang berhasil dengan 12.10.

Adakah yang bisa memberi saya petunjuk langkah demi langkah tentang cara mengkonfigurasi x11vncuntuk memulai sebagai layanan (sebelum login pengguna) sehingga ketika terhubung dengan VNC saya akan disajikan dengan layar login grafis?

Saya baru mengenal Linux, jadi tolong berikan detail sebanyak mungkin dalam tanggapan / komentar Anda.

Terima kasih


1
Jumlah semua perintah dan konfigurasi ini yang perlu dilakukan rata-rata pengguna hanya untuk terhubung ke layar komputer jarak jauh adalah konyol. Di Windows, itu hanya berfungsi ... dengan beberapa klik mouse, walaupun fitur desktop jarak jauh hanya bekerja pada edisi mahal. Saya telah menghabiskan beberapa jam, dan saya masih tidak bisa membuat VNC memulai secara otomatis. Inilah sebabnya mengapa Linux akan tetap OS tidak populer untuk pengguna rata-rata ... (Tolong jangan arahkan hal-hal seperti "Linux digunakan di Android!" Atau sesuatu. Kata-kata memiliki arti yang berbeda dalam konteks yang berbeda. Anda tahu apa yang dimaksud "Linux" dalam hal ini konteks.)
Damn Vegetables

Jawaban:


43

Jawaban di atas menyelesaikan masalah, meskipun beberapa perubahan untuk versi Ubuntu dengan systemd (15.04+), sebagai berikut:

  • Manfaatkan -auth guessfungsionalitas baru di x11vnc - yang membantu!
  • Pembaruan untuk systemd (bukan pemula)

Jalankan yang berikut ini untuk menginstal:

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

Masukkan ini ke dalam file:

[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

Kemudian, mulailah dengan:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

Dan memastikan layanan dimulai saat boot:

sudo systemctl enable x11vnc

Referensikan bbs.archlinux.org/viewtopic.php?id=168756 untuk beberapa saran tentang Membutuhkan / Afters params
babelmonk

2
mengapa jawaban ini tidak ditandai sebagai jawaban yang benar?
Cybex

1
Jika tidak ada tampilan sama sekali, maka salah satu mungkin ingin mengatur resolusi sewenang-wenang: sudo xrandr --fb 1920x1080.
Orient

2
Itu bukan diberikan x11vnc akan bekerja segera. Ini akan menjadi ide yang baik untuk memberikan perintah pengujian sebelum melakukan ke layanan yang restart pada kegagalan setiap 2 detik. Saya menggunakan lightdm dan xfce4 di server Ubuntu 17.10 cloud tanpa kepala. Restart-secseharusnyaRestartSec
Ray Foss

1
Ubuntu 18,04 juga tampaknya ingin RestartSecdaripada Restart-sec.
Scott Willeke

43

Instal x11vnc:

sudo apt-get install x11vnc

Buat kata sandi untuk pengguna Anda:

x11vnc -storepasswd

Jika Anda memiliki pengaturan ssh, Anda dapat menggunakannya untuk memulai x11vnc dengan anggapan Anda sudah masuk, tetapi ingatlah untuk mengatakannya untuk menggunakan file kata sandi Anda:

x11vnc -usepw

Jika Anda belum masuk, Anda akan mendapatkan kesalahan dengan penjelasan:

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

Dengan anggapan Anda menggunakan lightdm untuk login, Anda dapat memperbaiki masalah ini, Anda dapat menjalankan x11vnc dengan perintah:

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

Saya tidak yakin ini adalah ide terbaik untuk menjalankan x11vnc sebagai root. Mungkin seseorang dapat mengedit dengan cara mengakses login tanpa menggunakan sudo.

Setelah ini berjalan, Anda harus dapat terhubung menggunakan klien vnc seperti krdc (untuk KDE). Anda mungkin ingin menggunakan Layar GNU agar x11vnc tetap berjalan tanpa perlu sesi ssh terbuka

Saya dapat mengetahuinya menggunakan http://ubuntuforums.org/showthread.php?t=2039022 .

Berikut adalah contoh pekerjaan pemula yang dapat Anda gunakan untuk membuatnya berjalan saat startup. Itu harus dimasukkan ke /etc/init/x11vnc.conf. (Perhatikan bahwa versi terbaru Ubuntu menggunakan systemd jadi lihat jawaban lain yang memiliki contoh systemd config):

# 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

Setelah Anda membuat file ini, Anda dapat memulainya dengan menjalankan: sudo start x11vnc Anda dapat memeriksa log di: /var/log/upstart/x11vnc.log


1
Anda dapat berjalan x11vncsebagai pengguna biasa, tidak masalah. Sebagai contoh: ssh ke host dan dijalankan x11vnc -safer -forever -display :0 2>&1 &dalam sesi tmux (praktik yang baik), itu akan berjalan di bawah $USER.
Terry Wang

Juga, hanya untuk referensi, untuk mengubah viewport: superuser.com/questions/270608/…
Wtower

2
Ini tidak menjelaskan bagaimana memulainya secara otomatis seperti yang diminta (dan merupakan persyaratan umum untuk fitur seperti itu)
LovesTha

1
Lihat di sini untuk daftar lengkap opsi x11vnc. Butuh waktu lama untuk menemukan ini: karlrunge.com/x11vnc/x11vnc_opts.html
Gabriel Staples

1
Dan lihat di sini untuk tutorial yang sangat baik tentang pengaturan ini pada Raspberry Pi dengan mulai otomatis saat boot: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

14

Begini caranya:

  1. Instal server X11VNC (atau melalui Pusat Perangkat Lunak Ubuntu -> X11VNC Server)

    sudo apt-get install x11vnc
    
  2. Buat file kata sandi VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Buat file pekerjaan di editor nano (atau gedit, leafpad, dll.).

    sudo nano /etc/init/x11vnc.conf
    
  4. Rekatkan ini ke file:

    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. Simpan file. Anda menciptakan pekerjaan untuk memulai sesi-masuk-awal acara .

  6. Mulai ulang Ubuntu.

Itu dia! Anda sekarang harus dapat terhubung dengan klien VNC bahkan sebelum masuk.


Tetapi bagaimana Anda membuatnya berfungsi ketika lightdm tidak membuat file auth sampai monitor terhubung?
LovesTha

@idibus Saya sudah mencoba melakukan ini di Lubuntu, tetapi x11vncgagal melakukan autostart setiap waktu. Bahkan tidak akan memulai sebagai layanan. Sintaks file sudah benar dan saya bisa mulai x11vncdari shell dengan baik. Apa yang saya lewatkan?
linuxgringo

Ini berfungsi di Lubuntu juga. Secara khusus, versi LeMaker tentang Lubuntu untuk Banana Pi.
AaronD

3

babelmonks menjawab sebagai skrip bash, salin dan simpan sebagai x11vnc.sh & jalankan dengan sudo bash /path/to/file/x11vnc.sh (maaf tidak punya cukup perwakilan untuk mengirim komentar)

#!/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

Jika Anda ingin meningkatkan jawaban lain, harap sarankan edit untuk itu dan jangan membuat jawaban baru.
David Foerster

Dengan senang hati akan menambahkan ini ke tambang jika Anda ingin membuat edit @ nix-badweasel
babelmonk


1

Ini adalah konfigurasi untuk sddm(untuk KDE 5). Saat ini, -auth guesstidak berfungsi untuk sddm, file auth berbeda setiap kali, jadi kita perlu sesuatu seperti -auth /var/run/sddm/*. Layanan ini terlihat seperti,

[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

Saya harus meletakkannya setelah multi-user.target, jika setelah itu display-manager.service, x11vnctidak dapat menemukan file auth, mungkin sddmmenghasilkan file auth nanti. Ini diuji pada Manjaro 18.


0

Saya menggunakan shell saya sendiri: 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

ke dalam file:

/etc/init/x11vnc.conf

Itu membuatnya otomatis mulai saat boot, bahkan pada layar masuk ia meminta kata sandi.


0

Instal paket x11vnc

#sudo apt-get install x11vnc

Kemudian atur kata sandinya

#x11vnc -usepw

Kemudian buat skrip startup untuk x11vnc

#sudo nano /etc/x11vnc.sh

Dalam File:

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

Lalu simpan

#sudo chmod 777 /etc/x11vnc.sh

Kemudian tambahkan file skrip ke Control Center => Aplikasi Startup Kemudian Klik Tambah

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

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

> Comment------service

Ini harus diminta untuk menambahkan untuk semua pengguna

Ini akan berjalan setelah pengguna masuk saja

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.