Debian 9 Üzerine VNC Nasıl Kurulur

Bu makalede size, bir Debian 9 sisteminde VNC sunucusunun nasıl yükleneceği ve yapılandırılacağını anlatacağım. Ayrıca VNC sunucusuna nasıl güvenli bir şekilde bağlanacağınızı göstereceğim.

Virtual Network Computing (VNC), başka bir bilgisayarı uzaktan kontrol etmek için klavyenizi ve farenizi kullanmanıza olanak veren bir grafik masaüstü paylaşım sistemidir.

Masaüstü Ortamını Yükleme

Muhtemelen, Debian sunucunuzda masaüstü ortamı yüklü olmayacaktır. İlk adımımız hafif bir masaüstü ortamı kurmak olacaktır.

Debian depolarında çeşitli masaüstü ortamları da bulunmaktadır. Ben, Xfce’yi tercih edilen masaüstü ortamımız olarak kullanacağım. Hızlı, kararlı ve hafif olduğu için Xfce’yi seviyorum, bu da uzak bir sunucuda kullanım için sistemi ideal bir hale getirecektir.

Debian sunucunuza Xfce’yi aşağıdaki komut aracılığı ile yükleyin

sudo apt install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils

Sisteminize bağlı olarak Xfce paketlerinin indirilmesi ve yüklenmesi biraz zaman alabilir.

VNC Sunucusunun Kurulumu

TightVNC, TigerVNC ve x11vnc gibi Debian depolarında çeşitli VNC sunucuları da bulunmaktadır. Her VNC sunucusunun, hız ve güvenlik açısından güçlü ve zayıf yönleri olduğunu hatırlatırım. Aktif olarak yüksek performanslı VNC sunucusu olan TigerVNC’yi kullanmayı tercih ettim. Debian sunucunuza TigerVNC’yi yüklemek için aşağıdaki adımları uygulayın.

sudo apt install tigervnc-standalone-server tigervnc-common

VNC sunucusu kurulduktan sonra, ilk yapılandırmayı oluşturmak ve parolayı tanımlamak için vncserver komutunu çalıştırın. Bu komutu çalıştırırken sudo kullanmamaya özen gösterin.

Parolayı girmeniz ve parolamayı onaylamanız istenecektir. Yalnızca parola oluşturmayı seçerseniz, kullanıcı VNC sunucusunu kullanarak işlemlerini fare ve klavye ile gerçekleştiremez.

You will require a password to access your desktops.

Password:
Verify:
Would you like to enter a view-only password (y/n)? n
/usr/bin/xauth:  file /home/mertcan/.Xauthority does not exist

New 'debian9.localdomain:1 (mertcan)' desktop at :1 on machine debian9.localdomain

Starting applications specified in /etc/X11/Xvnc-session
Log file is /home/mertcan/.vnc/debian9.localdomain:1.log

Use xtigervncviewer -SecurityTypes VncAuth -passwd /home/mertcan/.vnc/passwd :1 to connect to the VNC server.

Not: Yukarıdaki çıktıda hostname’den sonra :1 geldiğini göreceksiniz. Bu, vnc sunucusunun çalıştığı ekran bağlantı noktası numarasını gösterir. Bizim bu durumumuzda, sunucu 5901 numaralı TCP bağlantı noktasında çalışıyor. Vncserver ile ikinci bir yapılandırma yaparak ekran oluşturursanız, bir sonraki boş bağlantı noktasında çalışacaktır. Buda doğal olarak :2 olacaktır.

vncserver komutunu ilk kez çalıştırdığınızda, parola dosyasını ~/.vnc dizininde oluşturacak ve depolayacaktır.

Dikkat edilmesi gereken nokta, VNC sunucuları ile çalışırken, x’in 5900 + x anlamına gelen bir ekran bağlantı noktası olmasıdır. Bir sonraki adıma ilerlemeden hemen önce VNC ekranını gene vncserver komutunu kullanarak -kill seçeneğini ve argüman olarak sunucu numarasını vererek VNC sunucusunu durdurun.

vncserver -kill :1

Çıktısı ise aşağıdaki gibi olacaktır.

Killing Xtigervnc process ID 8723... success!

VNC Sunucusunu Yapılandırın

Artık hem Xfce hem de TigerVNC’ni sunucuya yüklediğimize göre, TigerVNC’yi Xfce kullanacak şekilde yapılandırmamız gerekiyor. Bunu yapmak için ise aşağıdaki dosyayı oluşturuyoruz

nano ~/.vnc/xstartup

İçeriğini aşağıdaki satırları ekleyerek değiştiriyoruz.


#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec startxfce4 

Bittiğinde, dosyayı kaydedin ve kapatın. TigerVNC sunucusunu başlattığınızda veya yeniden başlattığınızda yukarıdaki komut otomatik olarak çalıştırılacaktır. Unutmadan söyleyeyim ~/.vnc/xstartup dosyasının yürütme izinlerine de sahip olması gerekir.

chmod u+x ~/.vnc/xstartup

Systemd birim dosyası oluşturma

Systemd birim dosyası, VNC hizmetini gerektiğinde kolayca başlatmamıza, durdurmamıza ve yeniden başlatmamıza izin verecektir.

Metin düzenleyicinizi açın ve aşağıdaki yapılandırmayı kopyalayıp yapıştırın. Kullanıcı adınızla eşleştirmek için 7. satırdaki kullanıcı adını değiştirmeyi sakın unutmayın. Bu yarları yaparken sudo ayrıcalıklarını kullanmayı unutmayın

sudo nano /etc/systemd/system/[email protected]

İçeriğini aşağıdaki satırları ekleyerek değiştiriyoruz.


[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=simple
User=mertcan
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

Dosyayı kaydedin ve kapatın.

Yeni bir [email protected] dosyasının aşağıdaki komutu çalıştırarak systemd’ye bildirin.

sudo systemctl daemon-reload

Ardından, servisi etkinleştirin

sudo systemctl enable [email protected]

Not: @ İşaretinden sonraki 1 numara, VNC hizmetinin çalışacağı ekran bağlantı noktasını tanımlar. Bir önceki bölümde ele aldığımız gibi 1’i kullandığımızdan VNC sunucusu 5901 numaralı bağlantı noktasını dinleyecektir.

Ardından servisi çalıştırın

sudo systemctl start [email protected]

Hizmetin başarıyla başlatıldığını doğrulamak isterseniz

sudo systemctl status [email protected]

Aşağıdaki gibi bir çıktı görmeniz gerekmekte


[email protected] - Remote desktop service (VNC)
   Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: enabled)
   Active: active (running) since Wed 2018-10-02 02:14:43 PDT; 34s ago
  Process: 7061 ExecStartPre=/bin/sh -c /usr/bin/vncserver -kill :1 > /dev/null 2>&1 || : (code=exited, status=0/SUCCESS)
 Main PID: 7271 (vncserver)
    Tasks: 0 (limit: 4915)
   CGroup: /system.slice/system-vncserver.slice/[email protected]
           ‣ 7271 /usr/bin/perl /usr/bin/vncserver :1 -geometry 1280x720 -alwaysshared -fg

VNC sunucusuna bağlanma

VNC şifreli bir protokol değildir ve packet sniffing’e maruz kalabilir. Önerilen yaklaşım, yerel makinenizden 5901 numaralı bağlantı noktasındaki trafiği aynı bağlantı noktasındaki sunucuya güvenli bir şekilde yönlendirecek bir SSH tunnel oluşturmaktır.

Konu ile ilgili zamanında yayınladığım SSH Reverse Tunneling İle NAT Arkasındaki Sunucuya Bağlanmak adlı makaleme göz atabilirsiniz.

Linux/MacOS X için

Makinenizde Linux, macOS veya başka bir Unix tabanlı işletim sistemi çalıştırıyorsanız, aşağıdaki komutla kolayca SSH tunnel oluşturabilirsiniz

ssh -L 5901:127.0.0.1:5901 -N -f -l mertcan server-ip-address

Kullanıcı parolasını girmeniz istenecektir.

Windows için

Windows işletim sistemi kullanıyorsanız, PuTTY SSH istemcisini kullanarak SSH tunnel oluşturabilirsiniz.

putty tunnel gorsel1

Sol taraf da yer alan alandan Connection > SSH > Tunnels seçeneğini seçin ve aşağıdaki gibi ip ve port bilgilerinizi girin

putty tunnel gorsel2

Her seferinde bu bilgileri girmeniz gerekmeyecek şekilde ayarları kaydetmek için Sessions alanına geri dönün. Şimdi yapmanız gereken tek şey oluşturduğunuz bu oturum yapılandırmasını Kayıt etmek ve Open tıklayarak uzak sunucuya giriş yapmaktır.

Vncviewer kullanarak uzak masaüstüne bağlanma

Artık SSH tunnel kurduğunuza göre, Vncviewer’ınızı açıp, localhost’taki VNC sunucusuna bağlanabilirsiniz.

vnc baglantisi gorsel1

Ayrıca Google Chrome tarayıcınız için TigerVNC, TightVNC, RealVNC, UltraVNC gibi VNC görüntüleyicileri de kullanabilirsiniz.