Bu yazıda “Pardus üzerine bir VNC sunucusu nasıl kurulur ve yapılandırılır?” sorusunun cevapları yatıyor. Bu soruların cevaplarını henüz bilmiyorsanız doğru yerdesiniz. 🙂 

VNC nedir? 

VNC (Virtual Network Computing), kullanmakta olduğunuz bilgisayar üzerinden başka bir bilgisayarı uzaktan kontrol etmeye yarayan bir grafik masaüstü paylaşım sistemidir. Kısacası bir uzak masaüstü bağlantı protokolü de diyebiliriz.

Öncelikle yapmanız gerekenler

VNC sunucu kurmadan önce yapmanız gereken ilk şey, eğer kurulu değilse sunucu bilgisayara bir masaüstü ortamı kurmak. Bu açıdan önerim hızlı, kararlı ve hafif bir masaüstü ortamı olan XFCE olacaktır. Pardus’ta XFCE masaüstü ortamını kurmak için uçbirime şu komutu girmeniz yeterli olacaktır.

sudo apt-get install pardus-xfce-desktop

İnternet bağlantınızın hızına ve donanımınızın özelliklerine bağlı olarak bu süreç biraz uzun sürebilir.

Masaüstü ortamını kurduysanız veya zaten kuruluysa, VNC sunucu kurulumuna geçebilirsiniz. Bu yazıda TigerVNC’yi tercih edeceğiz.

TigerVNC’yi kurmak için uçbirime aşağıdaki komutu girmeniz yeterli olacaktır.

sudo apt install tigervnc-standalone-server tigervnc-common tigervnc-viewer

Kurulumu gerçekleştirdikten sonra uçbirime vncserver komutunu girerek ilk yapılandırmanızı oluşturun. Çıktılar yaklaşık aşağıdaki gibi olmalı.

You will require a password to access your desktops.
Password:
Verify:
Would you like to enter a view-only password (y/n)? n
New 'pardus:1 (prdsmehmetstc)' desktop at :1 on machine pardus
Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/prdsmehmetstc/.vnc/pardus:1.log
Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/prdsmehmetstc/.vnc/passwd :1 to connect to the VNC server.

Yukarıdaki çıktıda sunucu adından (yukarıdaki çıktıda “pardus” olarak geçiyor) sonra gelen :1 ifadesi VNC sunucusunun çalıştığı TCP bağlantı noktasını gösterir. VNC sunucularındaki port numarası ise :1 ifadesine x dersek 5900 + x şeklindedir. Bir başka deyişle, şu anda VNC sunucusu 5901 portu üzerinden yayın yapmakta. Bir tane daha VNC sunucusu çalıştırırsak o da 5902 portu üzerinden yayın yapacak. 

vncserver komutunu çalıştırdıktan sonra VNC ile alakalı ayarlar ve bilgiler ~/.vnc dizininde yer alacak. 

VNC sunucusunu kapatmak için ise vncserver -kill :x komutunu girmeniz yeterli olacaktır. x yerine kapatmak istediğiniz bağlantı noktasını (1,2 gibi) girmeniz gerekmekte. 

Bir sonraki adıma geçmeden önce çalışan sunucuları kapatmalıyız. Bunun için gireceğim komut şu olacak:

vncserver -kill :1

Bu komutun çıktısı ise yaklaşık şöyle olmalı:

Killing Xtigervnc process ID 6189... success!

VNC sunucusunu yapılandıralım

Önceki aşamadaki her şeyi eksiksiz ve hatasız yaptıysanız artık yapılandırma kısmına geçmeye hak kazandınız demektir. Şimdi yapacağımız şey TigerVNC’nin açıldığı zaman kullanacağı masaüstünü belirlemek olacak. Önceki aşamada XFCE masaüstünü örnek olarak kurduğumuz için şimdi XFCE’yi öntanımlı masaüstü olarak tanımlayacağız. Bunun için uçbirime şu komutu girelim.

nano ~/.vnc/xstartup

Tam burada Vim’cilerin seslerini duyar gibi oldum. nano yerine vim de kullanabilirsiniz tabii 🙂 Eğer bu dosyayı daha önce oluşturmadıysanız, ki sanmıyorum, karşınıza bomboş bir sayfa gelecektir. Eğer daha önce oluşturduysanız, daha önce yapılan ayarları korumak için mv ~/.vnc/xstartup ~/.vnc/xstartup.bak komutunu girerek ayarları yedeklemenizi öneririm. Yedekledikten sonra yukarıdaki komutu tekrar girerek dosyayı yeniden oluşturmanız gerekmekte.

Şimdi açılan boş sayfaya şunları yazalım:

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

İlk satırda yer alan xrdb $HOME/.Xresources komutu, VNC’nin GUI framework’üne kullanıcının X sunucusu ayarlarını okumasını söyler. İkinci komut ise XFCE masaüstü ortamını başlatır. 

Dosyayı kaydedip kapattıktan sonra ise dosyayı çalıştırılabilir yapmamız gerekiyor. Bunu yapmak için ise şu komutu girelim:

sudo chmod u+x ~/.vnc/xstartup

Artık bağlantı kurmaya hazırsınız. Son olarak bir aşama daha var, VNC sunucusunu systemd servisleri arasına eklemek istiyorsanız bu son aşamayı da okumadan geçmemenizi öneririm.

Systemd birim dosyası oluşturma

Systemd birim dosyası oluşturarak VNC sunucusunu Systemd servisleri arasına ekleyeceğiz. Bu sayede bu servisi gerektiğinde kolayca başlatıp durdurabileceğiz. 

Öncelikle yapmanız gereken, şu komutu uçbirime girerek ilgili dosyayı oluşturmak.

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

Komutu girdikten sonra şu satırları oraya yazalım.

[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=kullanici-adiniz
PAMName=login
PIDFile=/home/%u/.vnc/%H%i.pid
ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill :%i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/vncserver :%i -geometry 1280x720 -alwaysshared -fg
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target

Önemli Not: Yukarıda işaretlenmiş olan kısımları kendinize göre değiştirmeyi unutmayın! 

Dosyada gerekli değişiklikleri yaptıktan sonra kaydedip kapatın. Ardından şu komutu girerek Systemd’nin oluşturduğumuz bu dosyayı servis olarak tanımasını sağlayalım.

sudo systemctl daemon-reload

Ardından oluşturduğumuz servisi etkinleştirelim.

sudo systemctl enable vncserver@1.service

Yukarıdaki komutta @ işaretinden sonra gelen “1”, daha önce bahsetmiş olduğumuz port numarasını belirlemek için yazıldı. Bu servisi çalıştırdığımızda VNC, 5901 portundan yayına geçecek.

Servisi çalıştırmak için ise şu komutu girelim:

sudo systemctl start vncserver@1.service

Servisin durumunu öğrenmek için ise şu komutu girebilirsiniz.

sudo systemctl status vncserver@1.service

Eğer servisi çalıştırdıysanız yukarıdaki komutun çıktısı yaklaşık olarak şöyle olmalı:

prdsmehmetstc@pardus ~> sudo systemctl status vncserver@1.service
● vncserver@1.service - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/vncserver@.service; enabled; vendor preset: enabled)
   Active: active (running) since Sat 2021-05-29 14:33:19 +03; 2s ago
  Process: 8096 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
  Process: 8103 ExecStart=/usr/bin/vncserver :1 -geometry 1440x900 -alwaysshared -fg (code=exited, status=0/SUCCESS)
  Process: 8134 ExecStop=/usr/bin/vncserver -kill :1 (code=exited, status=0/SUCCESS)
 Main PID: 8103 (code=exited, status=0/SUCCESS)
May 29 14:33:18 pardus systemd[1]: Starting Remote desktop service (VNC)...
May 29 14:33:18 pardus systemd[8096]: pam_unix(login:session): session opened for user prdsmehmetstc by (uid=0)
May 29 14:33:18 pardus systemd[1]: Started Remote desktop service (VNC).
May 29 14:33:18 pardus systemd[8103]: pam_unix(login:session): session opened for user prdsmehmetstc by (uid=0)
May 29 14:33:19 pardus systemd[8134]: pam_unix(login:session): session opened for user prdsmehmetstc by (uid=0)
May 29 14:33:19 pardus systemd[1]: vncserver@1.service: Succeeded.

Tebrikler! Bilgisayarınıza uzaktan bağlanmanın keyfini çıkarın. 🙂