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.

Ö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.
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/uploadChroot 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.
namei -l /srv/sftp/transferuser/uploadHesabı 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.
Match User transferuser
ChrootDirectory /srv/sftp/%u
ForceCommand internal-sftp -d /upload
DisableForwarding yes
PermitTTY noDoğ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.
sudo sshd -tYaygın kurulum hataları
Sunucu günlüğünde chroot sahipliğini, bulunmayan /upload yolunu ve hesap giriş kısıtlarını inceleyin.
Chroot köküne yazma reddedilmelidir. /upload seçin ve bu klasörün kullanıcı/grup sahipliğini inceleyin.
Match kapsamını inceleyin; açık oturum veya konsol üzerinden yedek yapılandırmayı geri alın.
Rehberi uygulamaya geçirin.
İlgili Varkuna ürününü inceleyin veya ayrıntılı kullanım rehberini açın.