Centos 7.6 üzerine VNC Server Kurulumu
Translate This Page:
Bu Makalemizde Centos 7.6 üzerine VNC server Kurulumunun nasıl yapıldığını inceleyeceğiz. VNC server en temel hali ile windowstan Linux makinelere Remote Desktap türü bir bağlantı kurmamızı sağlayan bir uygulamadır.
İnceleyeceğimiz başlıca konular ;
- VNC Nedir ?
- Centos 7.6 üzerine VNC Server kurulumunun nasıl yapılacağı
- VNC server user hesaplarının yapılandırılması.
- VNC Server için Linux Firewall yapılandırması
- VNC server servislerinin kontrolü
- Windows ile VNC client bağlantısı
VNC nedir?
VNC (Virtual Network Computing – Sanal Ağ Sistemi), bir ağ sunucusu üzerinde çalışan grafik arabirimli uygulamalara, başka bir ağ üzerindeki bilgisayardan erişerek bu uygulamaların kullanabilmesini ve yönetilebilmesini sağlar. Temel olarak Server-Client mantığı ile çalışmaktadır.
VNC sunucusu masaüstü ve pencere görüntülerini, görüntü akışı şeklinde VNC istemcisine gönderir. İstemciden sunucuya bağlanıldığında kimlik doğrulama gerçekleşir. Kimlik doğrulama işlemi tamamlandığında, kullanılacak olan masaüstü biçimi ve piksel biçimi isteği istemciden sunucuya bildirilir. Etkileşim sonucunda bağlanılmak istenilen bilgisayarın masaüstü erişimi sağlanır. VNC ile sunucudan istemciye dosya aktarımı gerçekleştirilebilir, sunucuda sabit diskten dosya ve veri arama yapılabilir. Bu sayede istemci bilgisayara uzak masaüstü bağlantısı yapılmış olur. Bu bilgisayara işlem yapılabilir ve yönetilebilir.
VNC bağlantısı üzerinden istemci ve sunucu arasındaki iletişimde oturum başlatma ve kimlik doğrulama şeklindedir. Bu iletişim DES (Data Encryption Standard – Veri Şifreleme Standartı) ve farklı VNC uygulamalara bağlı olarak 3DES (Triple Data Encryption Standard – Üçlü Veri Şifreleme Standardı) şifreleme standartları ile şifrelenmektedir. DES verileri 64 bitlik bloklar halinde şifreleme algoritmalarıdır.
VNC protokolü, OSI (the Open System Interconnection-Açık Sistem Bağlantısı)’de 6. katman olan Sunum Katmanı (Presantation Layer)’nda çalışır.
VNC sistemi VNC istemcisi, VNC sunucusu ve bir haberleşme protokolü olan RFB (Remote Frame Buffer)’ dan oluşmaktadır.
- VNC istemci, VNC sunucusuna bağlanmayı sağlar.
- VNC sunucusu, bağlanılmak istenilen bilgisayara kurulur ve bu sayede istemci bilgisayarın kendisine bağlanarak yönetmesine olanak sağlar.
- RFB, grafik arayüzlerine uzaktan erişimi ile bilginin sunucudan istemciye iletilmesini sağlayan bir haberleşme protokolüdür. RFB protokolü ile klavye ve fare hareketleri ağ üzerinden başka bir bilgisayara gönderilip meydana gelen grafik bilgisi ve cevapları görüntülü olarak geri alınır. RFB protokolü TCP/IP protokolü üzerinden uzaktan erişimi sağlar. TCP, OSI katmanlarından 4.sü olan Taşıma Katmanı (Transport Layer), IP ise 3.katman olan Ağ Katmanı (Network Layer) RFB protokolü TCP üzerinden yollanacak veriyi parçalara bölünmesini ve alıcı sistem olan VNC sunucusu üzerinde tekrar birleştirilmesini sağlar.
RFB protokolü sayesinde ağ üzerinde uzak masaüstü bağlantısı yapılan bilgisayar ile ona bağlanılmak istenen bilgisayarın işletim sisteminin aynı olması gerekmez. Bunun yanında VNC ile birçok istemci aynı anda bir sunucuya bağlanma özelliğine sahiptir.
VNC Server&Client Windows,Linux,MacOS gibi bir çok platform üzerinde çalışmaktadır bağlantı kurulacak Server ve client işletim sistemlerinin bir önemi bulunmamaktadır.
Artık Kuruluma başlayabiliriz ;
1-) Eğer Centos’u minimal versiyonda kurduysanız İlk olarak Linux Sunucumuz üzerinde Kullanacağı Bir masa üstü teması yüklememiz gerekiyor ben Gnome Desktop Yükleyeceğim .
# Gnome Desktop Kurulumu yum groupinstall -y "GNOME Desktop" #KDE Desktop Kurmak isterseniz yum groupinstall 'KDE' 'X Window System'
2-)Masaüstümüz hazırsa VNC server kurulumunu yapıyoruz.
# VNC Server Paketlerini kuruyoruz. yum install -y tigervnc-server
3-)Senaryomuzda user1 ve user2 kullanıcıları bulunuyor bunun için Linux üzerinde 2 adet yeni user hesabı oluşturuyoruz ve bu hesaplara linux işletim sistemi üzerinde parola veriyoruz.
# Centos7 Kullanıcı hesap ve parola işlemleri [root@vnc-server ~]# useradd user1 [root@vnc-server ~]# passwd user1 Changing password for user user1. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@vnc-server ~]# [root@vnc-server ~]# useradd user2 [root@vnc-server ~]# passwd user2 Changing password for user user2. New password: Retype new password: passwd: all authentication tokens updated successfully. [root@vnc-server ~]#
VNC Server’a Bağlancak profillerin yapılandırılması
4-)VNC Server bağlantısı sağlayabilmek için Her bağlanacak hesap için bir profil dosyası oluşturulur ve bu profil dosyası içerisine username bilgisi girilir.Dolayısıyla bu makineye kaç kişi VNC ile bağlanacaksa her kişi için bir sayı verilmeli (vncserver@:1.service , vncserver@:2.service gibi…)
5-)User1 Hesabı için VNC Profili oluşturma ve yapılandırma
# Orjinal Profil dosyamızın bir kopyasını user1 oluşturuyoruz. cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service
6-)vncserver@:1.service bağlantısını user1 Kullanıcısı için düzenliyoruz bu işlemi VNC ile bağlanacak her kullanıcı için yapmalıyız.
# Orjinal Profil dosyamızın bir kopyasını user1 için düzenliyoruz. #nano /etc/systemd/system/vncserver@:1.service
# Orjinal Profil dosyamız aşağıdaki gibidir burada my_user yazan bölümler editleniyor [Unit] Description=Remote desktop service (VNC) After=syslog.target network.target [Service] Type=forking ExecStartPre=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' ExecStart=/sbin/runuser -l my_user -c "/usr/bin/vncserver %i -geometry 1280x1024" PIDFile=/home/my_user/.vnc/%H%i.pid ExecStop=/bin/sh -c '/usr/bin/vncserver -kill %i > /dev/null 2>&1 || :' [Install] WantedBy=multi-user.target
Yukarıdaki işlemi User 2 içinde Tekrarlıyoruz.
# Orjinal Profil dosyamızın bir kopyasını user2 içinde oluşturuyoruz. cp /lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:2.service
vncserver@:2.service bağlantısını user2 Kullanıcısı için düzenliyoruz
# Orjinal Profil dosyamızın bir kopyasını user2 için düzenliyoruz. #nano /etc/systemd/system/vncserver@:2.service
VNC user Parola Belirleme
7-) User1 Hesabı için VNC Bağlantı parolası belirliyoruz.
# User 1 hesabının VNC bağlantısında kullanacağı parolayı belirliyoruz. #Hesabımıza login oluyoruz su – user1 #VNC parolası belirliyoruz. vncserver
# Komut çıktısı aşağıdaki gibi olacaktır. [user1@vnc-server root]$ vncserver You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? y Password: Verify: xauth: file /home/user1/.Xauthority does not exist New 'vnc-server:5 (user1)' desktop is vnc-server:5 Creating default startup script /home/user3/.vnc/xstartup Creating default config /home/user1/.vnc/config Starting applications specified in /home/user3/.vnc/xstartup Log file is /home/user1/.vnc/vnc-server:5.log
Yukarıdaki adımları VNC bağlantısı kullanacak her hesap için ayrı ayrı yapıyoruz.
8-) VNC Server Servislerimizi başlatıyoruz.
$systemctl daemon-reload $systemctl enable vncserver@:1.service
$systemctl start vncserver@:1.service $systemctl status vncserver@:1.service
Servisleri enable edip start ettiğinizde aşağıdaki gibi start olduklarını göreceksiniz.
VNC servisimizin dinlemeye başladığı portları görmek için aşağıdaki komut kullanılabilir.
ss -tulpn| grep vnc
VNC Server Firewall Configuration
9-)VNC Server için Firewall kuralı yazıyoruz
firewall-cmd --permanent --zone=public --add-service vnc-server firewall-cmd –reload
Eğer Port bazlı rule yazmak isterseniz
#Iptables Tek bir port için izin kuralı [root@vnc-server root]$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5901 -j ACCEPT [root@vnc-server root]$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5902 -j ACCEPT #Iptables üzerinde Port aralığı vermek isterseniz [root@vnc-server root]$ iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 5901:5904 -j ACCEPT
işlem sonrası Servisler restart edilmelidir.
[root@vnc-server root]$ service iptables save [root@vnc-server root]$ service iptables restart
Firewall Komutlar Bu bölüm opsiyoneldir Güvenlik için FW açık olmalı ve kurallar yazılmalıdır.
#Firewall Durumunu görüntülemek için systemctl status firewalld #Firewall'ı Stop etmek için systemctl stop firewalld #Bu komut disable eder restart sonrası tekrar FW başlamaz systemctl disable firewalld
SELinux Komutları
#Selinux durumunu Görüntüler sestatus #Selinux Kapatmak için aşağıdaki dizinde selinux disable edilir. nano /etc/sysconfig/selinux SELINUX=disabled
#Selinux devre dışı kalması için makinemizi restart etmemiz gerekiyor. reboot
Windows Makineden Centos’a VNC bağlantısı
10-)Linux server üzerinde VNC server’a dair tüm işlemlerimizi tamamladık artık vindows makinemize VNC client uygulmamızı kurarak bağlantımızı yapabiliriz.Buradaki adresten windows sürümünüz için uygun olan versiyonu buradan indirip seçiyoruz ve windows makinemize kuruyoruz. kurulum tamamlandıktan sonra karşımıza aşağıdaki gibi bir ekran gelecek burada VNC server Makinemizin ip adresini yazıyoruz.
VNC server default olarak 5900 portunu kullanır ve üzerine bağlanacak her profil için bir port ekler bizim örneğimizde
User1 : Sunucu Adi/ipadresi: 5901
User2: Sunucu Adi/ipadresi 5902
Gibi bağlantı adresleri üzerinden bağlanacaktır.
Eğer bağlı olan bir hesabın VNC bağlantısını koparmak isterseniz root hesabı yada yetkili bir hesapla o kullanıcının hesabına girip aşağıdaki komutu çalıştırmanız yeterlidir bu işlem kullanıcnın vncserver@:1.service profilini stop edecektir.
# su - your_user su - user1 killall Xvnc #Durum kontrolü için $systemctl status vncserver@:1.service Remote bağlantısını tekrar başlatmak için systemctl start vncserver@:1.service
Eğer tüm bağlı olan kullanıcıların vnc bağlantısını kesmek isterseniz root ile bağlıyken aşağıdaki komutu çalıştırmanız yeterlidir.
killall Xvnc