SFTP mevcut SSH bağlantınızın içinde çalışır; sunucuya ek yazılım ya da yeni bir port gerektirmez. VPS Linux Infrawire üzerinde FileZilla gibi grafik bir istemciyle web sitesi yüklemenin veya yedek indirmenin en güvenli yoludur. Bu rehber parola ve anahtarla giriş, dosya izinleri ve yalnızca SFTP kullanabilen kısıtlı bir kullanıcıyı kapsar.
📋 Ön koşullar
- 22 numaralı portta SSH çalışan bir Linux VPS (Ubuntu 24.04, Debian 12, AlmaLinux 9 veya Rocky 9).
- Müşteri alanınızdaki VPS IP adresi ve root parolası.
- Bilgisayarınızda kurulu FileZilla Client (FileZilla Server değil).
1. Parolayla hızlı bağlantı
İlk denemede FileZilla'nın üstündeki Hızlı Bağlan çubuğunu kullanın:
- Sunucu:
sftp://VPS_IP - Kullanıcı adı:
USER - Parola: parolanız
- Port:
22
İlk bağlantıda sunucu anahtarını kabul edin. Sağ panel sunucunun dosya ağacını gösterir. root yerine normal bir kullanıcı tercih edin: yanlış bir tıklama daha az zarar verir.
Bashadduser USER usermod -aG sudo USER
AlmaLinux veya Rocky'de useradd -m USER, passwd USER ve usermod -aG wheel USER kullanın.
2. SSH anahtarıyla giriş
Anahtarlar parolalardan daha güvenlidir ve kaba kuvvetle bulunamaz. Kendi bilgisayarınızda bir anahtar çifti üretin ve genel kısmı sunucuya kopyalayın.
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
FileZilla'da Düzen > Ayarlar > Bağlantı > SFTP > Anahtar dosyası ekle yolunu açın ve özel anahtarınızı seçin (.pub uzantısız dosya). FileZilla bunu kendi biçimine dönüştürmeyi önerebilir; kabul edin. Özel anahtarı kimseyle paylaşmayın.
3. Bağlantıyı Site Yöneticisi'ne kaydetme
- Dosya > Site Yöneticisi menüsünü açın ve Yeni site düğmesine tıklayın.
- Protokol: SFTP - SSH File Transfer Protocol.
- Sunucu:
VPS_IP, Port:22. - Oturum açma türü: parola için Normal, anahtar için Anahtar dosyası.
- Kullanıcı:
USER. Gelişmiş sekmesinde varsayılan uzak dizini belirleyin, örneğin/var/www/example.com. - Bağlan düğmesine tıklayın. Site bir sonraki sefer için kaydedilir.
Kontrol etmediğiniz bir bilgisayarda parola kaydetmeyin.
4. Web dosyalarının sahibini ve izinlerini ayarlama
Yüklenen dosyalar çoğu zaman yanlış kullanıcıya ait olur ve 403 ya da 500 hatalarına yol açar. Web dizinini kullanıcınıza verin ve web sunucusunun okumasına izin verin.
Bashmkdir -p /var/www/example.com chown -R USER:www-data /var/www/example.com find /var/www/example.com -type d -exec chmod 755 {} \; find /var/www/example.com -type f -exec chmod 644 {} \;
AlmaLinux ve Rocky'de web sunucusu grubu www-data yerine apache adını taşır. Uygulamanın yazması gereken klasörler (yüklemeler, önbellek), grup sahibi web sunucusu grubu olacak şekilde 775 yapılabilir. Asla chmod -R 777 kullanmayın. FileZilla'da bir dosyaya sağ tıklayıp Dosya izinleri de seçebilirsiniz.
5. İsteğe bağlı: bir klasöre kilitlenmiş yalnızca SFTP kullanıcısı
Bir müşteriye kabuk vermeden tek bir klasöre erişim tanımak için chroot kullanın. Chroot dizininin kendisi root'a ait olmalı ve başkası tarafından yazılabilir olmamalıdır; aksi hâlde sshd girişi reddeder.
Bashgroupadd sftpusers useradd -M -d /files -s /usr/sbin/nologin -G sftpusers CLIENT passwd CLIENT mkdir -p /var/sftp/CLIENT/files chown root:root /var/sftp/CLIENT chmod 755 /var/sftp/CLIENT chown CLIENT:CLIENT /var/sftp/CLIENT/files
Bu bloğu /etc/ssh/sshd_config dosyasının sonuna ekleyin:
INI1Match Group sftpusers 2 ChrootDirectory /var/sftp/%u 3 ForceCommand internal-sftp 4 AllowTcpForwarding no 5 X11Forwarding no
Yeniden yüklemeden önce sözdizimini test edin ve yeni bir girişin çalıştığını doğrulayana kadar mevcut SSH oturumunuzu açık tutun.
Bashsshd -t systemctl reload ssh
Hizmet Ubuntu ve Debian'da ssh, AlmaLinux ve Rocky'de sshd adını taşır. Kısıtlı kullanıcı /files içine düşer ve başka hiçbir şey göremez.
Doğrulama
FileZilla'yı suçlamadan önce terminalden test edin:
Bashsftp USER@VPS_IP sftp> pwd sftp> put test.txt sftp> ls -l
Sonra FileZilla ile bir dosya yükleyin ve sahibini ls -l /var/www/example.com ile kontrol edin.
Sorun giderme
- Bağlantı reddedildi veya zaman aşımı: sshd'nin çalıştığını (
systemctl status ssh), portun güvenlik duvarında açık olduğunu ve FTP değil SFTP seçtiğinizi kontrol edin. - Permission denied (publickey): anahtar
~/.ssh/authorized_keysiçinde değil ya da izinler yanlış.chmod 700 ~/.sshvechmod 600 ~/.ssh/authorized_keysile düzeltin. - Chroot kullanıcısı girişten hemen sonra atılıyor: chroot klasörü root'a ait değil ya da grup tarafından yazılabilir.
journalctl -u sshiçinde "bad ownership or modes for chroot directory" ifadesini arayın. - Yükleme yapılamıyor, klasörde izin reddedildi: kullanıcı hedefin sahibi değil. 4. adımdaki
chownvechmodkomutlarını yeniden çalıştırın.
✅ Artık FileZilla ile Linux VPS'inize dosyaları güvenle aktarabilirsiniz.