Tutorial

Cara Menginstal dan Mengonfigurasi VNC pada Ubuntu 20.04

UbuntuMiscellaneousApplicationsUbuntu 20.04

Pengantar

Virtual Network Computing, atau VNC, adalah sistem koneksi yang memungkinkan Anda untuk menggunakan kibor dan tetikus untuk berinteraksi dengan lingkungan desktop grafis pada server jauh. VNC memudahkan pengelolaan berkas, perangkat lunak, dan pengaturan pada server jauh bagi pengguna yang belum terbiasa dengan baris perintah.

Dalam panduan ini, Anda akan menyiapkan server VNC dengan TightVNC pada server Ubuntu 20.04 dan menghubungkannya dengan aman melalui terowongan SSH. Kemudian, Anda akan menggunakan program klien VNC pada mesin lokal Anda untuk berinteraksi dengan server Anda melalui lingkungan desktop grafis.

Prasyarat

Untuk menyelesaikan tutorial ini, Anda membutuhkan:

  • Satu server Ubuntu 20.04 dengan pengguna administratif non-root dan sebuah firewall yang dikonfigurasi dengan UFW. Untuk menyiapkan ini, ikuti panduan penyiapan server awal untuk Ubuntu 20.04 dari kami.
  • Komputer lokal yang sudah terinstal dengan klien VNC. Klien VNC yang Anda gunakan harus mendukung koneksi melalui terowongan SSH:

Langkah 1 — Menginstal Lingkungan Desktop dan Server VNC

Secara asali, server Ubuntu 20.04 tidak dilengkapi dengan lingkungan desktop grafis atau server VNC yang sudah terinstal, sehingga Anda akan mulai dengan menginstalnya.

Anda memiliki banyak pilihan terkait server VNC dan lingkungan desktop yang dapat Anda pilih. Dalam tutorial ini, Anda akan menginstal paket untuk lingkungan desktop Xfce terbaru dan paket TightVNC yang tersedia dari repositori Ubuntu resmi. Baik Xfce dan TightVNC dikenal ringan dan cepat, yang akan membantu memastikan bahwa koneksi VNC akan berjalan lancar dan stabil bahkan saat koneksi internet lambat.

Setelah menghubungkan ke server Anda dengan SSH, perbarui daftar paket Anda:

  • sudo apt update

Sekarang, instal Xfce beserta dengan paket xfce4-goodies, yang berisi beberapa peningkatan untuk lingkungan desktop:

  • sudo apt install xfce4 xfce4-goodies

Selama instalasi, Anda mungkin diminta untuk memilih manajer tampilan asali untuk Xfce. Manajer tampilan adalah program yang memungkinkan Anda untuk memilih dan log masuk ke lingkungan desktop melalui antarmuka grafis. Anda hanya akan menggunakan Xfce ketika Anda terhubung dengan klien VNC, dan dalam sesi Xfce ini, Anda sudah log masuk sebagai pengguna Ubuntu non-root. Jadi, terkait tujuan tutorial ini, pilihan manajer tampilan Anda tidak akan berpengaruh. Pilih salah satu dan tekan ENTER.

Setelah instalasi selesai, instal server TightVNC:

  • sudo apt install tightvncserver

Selanjutnya, jalankan perintah vncserver untuk mengatur kata sandi akses VNC, menciptakan berkas konfigurasi awal, dan memulai instans server VNC:

  • vncserver

Anda akan diminta untuk memasukkan dan melakukan verifikasi kata sandi untuk mengakses mesin Anda dari jarak jauh:

Output
You will require a password to access your desktops. Password: Verify:

Kata sandi harus terdiri dari antara enam dan delapan karakter. Kata sandi yang terdiri dari lebih dari 8 karakter akan otomatis terpotong.

Setelah Anda melakukan verifikasi kata sandi, Anda akan memiliki opsi untuk menciptakan kata sandi hanya-lihat. Pengguna yang log masuk dengan kata sandi hanya-lihat tidak akan bisa mengendalikan instans VNC dengan tetikus atau kibor mereka. Ini adalah opsi yang berguna jika Anda ingin menunjukkan sesuatu kepada orang lain yang menggunakan server VNC Anda, tetapi hal ini tidak diwajibkan.

Proses ini kemudian menciptakan berkas konfigurasi asali dan informasi koneksi yang diperlukan untuk server. Selain itu, proses ini meluncurkan instans server asali pada porta 5901. Porta ini disebut porta tampilan, dan oleh VNC dirujuk sebagai :1. VNC dapat meluncurkan beberapa instans pada porta tampilan lain, dengan :2 yang merujuk ke porta 5902, :3 yang merujuk ke 5903, dan seterusnya:

Output
Would you like to enter a view-only password (y/n)? n xauth: file /home/sammy/.Xauthority does not exist New 'X' desktop is your_hostname:1 Creating default startup script /home/sammy/.vnc/xstartup Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Perhatikan bahwa jika Anda ingin mengubah kata sandi Anda atau menambahkan kata sandi hanya-lihat, Anda dapat melakukannya dengan perintah vncpasswd:

  • vncpasswd

Di titik ini, server VNC sudah terinstal dan berjalan. Sekarang, mari kita mengonfigurasinya untuk menjalankan Xfce dan memberikan kita akses ke server melalui antarmuka grafis.

Langkah 2 — Mengonfigurasi Server VNC

Server VNC perlu mengetahui perintah mana yang harus dilaksanakan saat server memulai. Khususnya, VNC perlu mengetahui ke lingkungan desktop grafis mana server ini harus terhubung.

Perintah yang dijalankan server VNC saat memulai terletak di dalam berkas konfigurasi yang disebut xstartup di dalam folder .vnc di bawah direktori rumah. Skrip pemulaian diciptakan saat Anda menjalankan perintah vncserver dalam langkah sebelumnya, tetapi Anda akan menciptakan skrip Anda sendiri untuk meluncurkan desktop Xfce.

Karena Anda akan mengubah bagaimana server VNC dikonfigurasi, pertama-tama hentikan instans server VNC yang berjalan pada porta 5901 dengan perintah berikut:

  • vncserver -kill :1

Keluarannya akan terlihat seperti ini, meskipun Anda akan melihat PID yang berbeda:

Output
Killing Xtightvnc process ID 17648

Sebelum Anda memodifikasi berkas xstartup, buat cadangan berkas aslinya:

  • mv ~/.vnc/xstartup ~/.vnc/xstartup.bak

Sekarang, ciptakan berkas xstartup yang baru dan buka berkas itu dalam editor teks, seperti nano:

  • nano ~/.vnc/xstartup

Kemudian, tambahkan baris berikut pada berkas tersebut:

~/.vnc/xstartup
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &

Baris pertama adalah shebang. Dalam berkas teks biasa yang dapat dijalankan pada platform *nix, shebang memberi tahu sistem ke penafsir mana berkas tersebut harus diberikan untuk dijalankan. Dalam kasus ini, Anda memberikan berkas itu ke penafsir Bash. Ini akan memungkinkan setiap baris suksesi dapat dilaksanakan sebagai perintah, secara berurutan.

Perintah pertama dalam berkas, xrdb $HOME/.Xresources, menyuruh kerangka kerja GUI VNC untuk membaca berkas .Xresources milik pengguna server . Xresources adalah tempat di mana pengguna dapat melakukan perubahan terhadap pengaturan tertentu pada desktop grafis, seperti warna terminal, tema kursor, dan perenderan font. Perintah kedua menyuruh server untuk menjalankan Xfce. Setiap kali Anda memulai atau memulai ulang server VNC, perintah ini akan dilaksanakan secara otomatis.

Simpan dan tutup berkas setelah menambahkan baris-baris ini. Jika Anda menggunakan nano, lakukan dengan menekan CTRL + X, Y, kemudian ENTER.

Untuk memastikan server VNC dapat menggunakan berkas pemulaian awal yang baru ini dengan benar, Anda perlu membuatnya bisa dijalankan:

  • chmod +x ~/.vnc/xstartup

Kemudian, hidupkan ulang server VNC:

  • vncserver -localhost

Perhatikan bahwa kali ini, perintah meliputi opsi -localhost, yang mengikat server VNC ke antarmuka loopback server Anda. Ini akan menyebabkan VNC hanya mengizinkan koneksi yang berasal dari server di mana VNC terinstal.

Di langkah selanjutnya, Anda akan membangun terowongan SSH antara mesin lokal Anda dan server Anda, yang pada dasarnya memperdaya VNC agar berpikir bahwa koneksi dari mesin lokal Anda berasal dari server Anda. Strategi ini akan menambahkan lapisan keamanan tambahan di sekitar VNC, karena satu-satunya pengguna yang dapat mengaksesnya adalah pengguna yang telah memiliki akses SSH ke server Anda.

Anda akan melihat keluaran yang serupa dengan ini:

Output
New 'X' desktop is your_hostname:1 Starting applications specified in /home/sammy/.vnc/xstartup Log file is /home/sammy/.vnc/your_hostname:1.log

Dengan konfigurasi yang ada, Anda siap terhubung ke server VNC dari mesin lokal Anda.

Langkah 3 — Terhubung ke Desktop VNC dengan Aman

VNC sendiri tidak menggunakan protokol yang aman saat membuat koneksi. Untuk terhubung dengan aman ke server, Anda akan membangun terowongan SSH dan kemudian menyuruh klien VNC Anda untuk terhubung dengan menggunakan terowongan itu alih-alih membuat koneksi langsung.

Buat koneksi SSH pada komputer lokal Anda yang secara aman meneruskan ke koneksi localhost untuk VNC. Anda dapat melakukan ini melalui terminal pada Linux atau macOS dengan perintah ssh berikut:

  • ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

Berikut ini makna opsi perintah ssh ini:

  • -L 59000:localhost:5901: Switch -L menetapkan bahwa porta yang ditentukan pada komputer lokal (59000) adalah untuk diteruskan ke hos yang ditentukan dan porta pada server tujuan (localhost:5901, yang berarti porta 5901 pada server tujuan, yang didefinisikan sebagai your_server_ip). Perhatikan bahwa porta lokal yang Anda tentukan bersifat arbitrer, yang berarti sejauh porta itu belum terikat ke layanan lain, Anda dapat menggunakannya sebagai porta penerus untuk terowongan Anda.
  • -C: Bendera ini mengaktifkan kompresi yang dapat membantu meminimalkan konsumsi sumber daya dan mempercepat semuanya.
  • -N: Opsi ini memberi tahu ssh bahwa Anda tidak ingin melaksanakan perintah jarak jauh apa pun. Pengaturan ini berguna saat Anda hanya ingin meneruskan porta.
  • -l sammy your_server_ip: Switch -l memungkinkan Anda untuk menentukan pengguna yang Anda inginkan untuk log masuk setelah Anda terhubung ke server. Pastikan untuk mengganti sammy dan your_server_ip dengan nama pengguna non-root dan alamat IP server Anda.

Catatan: Perintah ini membangun terowongan SSH yang meneruskan informasi dari porta 5901 pada server VNC Anda ke porta 59000 pada mesin lokal Anda melalui porta 22 pada masing-masing mesin, porta asali untuk SSH. Dengan asumsi Anda telah mengikuti prasyarat panduan Penyiapan Server Awal untuk Ubuntu 20.04, Anda telah menambahkan aturan UFW untuk mengizinkan koneksi ke server Anda melalui OpenSSH.

Ini lebih aman daripada hanya membuka firewall server Anda untuk mengizinkan koneksi ke porta 5901, karena itu akan mengizinkan siapa pun mengakses server Anda melalui VNC. Dengan terhubung melalui terowongan SSH, Anda membatasi akses VNC ke mesin-mesin yang sudah memiliki akses SSH ke server.

Jika Anda menggunakan PuTTY untuk terhubung ke server Anda, Anda dapat menciptakan terowongan SSH dengan mengeklik kanan pada bilah atas jendela terminal, dan kemudian mengeklik opsi** Change Settings…**:

Klik kanan pada bilah atas untuk membuka opsi Change Settings

Temukan cabang Connection dalam menu pohon di sebelah kiri jendela PuTTY Reconfiguration. Perluas cabang SSH dan klik Tunnels. Pada layar Options controlling SSH port forwarding, masukkan 59000 sebagai Source Port dan localhost:5901 sebagai Destination, seperti ini:

Contoh konfigurasi terowongan SSH PuTTY

Kemudian, klik tombol Add, lalu tombol Apply untuk menerapkan terowongan.

Setelah terowongan berjalan, gunakan klien VNC untuk terhubung ke localhost:59000. Anda akan diminta untuk mengautentikasi dengan menggunakan kata sandi yang Anda atur pada Langkah 1.

Setelah terhubung, Anda akan melihat desktop Xfce asali. Itu akan terlihat seperti ini:

Koneksi VNC ke server Ubuntu 20.04 dengan lingkungan desktop Xfce

Anda dapat mengakses berkas-berkas di direktori rumah Anda dengan manajer berkas atau dari baris perintah, seperti yang terlihat di sini:

Manajer Berkas melalui koneksi VNC ke Ubuntu 20.04

Tekan CTRL+C pada terminal lokal Anda untuk menghentikan terowongan SSH dan kembali ke prompt Anda. Ini akan memutus sesi VNC Anda juga.

Sekarang, Anda dapat mengonfigurasi server VNC untuk berjalan sebagai layanan systemd.

Langkah 4 — Menjalankan VNC sebagai Layanan Sistem

Dengan menyiapkan server VNC untuk berjalan sebagai layanan systemd, Anda dapat memulai, menghentikan, dan memulai ulang jika membutuhkannya, seperti layanan lainnya. Anda juga dapat menggunakan perintah manajemen systemd untuk memastikan bahwa VNC memulai saat server Anda melakukan boot.

Pertama-tama, ciptakan berkas unit baru yang disebut /etc/systemd/system/vncserver@.service:

  • sudo nano /etc/systemd/system/vncserver@.service

Simbol @ pada akhir nama akan mengizinkan kita memasukkan argumen yang Anda dapat gunakan dalam konfigurasi layanan. Anda akan menggunakan ini untuk menentukan porta tampilan VNC yang Anda ingin gunakan saat Anda mengelola layanan.

Tambahkan baris-baris berikut pada berkas. Pastikan untuk mengubah nilai User, Group, WorkingDirectory, dan nama pengguna dalam nilai PIDFILE yang sesuai dengan nama pengguna Anda:

/etc/systemd/system/vncserver@.service
[Unit]
Description=Start TightVNC server at startup
After=syslog.target network.target

[Service]
Type=forking
User=sammy
Group=sammy
WorkingDirectory=/home/sammy

PIDFile=/home/sammy/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 -localhost :%i
ExecStop=/usr/bin/vncserver -kill :%i

[Install]
WantedBy=multi-user.target

Perintah ExecStartPre menghentikan VNC jika VNC sudah berjalan. Perintah ExecStart memulai VNC dan mengatur kedalaman warna ke warna 24-bita dengan resolusi 1280x800. Anda dapat memodifikasi opsi pemulaian ini sesuai kebutuhan Anda. Juga, perhatikan bahwa perintah ExecStart meliputi opsi -localhost lagi.

Simpan dan tutup berkas.

Selanjutnya, buat sistem menyadari kehadiran berkas unit yang baru:

  • sudo systemctl daemon-reload

Aktifkan berkas unit:

  • sudo systemctl enable vncserver@1.service

Angka 1 yang mengikuti tanda @ menandakan di nomor tampilan mana layanan akan muncul, yang dalam kasus ini adalah di nomor asali :1 seperti yang dibahas dalam Langkah 2.

Hentikan instans server VNC saat ini jika masih berjalan:

  • vncserver -kill :1

Kemudian, jalankan sebagaimana Anda ingin memulai layanan systemd lainnya:

  • sudo systemctl start vncserver@1

Anda dapat memverifikasi bahwa VNC telah memulai dengan perintah ini:

  • sudo systemctl status vncserver@1

Jika VNC memulai dengan benar, keluarannya akan terlihat seperti ini:

Output
● vncserver@1.service - Start TightVNC server at startup Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2020-05-07 17:23:50 UTC; 6s ago Process: 39768 ExecStartPre=/usr/bin/vncserver -kill :1 > /dev/null 2>&1 (code=exited, status=2) Process: 39772 ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1 (code=exited, status=0/SUCCESS) Main PID: 39795 (Xtightvnc) ...

Server VNC Anda sekarang siap digunakan kapan pun server Anda melakukan boot, dan Anda dapat mengelolanya dengan perintah systemctl seperti layanan systemd lainnya.

Namun, tidak akan ada perbedaan di sisi klien. Untuk menghubungkan ulang, mulai terowongan SSH Anda kembali.

  • ssh -L 59000:localhost:5901 -C -N -l sammy your_server_ip

Lalu buat koneksi baru menggunakan perangkat lunak klien VNC ke localhost:59000 untuk terhubung ke server Anda.

Kesimpulan

Anda sekarang memiliki server VNC yang aman dan berfungsi pada server Ubuntu 20.04. Kini Anda dapat mengelola berkas, perangkat lunak, dan pengaturan Anda dengan antarmuka grafis yang ramah pengguna, dan Anda akan dapat menjalankan perangkat lunak grafis seperti peramban web dari jarak jauh.

Creative Commons License