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
komutunu girerek ayarları yedeklemenizi öneririm. Yedekledikten sonra yukarıdaki komutu tekrar girerek dosyayı yeniden oluşturmanız gerekmekte.mv ~/.vnc/xstartup ~/.vnc/xstartup.bak
Şimdi açılan boş sayfaya şunları yazalım:
#!/bin/bash xrdb $HOME/.Xresources startxfce4 &
İlk satırda yer alan
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. xrdb $HOME/.Xresources
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
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. 🙂