अधिकांश लोग फाइलज़िला, विनएससीपी या अन्य एफ़टीपी कार्यक्रमों जैसी उपयोगिताओं को पसंद करते हैं, जब उन्हें लिनक्स सर्वर से या फ़ाइलों को स्थानांतरित करने की आवश्यकता होती है। SFTP मूल FTP प्रोटोकॉल का एक सुरक्षित विकल्प है। यह ज्यादातर अपने असुरक्षित संस्करण के समान कार्य करता है, लेकिन एन्क्रिप्शन की एक अतिरिक्त परत के साथ। इसे पूरा करने के लिए, यह एसएसएच प्रोटोकॉल का उपयोग करता है जो इसे एन्क्रिप्शन क्षमताओं के साथ प्रदान करता है। आपके Linux सिस्टम पर SFTP सर्वर सेट करने में कई चरण शामिल हैं, जिन्हें हम यहां प्रदर्शित करते हैं।
एसएफ़टीपी क्या है?
SFTP (सिक्योर फाइल ट्रांसफर प्रोटोकॉल) क्लाइंट से सर्वर पर फाइल ट्रांसफर करने के लिए एक नेटवर्क प्रोटोकॉल है। FTP (फाइल ट्रांसफर प्रोटोकॉल) के विपरीत, SFTP भेजे गए डेटा को एन्क्रिप्ट करने के लिए SSH (सिक्योर शेल) प्रोटोकॉल का उपयोग करता है। यह कंप्यूटर वैज्ञानिकों, टाटू यलोन और सामी लेहटिनन द्वारा विकसित किया गया था, जो 1990 के दशक में एसएसएच प्रोटोकॉल के विकास के लिए भी जिम्मेदार हैं। हालाँकि, आधुनिक संस्करण IETF (इंटरनेट इंजीनियरिंग टास्क फोर्स) द्वारा विकसित किया गया है।
इसे रिमोट फाइल सिस्टम प्रोटोकॉल के रूप में वर्णित किया जा सकता है, भले ही इसके नाम से पता चलता है कि यह केवल फाइल ट्रांसफर ऑपरेशन करता है। क्लाइंट से प्राप्तकर्ता सर्वर पर SFTP का उपयोग करके फ़ाइल भेजते समय, डेटा को गंतव्य पर भेजने से पहले एन्क्रिप्ट किया जाता है। यदि भेजा जा रहा डेटा "मैन-इन-द-मिडिल" द्वारा इंटरसेप्ट किया गया है, तो इसे इस तीसरे पक्ष द्वारा आसानी से डिक्रिप्ट नहीं किया जा सकता है।
एसएसएच और ओपनएसएसएच सर्वर स्थापित करना
हम एसएसएच और ओपनएसएसएच सर्वर स्थापित करके एसएफटीपी सर्वर स्थापित करने की प्रक्रिया शुरू कर रहे हैं।
अधिकांश लिनक्स इंस्टॉलेशन में पहले से ही डिफ़ॉल्ट रूप से SSH इंस्टॉल होता है, लेकिन अगर आपके सिस्टम में यह नहीं है, तो आप इसे एडवांस्ड पैकेजिंग टूल के apt
का उपयोग करके इंस्टॉल कर सकते हैं। आदेश:
sudo apt install ssh
SSH को स्थापित करने के बाद, आप ssh
. चलाकर इसके संस्करण की जांच कर सकते हैं -V
. के साथ कमांड झंडा:
ssh -V
आप ओपनएसएसएच सर्वर को डेबियन और उबंटू सिस्टम पर स्थापित कर सकते हैं, उदाहरण के लिए, apt
का उपयोग करके आदेश:
sudo apt install openssh-server
आप आर्क लिनक्स पर pacman
. का उपयोग करके ऐसा कर सकते हैं आदेश:
sudo pacman -S openssh
एसएफ़टीपी के लिए उपयोगकर्ता, समूह और निर्देशिका बनाना
यह एक सामान्य सिफारिश है कि लिनक्स पर विभिन्न सेवाओं को अपने स्वयं के उपयोगकर्ताओं, समूहों और निर्देशिकाओं का उपयोग करना चाहिए।
SFTP के उपयोगकर्ताओं के लिए एक समूह बनाकर प्रारंभ करें। यह groupadd
. का उपयोग करके पूरा किया जाता है आदेश:
sudo groupadd sftp_group
आप एक उपयोगकर्ता बना सकते हैं और उसे उस समूह में जोड़ सकते हैं जिसे useradd
. का उपयोग करके बनाया गया था कमांड और उसका -g
ध्वज, जिसका उपयोग उस समूह को निर्दिष्ट करने के लिए किया जाता है जिसका उपयोगकर्ता हिस्सा होगा:
sudo useradd -g sftp_group sftp_user
उपयोगकर्ता बनाने के बाद, इसे passwd
. का उपयोग करके पासवर्ड असाइन करें आदेश:
sudo passwd sftp_user
नव निर्मित उपयोगकर्ता के लिए डिफ़ॉल्ट निर्देशिका बनाएं:
sudo mkdir -p /data/sftp_user/uploaded_files
chown
का प्रयोग करें निर्देशिका को आवश्यक अनुमतियाँ देने का आदेश:
sudo chown -R root:sftp_group /data/sftp_user sudo chown -R sftp_user:sftp_group /data/sftp_user/uploaded_files
SSH सर्वर को कॉन्फ़िगर करना
एक SFTP सर्वर स्थापित करने का अगला चरण उस SSH सर्वर को कॉन्फ़िगर करना है जिसका वह उपयोग करेगा।
"/etc/ssh/" में मिली "sshd_config" फ़ाइल को संपादित करें ताकि उपयोगकर्ता SSH के शेल के बजाय सर्वर से कनेक्ट होने पर SFTP शेल का उपयोग कर रहा हो।
आप डिफ़ॉल्ट रूप से कई लिनक्स इंस्टॉलेशन पर पाए जाने वाले सामान्य रूप से उपयोग किए जाने वाले नैनो संपादक का उपयोग करके फ़ाइल को आसानी से संपादित कर सकते हैं:
sudo nano /etc/ssh/sshd_config
फ़ाइल के नीचे खोजें और निम्नलिखित जोड़ें:
Match Group sftp_group ChrootDirectory /data/%u ForceCommand internal-sftp
SSH सेवा को पुनरारंभ करें:
sudo systemtl restart sshd
(वैकल्पिक) SFTP पोर्ट बदलना
यदि आप उस पोर्ट को बदलना चाहते हैं जिसका उपयोग SFTP सर्वर 22 के डिफ़ॉल्ट मान से आपके चुने हुए विकल्प में कर रहा है, तो आपको "sshd_config" फ़ाइल को एक बार फिर से संपादित करना होगा।
नैनो संपादक का उपयोग करके एक बार फिर फ़ाइल को संपादित करें:
sudo nano /etc/ssh/sshd_config
22 के डिफ़ॉल्ट पोर्ट मान के साथ फ़ाइल में एक पंक्ति खोजें, टिप्पणी की गई:
#Port 22
आप हैश (#) चिह्न को हटा सकते हैं जिसका उपयोग लाइन पर टिप्पणी करने के लिए किया जाता है और पोर्ट वैल्यू की अपनी पसंद को जोड़ा जाता है। मेरे मामले में, मैं मान को 1111 में बदल रहा हूँ:
Port 1111
अब बस फाइल को सेव करें
और सर्वर को पुनरारंभ करें:
sudo systemctl restart sshd
लॉग इन और सर्वर का उपयोग करना
डब्ल्यू सर्वर स्थापित और कॉन्फ़िगर किया गया है, यह उपयोग के लिए तैयार है। आप आसानी से फ़ाइलें अपलोड कर सकते हैं और उन्हें डाउनलोड कर सकते हैं, सभी SSH द्वारा प्रदान किए गए एन्क्रिप्टेड सत्र के साथ।
लॉग इन करने से पहले, प्रदान किए गए मैनुअल पर एक नज़र डालने में कोई दिक्कत नहीं होगी:
sftp -h
निम्नलिखित प्रारूप में उपयोगकर्ता नाम और सर्वर आईपी या होस्टनाम प्रदान करके सर्वर में लॉग इन करें:
sftp USER@HOST
इसके अतिरिक्त, आप -P
का उपयोग करके उस पोर्ट को निर्दिष्ट कर सकते हैं जो आपका SFTP सर्वर उपयोग कर रहा है (डिफ़ॉल्ट 22 है) झंडा:
sftp USER@HOST -P <PORT>
जब आप लॉग इन करते हैं, तो आपका स्वागत एक SFTP शेल से होता है।
help
. लिखकर मैन्युअल देखें ।
फ़ाइलें डाउनलोड करना
फ़ाइल डाउनलोड करने के लिए:
get /path/to/file/on/server
उदाहरण:
get /bin/ls
यह आपकी वर्तमान निर्देशिका में डाउनलोड हो जाएगा - जिसे आप सर्वर में लॉग इन करने से पहले स्थानीय रूप से थे। किसी विशिष्ट स्थानीय निर्देशिका में डाउनलोड करने के लिए:
get /path/to/file/on/server /path/to/local/folder
निर्देशिकाओं को कॉपी करने के लिए, आपको -r
. जोड़ना होगा पैरामीटर, जो कमांड के लिए पुनरावर्ती के लिए खड़ा है।
get -r /bin /home/username/Desktop/bin
उस नई निर्देशिका के लिए एक नाम जोड़ना याद रखें जिसे आप स्थानीय रूप से बनाना चाहते हैं, जैसे इस मामले में "/home/username/Desktop/bin"। यदि आप get -r /bin /home/username/Desktop
. का उपयोग करते हैं , फ़ाइलें सीधे डेस्कटॉप पर कॉपी की जाएंगी। ध्यान दें कि ये वे फ़ाइलें हैं जिनकी प्रतिलिपि बनाई गई है न कि स्वयं निर्देशिका।
फ़ाइलें अपलोड करना
फ़ाइलें या निर्देशिका अपलोड करना उन्हीं सिद्धांतों का पालन करता है। एकमात्र अपवाद यह है कि पथ उलट जाते हैं, जिसका अर्थ है कि आप पहले स्थानीय फ़ाइल/निर्देशिका निर्दिष्ट करते हैं, फिर दूरस्थ पथ।
आरंभ करने के लिए, put
. का उपयोग करके सर्वर पर फ़ाइलें अपलोड करें आदेश:
put /path/to/local/content /path/to/remote/location
निर्देशिकाओं (पुनरावर्ती) को अपलोड करते समय, याद रखें कि पिछले अनुभाग का एक ही नियम लागू होता है:यह वास्तव में निर्देशिका में फ़ाइलें हैं जिन्हें कॉपी किया जाता है न कि स्वयं निर्देशिका। उस निर्देशिका के लिए एक नया नाम निर्दिष्ट करें जिसमें आप उन फ़ाइलों की प्रतिलिपि बनाना चाहते हैं।
put -r /home/username/Desktop/bin bin
यह रिमोट साइड पर "बिन" नामक एक नई निर्देशिका बनाता है।
स्थानांतरण फिर से शुरू करें और रिक्त स्थान वाले पथ का उपयोग करें
जब आप एक बड़ी फ़ाइल को स्थानांतरित करते हैं जो बाधित हो जाती है, तो आप पिछली कमांड को reput
से बदलकर फिर से शुरू कर सकते हैं और reget
. बस सुनिश्चित करें कि आप उन्हीं रास्तों का उपयोग करते हैं जिनका आपने पिछली बार उपयोग किया था ताकि स्रोत और गंतव्य बिल्कुल मेल खा सकें।
reget /path/to/file/on/server /path/to/local/file reput /path/to/local/file /path/to/file/on/server
निर्देशिका स्थानांतरण फिर से शुरू करने के लिए, बस -r
जोड़ें पैरामीटर:
reput -r /home/username/Desktop/bin bin
यदि किसी फ़ाइल के पथ में रिक्त स्थान हैं, तो उसे उद्धरण चिह्नों में रखें:
put "/home/username/My Documents/Files"
अन्य उपयोग
आप ls
. का उपयोग करके फ़ाइलों और निर्देशिकाओं को सूचीबद्ध कर सकते हैं आदेश:
ls -l
chmod
. का उपयोग करके फ़ाइलों की अनुमतियां भी बदली जा सकती हैं आदेश:
chmod <PERMISSION> <FILE>
इसके अतिरिक्त, आप mkdir कमांड का उपयोग करके एक नई निर्देशिका बना सकते हैं:
mkdir <DIRECTORY_NAME>
अक्सर पूछे जाने वाले प्रश्न
1. क्या मुझे एक SFTP क्लाइंट स्थापित करने की आवश्यकता है?
ज्यादातर मामलों में नहीं, चूंकि अधिकांश लिनक्स सिस्टम डिफ़ॉल्ट रूप से स्थापित टर्मिनल-आधारित SFTP क्लाइंट के साथ आते हैं।
2. क्या मैं सार्वजनिक कुंजी प्रमाणीकरण का उपयोग कर सकता हूं?
हां, आप प्रमाणीकरण विधि के रूप में पासवर्ड के बजाय सार्वजनिक कुंजी प्रमाणीकरण का उपयोग कर सकते हैं। इसे सेट करना काफी सरल है, और यह आपके सर्वर के लिए अतिरिक्त सुरक्षा प्रदान करता है।
3. क्या मैं एक साथ SSH सर्वर होस्ट कर सकता हूँ?
हां। हालाँकि, आपको यह सुनिश्चित करने की आवश्यकता होगी कि आपका SFTP सर्वर SSH सर्वर के समान पोर्ट का उपयोग नहीं कर रहा है।