Linux’te dosya paylaşımı yöntemli yaygın olarak NFS (Network File System) ve bu standardı uygulayan SAMBA (SMB Protokolü) kullanılıyor. Bunlar her ne kadar köklü projeler olsa ve kurumsal Linux iç ağlarında standart haline gelmiş olsalar da karmaşık kurulumları ve detaylı ayar dosyalarından dolayı çok kullanışlı değiller. Bu yazımızda direkt SSH üzerinden çalışan diğer sistemlere ağırlık vereceğiz.
NFS protokolü nedir
NFS linux’ün ilk zamanlarından beri kullanılan Sun tarafından 1984 de geliştirilmiş bir standarttır. Ağ üzerindeki bir kaynağın birden fazla bilgisayardan yerel kaynakmış gibi kullanılmasını sağlar. Dahili olarak şifreleme içermez. Bu nedenle VPS dünyasında kullanılması pek uygun değildir. Otomatik bağlantı ayarları /etc/fstab
da yapılır ve bu dosya yapacağınız bir hata veya kaynaklarla ilgili olası bir sorun sistemin açılmamasına sebep olabilir. Bu da sistemlere doğrudan erişimimiz olmadığı VPS, VDS, Cloud çağında büyük bir sorundur.
SMB protokolü nedir ne işe yarar, SAMBA ile Linux Windows dosya paylaşımı
Samba ise Windows ile birlikte çalışabilmesi ile dikkat çeken NFS’ye nazaran daha modern bir dosya paylaşım aracı. Yine NFS gibi kapalı ağlarda yani LAN’da kullanılmak için tasarlanmıştır. Dahili güvenlik sistemi içermez. Eklentiler ile trafik şifrelenebilir fakat bunlar pratik kullanımda bizim önümüzde engeldir.
SSHFS ile kolay Linux dosya paylaşımı işlemi
SSHFS yani SSH FileSystem ise isminden de anlaşılacağı gibi SSH protokolü üzerinden çalışan bir dosya paylaşma sistemidir. Kullanımı çok basittir, kurulumu yok gibidir ve SSH’ın kendini ispatlamış şifreli trafiği sayesinde son derece güvenlidir. Debian, Ubuntu bazlı sunuculara kurmak için:
apt-get install sshfs
Ardından uzaktaki sistemi bağlamak istediğimiz bir klasör oluşturup tek satırlık komut ile bağlantıyı sağlıyoruz:
mkdir -p mnt/uzaksistem
sshfs root@uzaksistemadresi:/ /mnt/uzaksistem
Artık /mnt/uzaksistem
adresinde yerel sistemde çalışır gibi uzak sistem dosyalarına erişebilir bunları değiştirebiliriz.
SSHFS uzak dosyaları sanki yerel sistemin dosyalarıymış gibi görüp çalışmamızı sağlıyor. Bunu yapabilmesi için de FUSE isimli linux kernel modülüne ihtiyacı var. File System in UserSpace’in kısaltması olan FUSE kullanıcı sisteminde çalışan uygulamaların işletim sisteminin dosya sistemi çalışma mekanizmasına müdehalede bulunmasını sağlayan bir kernel modülüdür. Bunu apt-get install sshfs komutu otomatik olarak kurup yapılandırıyor. Yalnız kullandığımız sistem OpenVZ gibi container tabanlı bir sanallaştırma sistemiyse bu aşamada sorun yaşabiliriz. Bu durumda servis sağlayıcı ile görüşmek gerekiyor.
AutoFS ile dosya paylaşımı işlemini otomatik hale getirelim
Bunun dışında sshfs bağlantıları aynı ssh oturumları gibi kalıcı olamıyorlar. Eğer bunları kalıcı yapmak istiyorsak ya /etc/fstab
‘a müdehale bulanacağız (kesinlikle önermiyorum sistem çökebilir ? ) ya da autofs
gibi araçlardan faydalanacağız. AutoFS bu mount işlemlerini bizler için otomatik olarak yapan bağlantı koptuğunda yeniden bağlanan ya da kullanılmıyorsa kaynak tüketmemesi için bunu kapatan, sistem başlangıcında yine otomatik olarak bağlantı kurulmasını sağlayan yardımcı bir araçtır. Şöyle kuruyoruz:
apt-get install autofs
Normalde sshfs desteği yok onu da configleri editlyerek biz ekleyebiliyoruz:
/etc/auto.master sonuna:
/media/sshfs /etc/auto.sshfs uid=1000,gid=1000,--timeout=30,--ghost
ekliyoruz. Böylece /media/sshfs
de yapılacak bağlantılar için /etc/auto.sshfs
ayar dosyasının kullanılacağını belirtmiş olduk.
/etc/auto.sshfs
dosyasını oluşturup asıl ayarları giriyoruz:
mountpoint -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#user@server\:/remotedir
Buradaki mountpoint bağlantı noktası oluyor. İsmi değiştirebiliriz. Bu şekilde bırakırsak bağlantı /media/sshfs/mountpoint
adresine yapılacak.
user@server kısmını da uzak sistem bilgilerimize göre giriyoruz.
Dikkat edilmesi gereken bağlantı için publickey kullanılacak olması. Bu dosyada şifre belirtmiyoruz. yani ssh ile doğrudan bağlantı kurabileceğiniz şekilde yapılandırılmış bir sunucu için bu yöntemi kullanabiliriz. Sisteminizi buna uygun hale getirmek için linux publickey authentication işlemini araştırabilirsiniz.
Ek kaynaklar: