Samba ve SshFS ile Uzak Dizinlere Erişme

Uzak sunuculardaki klasörleri local makinemize mount etmenin bir çok yolu var. Bazı FTP araçları bunu destekliyor ya da WinSCP gibi yazılımların sync özelliği ile buna benzer bir çalışma ortamı sağlayabiliyoruz. Linux tarafında ise doğrudan SshFS kullanarak sadece ssh erişimi olan sunucuların bile dosya sistemini doğrudan local sistemimize bağlayabiliyoruz. Öncelikle kısaca sshfs nedir, samba nedir bunlara bakalım. Ardından sanal makine aracılığı ile bunları windows ortamında nasıl kullanırız onu inceleyelim.

SshFS nedir?

SshFS uzak linux sunucudaki dosya sistemini kendi sistemimize bağlamaya yarayan bir araçtır. Kullanımı oldukça kolaydır:

sshfs -o password_stdin root@sunucuadresi:/root localdizin <<< "sunucusifre"

Bu komutla uzak sunucudaki root dizinini localdizin isimli dizine bağlamış olduk. Artık kendi sistemimizdeki localdizin klasörü doğrudan uzak sunucuya bağlı. Dosyaları kendi sistemimizde erişir gibi erişip düzenleyebiliriz. Bağlantı da ssh üzerinden kurulduğu için son derece güvenlidir.

SshFS bağlantıyı kapatmak için fusermount -u localdizin komutunu kullanabiliriz.

Sunucu şifresini komuta doğrudan yazmak güvenli değil. Bu nedenle sunucuya public-key yöntemi ile bağlamayı deneyebilirsiniz.

ssh-keygen -t rsa
ssh-copy-id -i ~/.ssh/id_rsa.pub root@uzaksunucuadresi

komutları ile local sistemde key oluşturup uzak sisteme bağlanmak için kullanabiliriz. Artık şifre belirtmemize gerek yok. Doğrudan ssh root@uzaksunucuadresi ile sunucumuza ulaşabiliriz. autofs ile yapılacak otomatik bağlantılar için bunun gerektiğini unutmayın.

SshFS kötü yanı ise doğrudan Linux’e bağımlı olması. Hatta FUSE kernel modülü yüklü olmayan Linux sistemlerde de çalışmıyor. FUSE kernel modülü temel olarak dosya sistemine yazılımlar tarafından müdahale edilmesine olanak sağlıyor. SshFS bunu kullanarak uzak dizinleri local dizin gibi gösteriyor. Yani yazılım seviyesinde mount işlemi yapıyor. Bunu yapabilmesi içinde kernel seviyesinde FUSE modülünün aktif olması gerekiyor. KVM, VmWare gibi soyutlaması iyi sanallaştırma sistemleri buna izin verirken OpenVZ tarafında bunun için supervisor yetkisi gerekiyor.

Windows ortamında ise SshFS’in sağlıklı bir karşılığı en azından bugün için yok. Bu nedenle biz SshFS’i sanal makine ve Samba aracılığıyla kullanacağız.

Samba Nedir?

Samba Windows dosya ve yazıcı paylaşım protokolünün açık kaynak olarak geliştirilmiş Linux tarafındaki karşılığıdır. Samba sayesinde Linux makinelerimizi Windows ağlarına dahil edip dosya ve yazıcı paylaşımı yapabiliyoruz. Biz de samba sshfs ile sanal makinemize bağlanmış dizinleri Windows ile paylaşmak için kullanacağız. Samba kurulumu ve kullanımı oldukça basit. apt-get install samba ile sambayı yı kurabiliriz. Ardından nano /etc/samba/smb.conf ile ayar dosyamıza giriyoruz ve:

wins support = yes
interfaces = 127.0.0.0/8 192.168.1.0/24

Şeklinde düzenliyoruz. Wins support ile Windows Internetworking Name Service desteğini açıyoruz. Interfaces ile ise nerelerden bağlantı kabul edileceğini seçiyoruz. Samba’da varsayılan olarak şifreleme ile koruma bulunmuyor. Hatta samba trafiğinin kendisi de şifreli değil. Yani samba sadece yerel ağlarda kullanılabilecek bir sistem. Burada kendi ağ adresi aralığım olan 192.168.1.0/24 verdim. /24 ile mask bit formatında aralık veriyoruz. Bu örnek için aralık 192.168.1.0 dan 192.168.1.255’e kadar oluyor. 

Samba paylaşım ayarları için ise yine aynı dosyadaki Share Definations alanını kullanıyoruz.

Bu şekildeki yapılandırmadan sonra \\sanalmakineip\Paylasimlar adresiyle linux sanal makinedeki /home dizinine erişebiliriz. Tabi önce ayarların aktif olması için service smbd restart ile sambayı yeniden başlatmak gerekiyor.

Yukarıdaki örnekte force user ? root ile dosya erişimi için root kullanıcısnın kullanılmasını sağladık. Eğer başka bir kullanıcı kullanamı düşünüyorsanız. /etc/fuse.conf dosyasındaki user_allow_other seçeneğini aktif hale getirmeniz gerekebilir.

AutoFS ile bağlantıları kalıcı yapma

Eğer sanal makine başladığında tüm bağlantılar otomatik olarak yapılsın istiyorsak AutoFS kullanabiliriz. AutoFS, SshFS bağlantılarını sistem başlangıcında yapmamızı ve bu bağlantıların sürekli açık kalmasını sağlayan bir araçtır. Normalde sunucuyu yeniden başlattığımızda ya da ağ sorunu olduğunda ssh bağlantısı kesilir, bu nedenle dosya paylaşımı da sonlanır. AutoFS ise bunu aşmamızı sağlıyor.

AutoFS kullanımı hakkında daha önce oldukça kapsamlı bir yazı yazmıştım. Onu da inceleyebilirsiniz. https://kodto.com/linux-paylasim-samba-nfs-sshfs

  • Öncelikle apt-get install autofs ile autofs yi kuruyoruz.
  • Ardından sshfs desteği eklemek için nano /etc/auto.master ile ana config dosyasını açıyoruz.
  • Dosya sonuna /media/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost satırını ekliyoruz. Böylece auto.sshfs dosyasını sshfs bağlantıları için kullanacağımızı ve bu bağlantıların /media/sshfs dizinine yapılacağını söyledik
  • nano /etc/auto.sshfs dosyasına girip bağlantı ayarlarımızı giriyoruz. Örneğin uzakhome -fstype=fuse,rw,nodev,nonempty,allow_other,reconnect,uid=1000,gid=1000,max_read=65536,compression=yes,auto_cache,no_check_root,kernel_cache :sshfs#root@uzaksunucu\:/home 
  • Artık service restart autofs diyerek bağlantılarımızın yapılmasını sağlayabiliriz.

Bu klasörü samba üzerinden windows ile paylaşıma açmayı unutmayın.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir