Mart 2009 sayımızdan tüm okuyucularımıza merhaba. Dersler bölümümüzde bir yazı dizisini bitirdikten sonra, bu ay nasıl yapılır köşesinde sizinle buluşuyorum. Bu ay makalemin konusunu, hem özel hem de bergisel yaşantımızda çok sık karşımıza çıkan bir soruya Türkçe kaynak sağlamak Konumuz ise Linux'ta ve Windows'ta X forwarding. Yani işletim sistemi ne olursa olsun, başka bir bilgisayara bağlanarak görüntü arayüzünü kendi bilgisayarınızda çalıştırabilmenize yarayan sistem. Önce bu sistem hakkında biraz bilgi edinelim.

SSH Üzerinden X

Hiç güvenli bir bağlantı üzerinden, komut satırı dışında görsel bir uygulama çalıştırmak istediniz mi? Platforma bağımlı kalmadan kendi bilgisayarınızdan diğer bilgisayarların görüntü ortamlarına ulaşmak veya bilgisayarınızda kurulu olmayan bir programı çalıştırmak için ne yapabileceğinizi düşündüğünüz oldu mu? İşte bunları gerçekleştirebileceğiniz bir yol, SSH üzerinden X sunucusunu kullanmak. Bu kullanımın ilk aracısı olan SSH (Secure Shell, Güvenli Kabuk) uzaktaki bilgisayarlara güvenli bir şekilde bağlanmamızı sağlayan bir programdır. Bu konuda ayrıntılı bilgi için SSH Kullanımı yazımıza göz atmanızı tavsiye ederim; çünkü SSH kullanımını anlatmadan devam edeceğim. SSH'ı X pencere sistemi iletiminde kullanacağız, çünkü normal X iletiminde karşımıza çıkan bazı güvenlik ve konfigürasyon sorunlarını SSH kullanarak aşmış oluyoruz.

Diğer kullanacağımız, daha doğrusu yönlendireceğimiz, birim ise X Pencere Sistemi (X Window System). Bu sistem; Unix benzeri işletim sistemlerinde sadece metin bazlı uygulamalar yerine, grafiksel uygulamaların da kullanılabilmesini sağlar. X sunucusu (X server), ekran fare ve klavyesi olan bir bilgisayarda çalışan bir işlem; X istemcileri (X clients) ise grafik arayüzünü kullanmak isteyen ve pencere açılması, çizilmesi için komutlar gönderen programlardır.

İlk önce Windows yüklü bir bilgisayardan başka bir bilgisayara SSH üzerinden X istemi göndermeyi deneyelim.

Linux'tan Linux'a Nasıl Kullanabiliriz?

Herhangibir Linux dağıtımında kurulu olarak gelen ssh, sshd, xauth ve X sistemlerinden yine de eksik olanları paket yöneticiniz ile kurmanız gerek. Kendiniz kuruyorsanız da, kurulu durumda ise de, derlerken X iletimine uygun bir şekilde derlenmiş olmasına dikkat edin, yoksa tekrar derlemeniz gerekebilir. Bundan sonra, konfigürasyon ayarlarını yapmanız gerekecek. Kendi bilgisayarınızda "/etc/" veya "/etc/ssh/" dizininde bulunan "ssh_config" dosyasında (X istemcisi ayar dosyası) aşağıdaki satırın bulunup bulunmadığını kontrol edin.

ilke@ev:~$ sudo vi /etc/ssh/ssh_config
...
ForwardX11 yes
...

X sunucusu olarak kullanacağınız bilgisayarın yine aynı dizinlerinden birinde bulunan "sshd_config" dosyasında (X sunucusu ayar dosyası) aşağıdaki satırın varlığını yine kontrol edin.

ilke@penguen ~ $ vi /etc/ssh/sshd_config
...
X11Forwarding yes
...

Daha sonra ssh bağlantımızı "-X" parametresi ile kurduğumuzda, herhangibir görsel arayüz kullanan uygulamayı çalıştırarak kendi bilgisayarımızda görebiliriz.

ilke@ev:~$ ssh -X ilke@penguen.metu.com.tr
Password: 
Last login: Tue Feb 10 22:48:08 2009 from xxx.xxx.metu.com.tr
ilke@penguen ~ $ firefox

Windows'tan Linux'a Nasıl Kullanabiliriz?

İlk önce terminal benzeri bir ortamı bulabileceğimiz bir uzak bağlantı programı edinmemiz lazım. Bunun için Putty, Private Shell veya SSH Secure Shell'i kullanabilirsiniz. Bizim örneğimizde göreceğimiz ekran görüntüleri ve konfigürasyonlar SSH Secure Shell 3.2.9 programına ait olacak. Bu programlardan biri yükledikten sonra, çift tıklayarak programı açtığınızda, sol şekildeki gibi bir terminal ortamı ile karşılaşacaksınız. Buradan menülerde Edit->Settings sekmesini seçtiğinizde, karşınızda sağdaki menü gelecek. Buradan "Profile Settings" (Profil seçenekleri) altındaki "Tunneling" (Tünelleme) sayfasına geldiğinizde, en altta "Tunnel X11 connections" (X11 bağlantılarına izin verme) seçeneğini işaretlediğinizde, güvenli kabuğunuzu artık X bağlantılarına açmış oluyorsunuz. Daha sonra, X sunucusu olarak kullanacağımız bilgisayara bağlanıp gerekli komutlarla işimizi hallederiz diye düşünüyorsanız, üzgünüm biraz daha yolumuz var.

İlk önce bağlanacağımız bilgisayarın SSH üzerinden X istendiğinde bunu kabul edip etmeyeceği ayarını yapmamız gerek. Güvenli kabuğumuzu kullanarak uzak bilgisayara bağlandığımızda, (Windows'ta güvenli kabuk kullanmayanlar için, "Quick Connect" düğmesine basıp, kullanıcı adı, sunucu adı ve gerekiyorsa port numarası girildikten sonra sorulan parola kabul edildiğinde bağlanmış oluyorsunuz.) "/etc/ssh/" veya "/etc/" dizinindeki "sshd_config" dosyasını açtığımızda, aşağıdaki satırın ekli olup olmadığını kontrol etmemiz gerekir. X sunucusunun konfigürasyon dosyası olan bu dosyayı sıradan kullanıcı açabilir, ancak sadece root yetkisi olanlar değiştirebilir; bu yüzden "sudo" ile root yetkisi alarak açıyoruz.

ilke@penguen ~ $ sudo vi /etc/ssh/sshd_config
Password:

...
X11Forwarding yes
...

Ekliyse bağlanacağımız bilgisayardan grafik arayüzünü kullanmayı isteyebiliriz demektir. Ekli değilse de, bu satırı ekliyoruz, veya başındaki "#" işaretini silerek etkin hale getiriyoruz. Bunu yaptıktan sonra kullanıma açılması için servisi tekrar başlatmak gerekiyor. Bunun için kullanacağımız komut ise:

ilke@penguen ~ $ sudo service sshd restart

Herhangi bir hata mesajında veya başlatılamadığında, "-q" parametresini kullanabilir veya (özellikle Pardus'ta) aşağıda gösterildiği şekilde sshd öldürebilirsiniz (başka bir kullanıcının kullanmadığından emin olduktan sonra). Sonlandırılacak işlem burada en üstte görülen, "/usr/sbin/sshd" konumundan çalıştırılmış olan işlemdir.

ilke@penguen ~ $ sudo kill -HUP <sshd uygulamasının="" işlem="" id'si="" (pid)=""># Sshd'nin pid'ini görmek için ise şunu kullanabilirsiniz:
ilke@penguen ~ $ ps aux | grep sshd
root      1576  0.0  0.0   4312   920 ?        Ss   02:02   0:00 /usr/sbin/sshd
root      4995  0.0  0.1   7176  2192 ?        Ss   20:01   0:00 sshd: ilke [priv]
ilke      5000  0.0  0.0   7176  1656 ?        S    20:01   0:00 sshd: ilke@pts/1 
ilke      5089  0.0  0.0   2344   760 pts/1    S+   21:13   0:00 grep sshd</sshd>

Artık sunucu tarafındaki tüm ayarların sonuna geldik. Peki o zaman, mesela firefox açmayı deneyelim.

ilke@penguen ~ $ firefox
Error: no display specified

Bu şekilde bir hata mesajı karşımıza çıkacaktır. Neden? Hatırlarsanız en başta değindiğimiz X Pencere Sistemi'ni henüz kullanmadık. Bilgisayarınızda bir pencere yöneticisi kurup başlatmanız gerekiyor. Bunun için ben gayet basit bir program olan Xming'i kullanıyorum, ancak Cygwin/X veya WinAxe gibi programları da kullanabilirsiniz. Kurduktan sonra sadece başlatmanız yeterli. Başlattıktan sonra pencere yöneticisinin simgesi muhtemelen sistem çekmecesinde belirecektir. Şimdi bağlı olduğumuz bilgisayardan çıkış yapıp, tekrar bağlandığımızda, tekrar firefox açmayı denediğimizde, şekildeki gibi çalışan bağımsız bir penceremiz, sunucu bilgisayarda çalışarak kendi bilgisayarımıza görüntü veriyor olacaktır.

Ssh üzerinden yapılan tüm veri transferi aynı TCP bağlantısını kullandığı için, ssh'ın firewall'ı aşarak çalışabilmesi ile X'in tünellenmesi de böylece sorunsuz çalışır. Bilgisayarlararası X iletiminin klasik yöntemlerinden çok Ssh üzerinden kullanımı bu ve benzeri birçok nedenlerden dolayı daha kullanışlıdır. Makalemin sonundaki kaynaklarda çeşitli sistem kombinasyonlarında anlattığım yolun inceliklerini bulabilirsiniz. Bir sonraki sayımızla 2. senemizde görüşmek dileğiyle, bergiyle kalın :)