Làm cách nào để thiết lập x11vnc để truy cập bằng màn hình đăng nhập đồ họa?


50

Tôi có một máy chủ chạy Ubuntu 12.10 và cần có khả năng từ xa đến máy chủ này mà không cần đăng nhập.

Tôi đã tìm thấy nhiều giải pháp, nhưng dường như không có giải pháp nào hoạt động với 12.10.

Ai đó có thể cho tôi hướng dẫn từng bước về cách định cấu hình x11vncđể bắt đầu như một dịch vụ (trước khi đăng nhập của người dùng) để khi kết nối với VNC tôi sẽ được hiển thị màn hình đăng nhập đồ họa không?

Tôi mới sử dụng Linux, vì vậy vui lòng cung cấp càng nhiều chi tiết càng tốt trong phản hồi / nhận xét của bạn.

Cảm ơn


Số lượng của tất cả các lệnh và cấu hình mà một người dùng trung bình cần thực hiện chỉ để kết nối với màn hình của máy tính từ xa là vô lý. Trên Windows, nó chỉ hoạt động ... với một vài cú click chuột, mặc dù tính năng máy tính từ xa chỉ hoạt động trên các phiên bản đắt tiền. Tôi đã dành một vài giờ và tôi vẫn không thể khiến VNC tự động bắt đầu. Đây là lý do tại sao Linux sẽ vẫn là hệ điều hành không phổ biến đối với người dùng trung bình ... (Vui lòng không chỉ ra những thứ như "Linux được sử dụng trong Android!" Hoặc một cái gì đó. Các từ có ý nghĩa khác nhau trong ngữ cảnh khác nhau. bối cảnh.)
Rau chết tiệt

Câu trả lời:


43

Cài đặt x11vnc:

sudo apt-get install x11vnc

Tạo mật khẩu cho người dùng của bạn:

x11vnc -storepasswd

Nếu bạn đã thiết lập ssh, bạn có thể sử dụng nó để bắt đầu x11vnc giả sử bạn đã đăng nhập, nhưng hãy nhớ bảo nó sử dụng tệp mật khẩu của bạn:

x11vnc -usepw

Nếu bạn chưa đăng nhập, bạn sẽ gặp lỗi với lời giải thích:

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

Giả sử bạn đang sử dụng lightdm để đăng nhập, bạn có thể khắc phục sự cố này, bạn có thể bắt đầu x11vnc bằng lệnh:

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

Tôi không chắc đây là ý tưởng tốt nhất để chạy x11vnc với quyền root. Có lẽ ai đó có thể chỉnh sửa với một cách để truy cập đăng nhập mà không cần sử dụng sudo.

Khi điều này đang chạy, bạn sẽ có thể kết nối bằng ứng dụng khách vnc, chẳng hạn như krdc (đối với KDE). Bạn có thể muốn sử dụng GNU Screen để duy trì x11vnc chạy mà không cần mở phiên ssh

Tôi đã có thể tìm ra điều này bằng cách sử dụng http://ubuntuforums.org/showthread.php?t=2039022 .

Dưới đây là một công việc mới bắt đầu mà bạn có thể sử dụng để làm cho nó chạy khi khởi động. Nó cần phải được đặt trong /etc/init/x11vnc.conf. (Lưu ý rằng các phiên bản Ubuntu mới hơn sử dụng systemd để xem câu trả lời khác có cấu hình systemd mẫu):

# 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

Khi bạn đã tạo tệp này, bạn có thể khởi động nó bằng cách chạy: sudo start x11vnc Bạn có thể kiểm tra nhật ký tại: /var/log/upstart/x11vnc.log


1
Bạn có thể chạy x11vncnhư một người dùng bình thường, không có vấn đề. Ví dụ: ssh đến máy chủ và chạy x11vnc -safer -forever -display :0 2>&1 &trong phiên tmux (thực hành tốt), nó sẽ chạy theo $USER.
Terry Wang

Ngoài ra, chỉ để tham khảo, để thay đổi chế độ xem: superuser.com/questions/270608/iêu
Wtower

2
Điều này không giải thích làm thế nào để nó tự động khởi động theo yêu cầu (và là một yêu cầu chung cho tính năng như vậy)
LovesTha

1
Xem ở đây để biết danh sách đầy đủ các tùy chọn x11vnc. Tôi đã mất một thời gian dài để tìm thấy điều này: karlrunge.com/x11vnc/x11vnc_opts.html
Gabriel Staples

1
Và xem ở đây để có một hướng dẫn tuyệt vời về cách thiết lập này trên Raspberry Pi với tự động khởi động khi khởi động: megaleecher.net/Raspberry_Pi_VNC_Setup
Gabriel Staples

42

Các câu trả lời trên giải quyết vấn đề, mặc dù có một vài sửa đổi cho các phiên bản Ubuntu với systemd (15.04+), như sau:

  • Tận dụng -auth guesschức năng mới trong x11vnc - giúp!
  • Cập nhật cho systemd (không khởi động)

Chạy phần sau để cài đặt:

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

Chèn cái này vào tập tin:

[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

Sau đó, bắt đầu với:

sudo systemctl daemon-reload
sudo systemctl start x11vnc

Và đảm bảo dịch vụ bắt đầu khởi động:

sudo systemctl enable x11vnc

Tham chiếu bbs.archlinux.org/viewtopic.php?id=168756 cho một số lời khuyên về Yêu cầu / Afters params
babelmonk

2
Tại sao câu trả lời này không được đánh dấu là câu trả lời đúng?
Cybex

1
Nếu hoàn toàn không có hiển thị, thì người ta có thể muốn đặt độ phân giải tùy ý : sudo xrandr --fb 1920x1080.
Phương Đông

2
Nó không phải là một x11vnc nhất định sẽ hoạt động ngay lập tức. Sẽ là một ý tưởng tốt khi cung cấp lệnh thử nghiệm trước khi cam kết dịch vụ khởi động lại thất bại cứ sau 2 giây. Tôi đang sử dụng lightdm và xfce4 trên máy chủ Ubuntu 17.10 trên nền tảng đám mây không đầu. Restart-secnên làRestartSec
Ray Foss

1
Ubuntu 18.04 dường như cũng muốn RestartSechơn là Restart-sec.
Scott Willeke

14

Đây là cách thực hiện:

  1. Cài đặt máy chủ X11VNC (hoặc thông qua Trung tâm phần mềm Ubuntu -> Máy chủ X11VNC)

    sudo apt-get install x11vnc
    
  2. Tạo một tập tin mật khẩu VNC.

    sudo x11vnc -storepasswd yourVNCpasswordHERE /etc/x11vnc.pass
    
  3. Tạo một tệp công việc trong trình soạn thảo nano (hoặc gedit, leafpad, v.v.).

    sudo nano /etc/init/x11vnc.conf
    
  4. Dán cái này vào tập tin:

    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. Lưu các tập tin. Bạn đã tạo một công việc cho đăng nhập sự kiện Upstart -session-start .

  6. Khởi động lại Ubuntu.

Đó là nó! Bây giờ bạn có thể kết nối với bất kỳ ứng dụng khách VNC nào ngay cả trước khi đăng nhập.


Nhưng làm thế nào để bạn làm cho nó hoạt động khi lightdm không tạo tệp auth cho đến khi màn hình được kết nối?
LovesTha

@didibus Tôi đã cố gắng làm điều này trong Lubfox, nhưng x11vnckhông thể tự khởi động mỗi lần. Nó thậm chí sẽ không bắt đầu như một dịch vụ, cho vấn đề đó. Cú pháp tệp là chính xác và tôi có thể bắt đầu x11vnctừ shell tốt. Tôi đang thiếu gì?
linuxgringo

Điều này cũng hoạt động trên Lubfox. Cụ thể, phiên bản LubM dành cho Banana Pi của LeMaker.
AaronD

3

babelmonks trả lời dưới dạng tập lệnh bash, sao chép và lưu dưới dạng x11vnc.sh và chạy với sudo bash /path/to/file/x11vnc.sh (xin lỗi không có đủ đại diện để đăng bình luận)

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

Nếu bạn muốn cải thiện câu trả lời khác, vui lòng đề xuất chỉnh sửa cho câu trả lời và không tạo câu trả lời mới.
David Foerster

Sẽ vui vẻ thêm cái này vào của tôi nếu bạn muốn tạo một bản chỉnh sửa @ nix-badweasel
babelmonk


1

Đây là một cấu hình hoạt động cho sddm(cho KDE 5). Hiện tại, -auth guesskhông hoạt động sddm, tệp auth khác nhau mỗi lần, vì vậy chúng tôi cần một cái gì đó như thế -auth /var/run/sddm/*. Dịch vụ này trông như,

[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

Tôi phải đặt nó sau multi-user.target, nếu sau đó display-manager.service, x11vnckhông thể tìm thấy tệp auth, có thể sddmtạo tệp auth sau. Điều này đã được thử nghiệm trên Manjaro 18.


0

Tôi sử dụng trình bao của riêng mình: https://github.com/dvdvideo1234/UbfoxBatches/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

vào tập tin:

/etc/init/x11vnc.conf

Nó làm cho nó tự động khởi động khi khởi động, ngay cả trên màn hình đăng nhập, nó yêu cầu mật khẩu.


0

Cài đặt gói x11vnc

#sudo apt-get install x11vnc

Sau đó đặt mật khẩu

#x11vnc -usepw

Sau đó tạo tập lệnh khởi động cho x11vnc

#sudo nano /etc/x11vnc.sh

Trong tập tin:

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

Sau đó lưu lại

#sudo chmod 777 /etc/x11vnc.sh

Sau đó thêm tệp tập lệnh vào Trung tâm điều khiển => Ứng dụng khởi động, sau đó bấm vào Thêm

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

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

> Comment------service

Điều này là bắt buộc để thêm cho tất cả người dùng

Điều này sẽ chạy sau khi chỉ đăng nhập người dùng

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.