Hos & Klien: Arch Linux

Paparan desktop hos (tetingkap sebelah kanan) dari skrin klien melalui vncviewer.

Ditulis semula.

Melalui perbincangan bersama anak-anak, saya jelaskan bahawa ada ketikanya saya akan melihat aktiviti di komputer riba mereka (menggunakan distro Arch Linux) melalui skrin sistem operasi saya (juga distro Arch Linux).

Hal ini juga sesungguhnya menyenangkan apabila saya perlu mengambil alih laptop mereka sebagai “admin” setiap kali diadukan sebarang masalah berkait sistem.

Sebelum ini, saya gunakan DWService untuk memantau dari web browser saya. Selepas merajinkan diri meneroka pakej-pakej server (pelayan) VNC, berhasil jugalah mendapatkannya dengan pakej-pakej binari yang tersedia dalam TigerVNC.

Di sini, saya catatkan cara-caranya bersama maklumat paparan yang kedua-dua peranti gunakan.

  • Desktop Environment (DE) di dalam hos: XFCE4 & LightDM (Display Manager)
  • Pengurus tetingkap (Window Manager) di dalam klien: i3-gaps
Kedua-dua sistem bersambung di bawah rangkaian dalaman yang sama.

1. x0vncserver untuk kawalan langsung paparan jauh

A. Di dalam hos

  • Pasang pakej tigervnc.

    bash
    sudo pacman -S tigervnc 
  • Tetapkan kata laluan yang disimpan secara lalai di ~/.config/tigervnc/passwd.

    bash
    vncpasswd 
  • Cara yang mudah untuk mengautomasi x0vncserver adalah dengan menambah baris di bawah ke dalam file ~/.xprofile. Server ini akan dimulakan secara auto setiap kali pengguna log masuk ke dalam pelayan X. Port 5900 akan digunakan secara lalai jika tiada sebarang proses lain yang menggunakannya terlebih dahulu.

    ~/.xprofile
    x0vncserver -localhost -rfbauth ~/.config/tigervnc/passwd -SecurityTypes none & 

B. Di dalam klien

  • Untuk akses, buka klien vncviewer melalui SSH Tunnel dengan perintah berikut.

    bash
    vncviewer -via user@ip_address -PreferredEncoding=ZRLE -Shared -passwd ~/.config/tigervnc/passwd localhost:0 
    Port selainnya ( ≥ 5901 ) boleh digunakan dengan opsyen -rfbport pada arahan x0vncserver. Paparan localhost melalui vncviewer juga mesti dikemaskini kepada nombor jujukan yang digunakan i.e. seandainya menggunakan port 5902, maka paparan di dalam klien adalah localhost:2.

    Kaedah Lain


    Aktifkan server sebenar X terus dari klien melalui SSH Tunnel:
    1. Untuk x0vncserver:
      bash
      ssh -t -L 5900:localhost:5900 user@ip_address "export DISPLAY=:0; x0vncserver -localhost -rfbauth ~/.config/tigervnc/passwd -SecurityTypes none" 
    2. Jika menggunakan x11vnc untuk kemudahan berkongi clipboard antara hos dan klien (in my case, it works both ways on Remmina, but with TigerVNC's vncviewer, the clipboard only works from the host to the client, not the other way around.):
      bash
      ssh -t -L 5902:localhost:5902 user@ip_address "x11vnc -display :0 -localhost -rfbauth ~/.config/tigervnc/passwd -rfbport 5902" 

2. vncserver untuk virtual remote desktop

A. Di dalam hos

  • Bagi tujuan kerja-kerja lain di komputer atau sistem hos misalnya yang melibatkan pentadbiran serta memerlukan GUI, disarankan untuk menjalankan pelayan VNC sebagai pengguna lain agar tidak mengganggu pelayan semasa X yang sedang berlangsung di dalam peranti sebenar.

    • Tambahkan pengguna yang berkenaan (e.g. ibu);

    • Log masuk sebagai pengguna tersebut;

    • Dan tetapkan server SSH seperti biasa agar dapat bersambung tanpa kata laluan.

  • Sunting fail berikut.

    /etc/tigervnc/vncserver.users
    # TigerVNC User assignment
    #
    # This file assigns users to specific VNC display numbers. 
    # The syntax is <display>=<username>. E.g.:
    #
    # :2=andrew
    # :3=lisa
    
    :1=ibu
  • Tambah fail config ke dalam direktori ~/.config/tigervnc dengan perincian berikut. (Semak /usr/share/xsessions untuk entri session.)

    ~/.config/tigervnc/config
    session=xfce
    geometry=1920x1080
    depth=24
    localhost
    alwaysshared
  • Mulakan servis systemd untuk pengaktifan server.

    bash
    sudo systemctl start vncserver@:1 
  • ATAU mulakannya dengan arahan berikut:

    bash
    vncserver :1 
    ...
     vncext:      Listening for VNC connections on local interface(s), port 5901 
     ...
    

B. Di dalam klien

  • Laksanakan vncviewer melalui SSH Tunnel dengan arahan berikut.

    bash
    vncviewer -via user@ip_address -PreferredEncoding=ZRLE -Shared -passwd ~/.config/tigervnc/passwd localhost:1 
  • Selain itu, Remmina juga tersedia di dalam repositori rasmi Arch Linux.

    Pemasangan:

    bash
    sudo pacman -S remmina libvncserver

    SSH Tunnel dari terminal:

    bash
    ssh -N -L 5901:localhost:5901 user@ip_address &

    (-N is for port-forwarding only, and & at the end is used to run the command in the background.)

    ✧ Di Remmina: (abaikan percampuran bahasa antara BM dan English itu. 😁)


Kali terakhir dikemaskini:

Tentang Blog & Penulis

Topik perbincangan dalam blog ini merangkumi Linux & perisian sumber terbuka, Virtual Machine, serta Typesetting system.
Fokus semasa: Full Stack Development
Minat sampingan: Analisis Data
Bakat tersembunyi hamba: Menyanyi dan melukis.

Sumber dari Wallpaper Cave.