Bazı kullanıcılar uzak masaüstü hizmetlerini çalıştırmak için Windows ile nispeten ucuz VPS kiralıyor. Aynı şey, kendi donanımınızı bir veri merkezinde barındırmadan veya özel bir sunucu kiralamadan Linux'ta da yapılabilir. Bazı kişiler test ve geliştirme için tanıdık bir grafik ortamına veya mobil cihazlardan çalışmak için geniş kanallı bir uzak masaüstüne ihtiyaç duyar. Remote FrameBuffer (RFB) protokolü tabanlı Sanal Ağ Bilgi İşlem (VNC) sistemini kullanmak için birçok seçenek vardır. Bu kısa makalede, herhangi bir hipervizörle sanal makinede nasıl yapılandırılacağını anlatacağız.
İçindekiler:
VNC Sunucusu Seçme
VNC hizmeti sanallaştırma sistemine yerleştirilebilir ve hipervizör onu taklit edilen cihazlara bağlayacak ve hiçbir ek yapılandırma gerekmeyecektir. Bu seçenek önemli miktarda ek yük gerektirir ve tüm sağlayıcılar tarafından desteklenmez; gerçek bir grafik cihazını taklit etmek yerine basitleştirilmiş bir soyutlama (çerçeve arabelleği) sanal makineye aktarıldığında, kaynak yoğunluğu daha az olan bir uygulamada bile. Bazen bir VNC sunucusu çalışan bir X sunucusuna bağlanır, ancak bu yöntem fiziksel bir makineye erişim için daha uygundur ve sanal bir makinede bir takım teknik zorluklar yaratır. Bir VNC sunucusu kurmanın en kolay yolu yerleşik bir X sunucusu kullanmaktır. Fiziksel cihazlara (video bağdaştırıcısı, klavye ve fare) veya bunların hipervizör kullanılarak emülasyonuna ihtiyaç duymaz ve bu nedenle her türlü VPS için uygundur.
Kurulum ve konfigürasyon
Varsayılan konfigürasyonunda Ubuntu Server 18.04 LTS'ye sahip bir sanal makineye ihtiyacımız olacak. Bu dağıtımın standart depolarında birkaç VNC sunucusu vardır:
Masaüstü ortamının tüm bağımlılıklarla kurulumu aşağıdaki komutla yapılır:
sudo apt-get install xfce4 xfce4-goodies xorg dbus-x11 x11-xserver-utils
Daha sonra VNC sunucusunu yüklemeniz gerekir:
sudo apt-get install tigervnc-standalone-server tigervnc-common
Süper kullanıcı olarak çalıştırmak kötü bir fikir. Bir kullanıcı ve grup oluşturun:
sudo adduser vnc
Kullanıcıyı yönetimle ilgili görevleri gerçekleştirebilmesi için sudo grubuna ekleyelim. Böyle bir ihtiyaç yoksa bu adımı atlayabilirsiniz:
sudo gpasswd -a vnc sudo
Bir sonraki adım, ~/.vnc/ dizininde güvenli bir parola ve yapılandırma dosyaları oluşturmak için VNC sunucusunu vnc kullanıcı ayrıcalıklarıyla çalıştırmaktır. Şifre uzunluğu 6 ila 8 karakter arasında olabilir (ekstra karakterler kesilir). Gerekirse, yalnızca görüntüleme için de bir şifre ayarlanır, ör. klavye ve fareye erişim olmadan. Aşağıdaki komutlar vnc kullanıcısı olarak yürütülür:
su - vnc
vncserver -localhost no
Varsayılan olarak, RFB protokolü 5900 ila 5906 arasındaki TCP bağlantı noktası aralığını kullanır - buna sözde denir. her biri bir X sunucu ekranına karşılık gelen bağlantı noktalarını görüntüleyin. Bu durumda bağlantı noktaları :0 ile :6 arasındaki ekranlarla ilişkilendirilir. Başlattığımız VNC sunucusu örneği 5901 numaralı bağlantı noktasını dinliyor (ekran: 1). Diğer örnekler :2, :3 vb. ekranlara sahip diğer bağlantı noktalarında çalışabilir. Daha fazla yapılandırmadan önce sunucuyu durdurmanız gerekir:
vncserver -kill :1
Komut şunun gibi bir şey göstermelidir: "Xtigervnc işlem kimliği 18105'i öldürmek... başarı!"
TigerVNC başlatıldığında, yapılandırma ayarlarını yapılandırmak için ~/.vnc/xstartup betiğini çalıştırır. Kendi betiğimizi oluşturalım, önce varsa mevcut betiğin yedek kopyasını kaydedelim:
mv ~/.vnc/xstartup ~/.vnc/xstartup.b
nano ~/.vnc/xstartup
XFCE masaüstü ortamı oturumu aşağıdaki xstartup komut dosyasıyla başlatılır:
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
xrdb $HOME/.Xresources
exec /usr/bin/startxfce4 &
VNC'nin giriş dizinindeki .Xresources dosyasını okuması için xrdb komutu gereklidir. Burada kullanıcı çeşitli grafiksel masaüstü ayarlarını tanımlayabilir: yazı tipi oluşturma, terminal renkleri, imleç temaları vb. Komut dosyasının çalıştırılabilir hale getirilmesi gerekir:
chmod 755 ~/.vnc/xstartup
Bu, VNC sunucusu kurulumunu tamamlar. vncserver -localhost no komutuyla çalıştırırsanız (vnc kullanıcısı olarak), daha önce belirttiğiniz şifre ile bağlanıp aşağıdaki resmi görebilirsiniz:
Systemd aracılığıyla bir hizmetin başlatılması
Bir VNC sunucusunu manuel olarak başlatmak, savaş kullanımına uygun değildir, bu nedenle bir sistem hizmeti yapılandıracağız. Komutlar root olarak yürütülür (sudo kullanırız). Öncelikle sunucumuz için yeni bir birim dosyası oluşturalım:
sudo nano /etc/systemd/system/[email protected]
Addaki @ sembolü, hizmeti yapılandırmak için bir argüman iletmenizi sağlar. Bizim durumumuzda VNC ekran bağlantı noktasını belirtir. Birim dosyası birkaç bölümden oluşur:
[Unit]
Description=TigerVNC server
After=syslog.target network.target
[Service]
Type=simple
User=vnc
Group=vnc
WorkingDirectory=/home/vnc
PIDFile=/home/vnc/.vnc/%H:%i.pid
ExecStartPre=-/usr/bin/vncserver -kill :%i > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x960 :%i
ExecStop=/usr/bin/vncserver -kill :%i
[Install]
WantedBy=multi-user.target
Daha sonra systemd'ye yeni dosyayı bildirmeniz ve onu etkinleştirmeniz gerekir:
sudo systemctl daemon-reload
sudo systemctl enable [email protected]
İsimdeki 1 rakamı ekran numarasını belirtir.
VNC sunucusunu durdurun, hizmet olarak başlatın ve durumu kontrol edin:
# от имени пользователя vnc
vncserver -kill :1
# с привилегиями суперпользователя
sudo systemctl start vncserver@1
sudo systemctl status vncserver@1
Hizmet çalışıyorsa, bunun gibi bir şey almalıyız.
Masaüstü Bağlantısı
Yapılandırmamız şifreleme kullanmadığından ağ paketleri saldırganlar tarafından ele geçirilebilir. Ayrıca VNC sunucularında oldukça sık
sudo netstat -ap |more
Linux, FreeBSD, OS X ve diğer UNIX benzeri işletim sistemlerinde, ssh yardımcı programı kullanılarak istemci bilgisayardan bir tünel oluşturulur (sshd, VNC sunucusunda çalışıyor olmalıdır):
ssh -L 5901:127.0.0.1:5901 -C -N -l vnc vnc_server_ip
-L seçeneği, uzak bağlantının 5901 numaralı bağlantı noktasını localhost üzerindeki 5901 numaralı bağlantı noktasına bağlar. -C seçeneği sıkıştırmayı etkinleştirir ve -N seçeneği ssh'ye uzak komutu yürütmemesini söyler. -l seçeneği, uzaktan oturum açma için oturum açmayı belirtir.
Yerel bilgisayarda tüneli kurduktan sonra, VNC istemcisini başlatmanız ve VNC sunucusuna erişmek için önceden belirtilen şifreyi kullanarak 127.0.0.1:5901 (localhost:5901) ana bilgisayarına bağlantı kurmanız gerekir. Artık VPS üzerindeki XFCE grafik masaüstü ortamı ile şifreli bir tünel aracılığıyla güvenli bir şekilde iletişim kurabiliyoruz. Ekran görüntüsünde, sanal makinenin düşük bilgi işlem kaynağı tüketimini göstermek için terminal öykünücüsünde en üstteki yardımcı program çalışıyor. O zaman her şey kullanıcı uygulamalarına bağlı olacaktır.
Linux'ta hemen hemen her VPS'ye bir VNC sunucusu yükleyebilir ve yapılandırabilirsiniz. Bu, video bağdaştırıcısı emülasyonu veya ticari yazılım lisanslarının satın alınmasıyla pahalı ve kaynak yoğun yapılandırmalar gerektirmez. Düşündüğümüz sistem hizmeti seçeneğine ek olarak başka seçenekler de var: sistem önyüklendiğinde daemon modunda başlatma (/etc/rc.local aracılığıyla) veya talep üzerine inetd aracılığıyla başlatma. İkincisi, çok kullanıcılı konfigürasyonlar oluşturmak için ilginçtir. İnternet Süper Sunucusu, VNC sunucusunu başlatacak ve istemciyi ona bağlayacak ve VNC sunucusu yeni bir ekran oluşturup oturumu başlatacaktır. İçinde kimlik doğrulaması yapmak için grafiksel bir ekran yöneticisi kullanabilirsiniz (örneğin,
Kaynak: habr.com