วิธีการตั้งค่า x11vnc ให้เข้าถึงด้วยหน้าจอเข้าสู่ระบบแบบกราฟิก?


50

ฉันมีเซิร์ฟเวอร์ที่ใช้งาน Ubuntu 12.10 และต้องสามารถใช้รีโมตไปยังเซิร์ฟเวอร์นี้ได้โดยไม่ต้องเข้าสู่ระบบ

ฉันได้พบวิธีแก้ปัญหาหลายอย่างแล้ว แต่ดูเหมือนไม่มีใครทำงานกับ 12.10 ได้

ทุกคนสามารถให้คำแนะนำทีละขั้นตอนเกี่ยวกับวิธีการกำหนดค่าx11vncให้เริ่มต้นเป็นบริการ (ก่อนเข้าสู่ระบบของผู้ใช้) เพื่อที่เมื่อเชื่อมต่อกับ VNC ฉันจะถูกนำเสนอด้วยหน้าจอเข้าสู่ระบบแบบกราฟิก?

ฉันยังใหม่กับ Linux ดังนั้นโปรดให้รายละเอียดมากที่สุดเท่าที่จะทำได้ในการตอบสนอง / ความคิดเห็นของคุณ

ขอบคุณ


จำนวนคำสั่งและการกำหนดค่าทั้งหมดที่ผู้ใช้ทั่วไปต้องทำเพื่อเชื่อมต่อกับหน้าจอคอมพิวเตอร์ระยะไกลนั้นไร้สาระ สำหรับ Windows มันใช้งานได้ ... ด้วยการคลิกเมาส์เพียงไม่กี่ครั้งแม้ว่าคุณสมบัติเดสก์ท็อประยะไกลจะใช้ได้กับรุ่นที่มีราคาแพง ฉันใช้เวลาสองสามชั่วโมงและฉันก็ยังไม่สามารถเริ่มต้น VNC โดยอัตโนมัติ นี่คือสาเหตุที่ Linux จะยังคงไม่เป็นที่นิยมของระบบปฏิบัติการสำหรับผู้ใช้โดยเฉลี่ย ... (โปรดอย่าชี้สิ่งต่าง ๆ เช่น "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

คุณจะสามารถเชื่อมต่อโดยใช้ไคลเอ็นต์ vnc เช่น krdc (สำหรับ KDE) คุณอาจต้องการใช้หน้าจอ GNUเพื่อให้ x11vnc ทำงานต่อไปโดยไม่จำเป็นต้องเปิดเซสชัน ssh

ผมสามารถที่จะคิดออกนี้ใช้http://ubuntuforums.org/showthread.php?t=2039022

นี่คือตัวอย่างของงานธรรมดาที่คุณสามารถใช้เพื่อให้มันทำงานเมื่อเริ่มต้น จำเป็นต้องใส่ใน /etc/init/x11vnc.conf (โปรดทราบว่า Ubuntu รุ่นใหม่กว่าใช้ systemd ดังนั้นโปรดดูคำตอบอื่น ๆ ที่มีตัวอย่าง 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

เมื่อคุณสร้างไฟล์นี้แล้วคุณสามารถเริ่มต้นได้โดยเรียกใช้: 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
Gabriel Staples

1
และดูที่นี่สำหรับบทแนะนำที่ยอดเยี่ยมเกี่ยวกับการตั้งค่านี้บน Raspberry Pi พร้อมการเริ่มอัตโนมัติเมื่อบู๊ต: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

42

คำตอบข้างต้นแก้ปัญหาได้แม้ว่าจะมีการแก้ไขบางอย่างสำหรับ Ubuntu รุ่นที่มี systemd (15.04+) ดังต่อไปนี้:

  • ใช้ประโยชน์จาก-auth guessฟังก์ชั่นใหม่ใน x11vnc - ซึ่งช่วยได้!
  • อัปเดตสำหรับ systemd (ไม่พุ่งพรวด)

รันสิ่งต่อไปนี้เพื่อติดตั้ง:

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

2
ทำไมคำตอบนี้ไม่ถูกทำเครื่องหมายว่าเป็นคำตอบที่ถูกต้อง?
Cybex

1
sudo xrandr --fb 1920x1080หากมีการแสดงผลที่ไม่ทั้งหมดแล้วหนึ่งอาจต้องการที่จะตั้งค่าความละเอียดโดยพลการ:
Orient

2
มันไม่ได้ถูกกำหนด x11vnc จะทำงานได้ทันที มันเป็นความคิดที่ดีที่จะให้คำสั่งทดสอบก่อนที่จะให้บริการที่เริ่มต้นใหม่เมื่อล้มเหลวทุก 2 วินาที ฉันใช้ lightdm และ xfce4 บนเซิร์ฟเวอร์ Ubuntu 17.10 บนคลาวด์ที่ไม่มีหัว Restart-secควรเป็นRestartSec
Foss เรย์

1
อูบุนตู 18.04 นอกจากนี้ยังดูเหมือนว่าจะต้องการมากกว่าRestartSec Restart-sec
Scott Willeke

14

นี่คือวิธี:

  1. ติดตั้งเซิร์ฟเวอร์ X11VNC (หรือผ่าน Ubuntu Software Center -> เซิร์ฟเวอร์ X11VNC)

    sudo apt-get install x11vnc
    
  2. สร้างไฟล์รหัสผ่าน VNC

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. สร้างไฟล์งานใน editor 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. บันทึกไฟล์ คุณสร้างงานสำหรับเหตุการณ์พุ่งพรวดเข้าสู่ระบบเซสชั่นเริ่มต้น

  6. รีสตาร์ท Ubuntu

แค่นั้นแหละ! ตอนนี้คุณควรจะสามารถเชื่อมต่อกับไคลเอนต์ VNC ใด ๆ ก่อนที่จะเข้าสู่ระบบ


แต่คุณจะทำให้มันทำงานอย่างไรเมื่อ lightdm ไม่สร้างไฟล์ auth จนกว่าจะเชื่อมต่อกับมอนิเตอร์?
LovesTha

@didibus ฉันพยายามทำสิ่งนี้ใน Lubuntu แต่x11vncไม่สามารถเริ่มอัตโนมัติทุกครั้ง มันจะไม่เริ่มแม้แต่เป็นบริการสำหรับเรื่องนั้น ไวยากรณ์ของไฟล์นั้นถูกต้องและฉันสามารถเริ่มต้นx11vncจากเชลล์ได้ดี ฉันพลาดอะไรไป
linuxgringo

ใช้งานได้กับ Lubuntu ด้วย โดยเฉพาะรุ่น Lubuntu ของ LeMaker สำหรับ Banana Pi
AaronD

3

babelmonks ตอบเป็นสคริปต์ทุบตีคัดลอกและบันทึกเป็น x11vnc.sh & รันด้วย sudo bash /path/to/file/x11vnc.sh (ขออภัย dont มีตัวแทนเพียงพอที่จะโพสต์ความคิดเห็น)

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

หากคุณต้องการปรับปรุงคำตอบอื่น ๆ โปรดแนะนำการแก้ไขและไม่สร้างคำตอบใหม่
David Foerster

จะเพิ่มสิ่งนี้ลงในเหมืองอย่างมีความสุขหากคุณต้องการสร้างการแก้ไข @ 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

ผมต้องใส่มันหลังจากที่multi-user.targetถ้าหลังจากdisplay-manager.service, x11vncไม่สามารถหาไฟล์รับรองความถูกต้องอาจจะsddmสร้างไฟล์รับรองความถูกต้องในภายหลัง นี่คือการทดสอบใน Manjaro 18


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 => แอปพลิเคชันเริ่มต้นจากนั้นคลิกเพิ่ม

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

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

> Comment------service

ต้องเพิ่มสิ่งนี้สำหรับผู้ใช้ทั้งหมด

สิ่งนี้จะทำงานหลังจากล็อกอินของผู้ใช้เท่านั้น

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.