SFTP आपके मौजूदा SSH कनेक्शन के भीतर ही चलता है, इसलिए सर्वर पर अतिरिक्त सॉफ़्टवेयर या नया पोर्ट नहीं चाहिए। VPS Linux Infrawire पर FileZilla जैसे ग्राफ़िकल क्लाइंट से वेबसाइट अपलोड करने या बैकअप लाने का यह सबसे सुरक्षित तरीका है। इस गाइड में पासवर्ड और कुंजी से लॉगिन, फ़ाइल परमिशन और केवल SFTP वाला प्रतिबंधित यूज़र शामिल है।
📋 पूर्व-आवश्यकताएँ
- पोर्ट 22 पर चलते SSH वाला Linux VPS (Ubuntu 24.04, Debian 12, AlmaLinux 9 या Rocky 9)।
- VPS का IP और root पासवर्ड, जो आपके ग्राहक क्षेत्र में उपलब्ध हैं।
- आपके कंप्यूटर पर FileZilla Client इंस्टॉल (Client, FileZilla Server नहीं)।
1. पासवर्ड से तुरंत कनेक्ट करें
पहले परीक्षण के लिए FileZilla के ऊपर दिया गया क्विककनेक्ट बार इस्तेमाल करें:
- होस्ट:
sftp://VPS_IP - यूज़रनेम:
USER - पासवर्ड: आपका पासवर्ड
- पोर्ट:
22
पहली बार होस्ट की (host key) स्वीकार करें। दाईं ओर का पैनल सर्वर का फ़ाइल ट्री दिखाता है। root की जगह सामान्य यूज़र चुनें: गलत क्लिक से नुकसान कम होगा।
Bashadduser USER usermod -aG sudo USER
AlmaLinux या Rocky पर useradd -m USER, passwd USER और usermod -aG wheel USER इस्तेमाल करें।
2. SSH कुंजी से लॉगिन करें
कुंजियाँ पासवर्ड से ज़्यादा सुरक्षित हैं और ब्रूट-फ़ोर्स से नहीं टूटतीं। अपने कंप्यूटर पर कुंजी-जोड़ी बनाएँ और सार्वजनिक भाग सर्वर पर कॉपी करें।
Bashssh-keygen -t ed25519 -C "filezilla" ssh-copy-id USER@VPS_IP
FileZilla में Edit > Settings > Connection > SFTP > Add key file खोलें और अपनी निजी कुंजी चुनें (वह फ़ाइल जिसमें .pub नहीं है)। FileZilla उसे अपने फ़ॉर्मेट में बदलने का सुझाव दे सकता है; स्वीकार करें। निजी कुंजी कभी साझा न करें।
3. साइट मैनेजर में कनेक्शन सहेजें
- File > Site Manager खोलें और New site पर क्लिक करें।
- प्रोटोकॉल: SFTP - SSH File Transfer Protocol।
- होस्ट:
VPS_IP, पोर्ट:22। - लॉगऑन टाइप: पासवर्ड के लिए Normal, कुंजी के लिए Key file।
- यूज़र:
USER। Advanced टैब में डिफ़ॉल्ट रिमोट डायरेक्टरी तय करें, जैसे/var/www/example.com। - Connect पर क्लिक करें। साइट अगली बार के लिए सहेज ली जाती है।
जिस कंप्यूटर पर आपका नियंत्रण नहीं है, वहाँ पासवर्ड न सहेजें।
4. वेब फ़ाइलों का मालिक और परमिशन सेट करें
अपलोड की गई फ़ाइलें अक्सर गलत यूज़र की हो जाती हैं, जिससे 403 या 500 एरर आते हैं। वेब डायरेक्टरी अपने यूज़र को दें और वेब सर्वर को उसे पढ़ने दें।
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 और Rocky पर वेब सर्वर का ग्रुप www-data की जगह apache है। जिन फ़ोल्डरों में एप्लिकेशन को लिखना है (अपलोड, कैश) उन्हें वेब सर्वर ग्रुप को मालिक ग्रुप बनाकर 775 किया जा सकता है। कभी chmod -R 777 इस्तेमाल न करें। FileZilla में किसी फ़ाइल पर राइट-क्लिक करके File permissions भी चुन सकते हैं।
5. वैकल्पिक: फ़ोल्डर में बंद, केवल SFTP वाला यूज़र
किसी ग्राहक को शेल के बिना सिर्फ़ एक फ़ोल्डर का एक्सेस देने के लिए chroot इस्तेमाल करें। chroot डायरेक्टरी खुद root की होनी चाहिए और किसी और के लिए लिखने योग्य नहीं, वरना sshd लॉगिन अस्वीकार कर देता है।
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
यह ब्लॉक /etc/ssh/sshd_config के अंत में जोड़ें:
INI1Match Group sftpusers 2 ChrootDirectory /var/sftp/%u 3 ForceCommand internal-sftp 4 AllowTcpForwarding no 5 X11Forwarding no
रीलोड से पहले सिंटैक्स जाँचें और नया लॉगिन चलने की पुष्टि होने तक अपना मौजूदा SSH सेशन खुला रखें।
Bashsshd -t systemctl reload ssh
सेवा का नाम Ubuntu और Debian पर ssh और AlmaLinux व Rocky पर sshd है। प्रतिबंधित यूज़र /files में पहुँचता है और उसे और कुछ नहीं दिखता।
जाँच
FileZilla को दोष देने से पहले टर्मिनल से परीक्षण करें:
Bashsftp USER@VPS_IP sftp> pwd sftp> put test.txt sftp> ls -l
फिर FileZilla से एक फ़ाइल अपलोड करें और ls -l /var/www/example.com से उसका मालिक जाँचें।
समस्या निवारण
- कनेक्शन अस्वीकृत या टाइमआउट: जाँचें कि sshd चल रहा है (
systemctl status ssh), पोर्ट फ़ायरवॉल में खुला है और आपने FTP नहीं, SFTP चुना है। - Permission denied (publickey): कुंजी
~/.ssh/authorized_keysमें नहीं है या परमिशन गलत हैं।chmod 700 ~/.sshऔरchmod 600 ~/.ssh/authorized_keysसे ठीक करें। - chroot यूज़र लॉगिन के तुरंत बाद कट जाता है: chroot फ़ोल्डर root का नहीं है या ग्रुप के लिए लिखने योग्य है।
journalctl -u sshमें "bad ownership or modes for chroot directory" खोजें। - अपलोड नहीं होता, फ़ोल्डर पर परमिशन अस्वीकृत: यूज़र लक्ष्य का मालिक नहीं है। चरण 4 के
chownऔरchmodकमांड फिर चलाएँ।
✅ अब आप FileZilla से अपने Linux VPS पर फ़ाइलें सुरक्षित रूप से भेज सकते हैं।