İçeriğe geç
Sunucu yönetimi8 dakika15.10.2026

Linux OpenSSH ile SFTP-Only Kullanıcı ve Chroot Kurulumu

Özel bir SFTP hesabı, etkileşimli kabuk erişimi olmadan dosya aktarabilir. Bu Linux örneğinde korunan chroot kökü ile yazılabilir yükleme klasörünü ayrı yapılandırıyoruz.

SFTP-onlyChrootDirectoryinternal-sftpOpenSSH
Varkuna Connect SFTP bağlantısı

Ön koşullar ve örnek dizin düzeni

Örnek, OpenSSH, sudo erişimi, useradd ve install araçları bulunan Linux sunucu içindir. Dağıtımınızın yol ve hesap yönetimi kurallarını doğrulayın. Windows hesap oluşturma ve NTFS izinleri ayrı bir işlem gerektirir.

Yeni ve özel transferuser hesabını kullanıyoruz. Chroot kökü /srv/sftp/transferuser, yazılabilir hedef /srv/sftp/transferuser/upload olacak. SFTP içinde bunlar / ve /upload görünür. Yapılandırma sırasında açık yönetici oturumu ile konsoldan kurtarma erişimini koruyun.

Hesabı ve klasörleri oluşturun

Önce hesabın ve yolların mevcut başka bir işe ait olmadığını kontrol edin. Komutlar ev dizini oluşturmadan yeni kullanıcı ve grup açar; /upload, chroot içinden görünen ev yoludur. Sunucuda /bin/sh bulunmalıdır. Aşağıdaki ForceCommand kuralı bu hesap için etkileşimli kabuğu engeller.

Hesaba sunucunun izin verdiği kimlik doğrulama yöntemi tanımlanmalıdır. Parolalı giriş izinliyse sudo passwd transferuser ile güçlü parola atayın. Public key kullanıyorsanız yazılamayan chroot kökü dışında, mevcut sunucu politikasına uygun authorized-keys konumu düzenleyin. Bu örnek için genel parola politikasını açmayın.

Yeni hesap ve ayrılmış depolama
sudo useradd -U -M -d /upload -s /bin/sh transferuser
sudo install -d -o root -g root -m 0755 /srv/sftp
sudo install -d -o root -g root -m 0755 /srv/sftp/transferuser
sudo install -d -o transferuser -g transferuser -m 0750 /srv/sftp/transferuser/upload

Chroot kökünün tüm üst dizinlerini kontrol edin

OpenSSH, ChrootDirectory yolunun her bileşenini kontrol eder. Kök ve üst dizinler root sahipliğinde olmalı, grup ve diğer kullanıcılar tarafından yazılamamalıdır. Yeni dizinlerle birlikte /srv yolunu da inceleyin. Yazılabilir upload alt dizini bu sınırın dışında kalır.

Ortak üst dizin uygun değilse başka uygulamaların sahipliğini değiştirmek yerine farklı bir özel yol seçin. Chroot ağacını topluca transferuser sahipliğine vermeyin; korunan sınırı kaldırır ve girişi bozabilir.

Yolu inceleyin
namei -l /srv/sftp/transferuser/upload

Hesabı internal-sftp ile sınırlayın

Etkin sshd_config dosyasını yedekleyin; mevcut Match bloklarını ve dahil edilen dosyaları inceleyin. Hesaba özel bloğu genel ayarlardan sonra yerleştirin; sonraki genel direktiflerin yanlışlıkla koşullu kalmamasına dikkat edin. Kullanıcıya özel Match, yöneticilerin chroot kapsamına girmesini önler.

internal-sftp, chroot içine kabuk ve kütüphane kopyalamadan sshd içinde çalışır. -d seçeneği kısıtlı görünümdeki /upload klasörünü başlangıç yapar. DisableForwarding bu hesabın yönlendirme özelliklerini kapatır; ForceCommand tek başına yönlendirme kısıtı sayılmaz.

sshd_config
Match User transferuser
    ChrootDirectory /srv/sftp/%u
    ForceCommand internal-sftp -d /upload
    DisableForwarding yes
    PermitTTY no

Doğrulayın, yeniden yükleyin ve ayrı oturumda sınayın

Yeniden yüklemeden önce sudo sshd -t çalıştırın. Sözdizimi kontrolü gerçek sahiplik ve kimlik doğrulama denemesi değildir; etkin Match sonucunu ve ardından gerçek SFTP girişini de sınayın. sshd arama yolunda yoksa dağıtımınızdaki mutlak yolunu kullanın.

Dağıtımın belgelenen komutuyla SSH hizmetini yeniden yükleyin; hizmet adı ssh veya sshd olabilir. Yönetici oturumunu açık tutun. İkinci istemciden transferuser ile girin, pwd sonucunu inceleyin, /upload içine geçici dosya yükleyin ve köke yazmanın reddedildiğini doğrulayın. Etkileşimli SSH kabuğunun açılamadığını da sınayın.

Yapılandırma sözdizimi kontrolü
sudo sshd -t

Yaygın kurulum hataları

Giriş hemen kapanıyor

Sunucu günlüğünde chroot sahipliğini, bulunmayan /upload yolunu ve hesap giriş kısıtlarını inceleyin.

Kök görünüyor, yükleme başarısız

Chroot köküne yazma reddedilmelidir. /upload seçin ve bu klasörün kullanıcı/grup sahipliğini inceleyin.

Yönetici erişimi değişti

Match kapsamını inceleyin; açık oturum veya konsol üzerinden yedek yapılandırmayı geri alın.

Devam et

Rehberi uygulamaya geçirin.

İlgili Varkuna ürününü inceleyin veya ayrıntılı kullanım rehberini açın.