सवाल एससीपी की अनुमति दें लेकिन एसएसएच का उपयोग करके वास्तविक लॉगिन नहीं


क्या किसी उपयोगकर्ता को लिनक्स बॉक्स (इस मामले में Centos 5.2) पर कॉन्फ़िगर करने का कोई तरीका है ताकि वे फ़ाइलों को पुनर्प्राप्त करने के लिए एसपीपी का उपयोग कर सकें, लेकिन वास्तव में एसएसएच का उपयोग कर सर्वर पर लॉगिन नहीं कर सकते?


58
2017-11-12 02:44


मूल


मैंने लॉगिन शेल को / bin / false में सेट करने का प्रयास किया, लेकिन यह पूरी तरह से काम कर रहे scp को रोकता है। - DrStalker


जवाब:


आरएसएच शैल (http://pizzashack.org/rssh/) इस उद्देश्य के लिए डिजाइन किया गया है।

चूंकि आरएचईएल / सेंटोस 5.2 में आरएसएच के लिए पैकेज शामिल नहीं है, इसलिए आप यहां आरपीएम प्राप्त करने के लिए देख सकते हैं: http://dag.wieers.com/rpm/packages/rssh/

इसका उपयोग करने के लिए इसे इस तरह के नए उपयोगकर्ता के लिए खोल के रूप में सेट करें:

useradd -m -d /home/scpuser1 -s /usr/bin/rssh scpuser1
passwd scpuser1

.. या इस तरह के मौजूदा के लिए खोल बदलें:

chsh -s /usr/bin/rssh scpuser1

..और संपादित करें /etc/rssh.conf आरएसएच शैल को कॉन्फ़िगर करने के लिए - विशेष रूप से असुविधा allowscp सभी आरएसएच उपयोगकर्ताओं के लिए एससीपी एक्सेस सक्षम करने के लिए लाइन।

(आप उपयोगकर्ताओं को अपने घरों में रखने के लिए क्रोट का भी उपयोग करना चाह सकते हैं लेकिन यह एक और कहानी है।)


41
2017-11-12 03:14



यह कमाल है - मैं थोड़ी देर के लिए ऐसा कुछ ढूंढ रहा हूं - warren
आरएसएच के पीछे विचार अच्छा है, लेकिन आईआईआरसी आरएसश प्रोग्रामिंग शर्तों में सुरक्षा का बिल्कुल चमत्कार नहीं था। 'आरएसएच शोषण' पर एक साधारण Google मुझे अधिक आरामदायक परिणाम देता है ... - wzzrd
scponly एक ही चीज़ के साथ ही कम या स्पष्ट रूप से कम शोषण-प्रवण है: sublimation.org/scponly/wiki/index.php/Main_Page - François Feugeas
ऐसा लगता है कि github में चले गए हैं। उत्थान लिंक मर चुका है। github.com/scponly/scponly/wiki - spazm


मैं इसके लिए देर हो चुकी हूं लेकिन आप एसएसएच कुंजी का उपयोग कर सकते हैं और उनके ~ / .ssh / अधिकृत_keys फ़ाइल में अनुमत सटीक कमांड निर्दिष्ट कर सकते हैं उदा।

नो-पोर्ट-अग्रेषण, नो-पीटीआई, कमांड = "एसपीपी स्रोत लक्ष्य" एसएसएच-डीएसएस ...

सही कमांड सेटिंग्स सेट करने के लिए आपको लक्ष्य पर ps का उपयोग करने की आवश्यकता हो सकती है।

पीएस: यदि आप "-v" के साथ एक परीक्षण scp कमांड चलाते हैं तो आप ऐसा कुछ देख सकते हैं

debug1: Sending command: scp -v -t myfile.txt

आप ध्यान दें कि "-t" एक अनियंत्रित एसपीपी विकल्प है, जो प्रोग्राम द्वारा दूर अंत तक उपयोग किया जाता है। इससे आपको यह पता चलता है कि आपको अधिकृत_की में क्या रखना है।

संपादित करें: आप अधिक जानकारी (कई लिंक के साथ) में पा सकते हैं यह स्टैक ओवरफ्लो प्रश्न

नामित उपयोगकर्ता के लिए, इसका एक उदाहरण उदाहरण यहां दिया गया है backup_user सर्वर की तरफ।

~backup_user/.ssh/authorized_keys सर्वर पक्ष पर सामग्री (कुछ और सुरक्षा प्रतिबंधों के साथ):

no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="scp -v -r -d -t ~/CONTENT" ssh-rsa AAAAMYRSAKEY...

~ Backup_user में एक लिंक बनाएं / उस निर्देशिका से लिंक जहां सामग्री को सुलभ किया जाना चाहिए।

$ ln -s /path/to/directory/with/accessible/content ~backup_user/CONTENT

अब, ग्राहक पक्ष से, निम्न आदेश काम करना चाहिए:

scp -v  -r  -P 2222 -i .ssh/id_rsa_key_file path/to/data backup_user@SERVER:~/CONTENT

यह आदेश क्या करता है:

  • यह verbose जानकारी प्रदर्शित करता है (optionnal: आप हटा सकते हैं -v दोनों कमांड और अधिकृत_की फाइल से)
  • यह पथ / डेटा / डेटा की सामग्री को दोहराता है। (optionnal: आप हटा सकते हैं -r यदि आप रिकर्सिव कॉपी नहीं करना चाहते हैं तो दोनों कमांड और अधिकृत_कीज फ़ाइल से)
  • यह सर्वर से कनेक्ट करने के लिए पोर्ट 2222 का उपयोग करता है (optionnal: आप हटा सकते हैं -P 2222 आदेश से)
  • कनेक्शन को स्वचालित करने के लिए यह उपयोग और पहचान फ़ाइल (optionnal: आप हटा सकते हैं -i .ssh/id_rsa_key_file
  • की सामग्री path/to/data में कॉपी किया जाएगा /path/to/directory/with/accessible/content/

सर्वर से क्लाइंट में फ़ाइल (या कई) की प्रतिलिपि बनाने के लिए, आपको एक शेल स्क्रिप्ट बनाना चाहिए जो इसे संभालता है जैसा कि यहां वर्णित है


35
2017-11-27 17:52



उपयोगकर्ता को उनकी अधिकृत_की फ़ाइल पर स्कैप करना बंद करना क्या है? क्या इसे प्रतिबंधित किया जा सकता है कि वह उपयोगकर्ता के स्वामित्व में न हो? - Dan
@Dan - अधिकृत_की फ़ाइल, यानी पर केवल पढ़ने की अनुमति सेट करना संभव होना चाहिए। chmod 400 ~/.ssh/authorized_keys। - Roger Dueck
आपको भी बनाना चाहिए ~/.bashrc (और जो कुछ भी बैश निष्पादित करता है) और ~/.ssh/rc सिफ़ पढ़िये। लेकिन अगर दुर्भावनापूर्ण उपयोगकर्ता के पास rsync या sftp तक पहुंच है, तो वह अभी भी हटा सकता है ~/.bashrc, और एक नया अपलोड करें। चूंकि इसे सुरक्षित करना मुश्किल है, इसलिए मैं इस विधि के खिलाफ अनुशंसा करता हूं (command="...")। - pts


मैं पार्टी के लिए थोड़ा देर हो चुकी हूं, हालांकि मैं सुझाव दूंगा कि आप इसे देखें ForceCommand ओपनएसएसएच का निर्देश

Subsystem sftp internal-sftp

Match group sftponly
         ForceCommand internal-sftp

अनुमोदित, यह एसएफटीपी है और एससीपी नहीं है, लेकिन यह प्रतिबंधित लक्ष्य के मुकाबले एक ही लक्ष्य तक पहुंचता है। इसके अतिरिक्त, यदि आप चाहें तो उपयोगकर्ता को चिल्ला सकते हैं।


29
2017-11-12 10:56



जोड़ें chrootDirectory %h तथा AllowTcpForwarding no  मैच अनुभाग के बाद sftponly उपयोगकर्ताओं को अपने घर के लिए chroot मजबूर करने के लिए मजबूर करने के लिए। कृपया ध्यान दें कि मैच (आवश्यक!) एसएसएच कॉन्फ़िगरेशन पर अंतिम अनुभाग होना चाहिए और उसके बाद विकल्प मिलान किए गए उपयोगकर्ताओं के लिए विकल्प हैं - higuita
ForceCommand internal-sftp -u 0077 -d /uploaddir एक अपलोड निर्देशिका पर umask मजबूर कर, इसे और अधिक कठिन कर सकते हैं। 'ChrootDirectory' के संयोजन के साथ यह एक बहुत ही नियंत्रित, पृथक अपलोड वातावरण बनाता है। बोनस नोट: डिफ़ॉल्ट डीआईआर और उमास्क जरूर में सेट किया जाना चाहिए ForceCommandमें नहीं, में नहीं Subsystem निर्देश, अगर आप उन्हें काम करना चाहते हैं। - Marcin
यह समझाए जाने वाला एक लंबा लेख उपलब्ध है debian-administration.org/article/590/... - koppor


मैं scponly का उपयोग करने की सिफारिश करेंगे।

यह एक प्रतिबंधित शेल है जो उपयोगकर्ताओं को बस ऐसा करने की अनुमति देता है, एससीपी फाइल सर्वर पर, लेकिन वास्तव में लॉग इन नहीं करता है। सॉफ्टवेयर के लिए सूचना और स्रोत कोड डाउनलोड उपलब्ध हैं यहाँ और पूर्व संकलित आरपीएम पैकेज के माध्यम से उपलब्ध हैं ईपीईएल यम रिपोजिटरीज

एक बार इंस्टॉल हो जाने के बाद, आपको नए इंस्टॉल किए गए प्रतिबंधित शैल का उपयोग करने के लिए, प्रत्येक उपयोगकर्ता खाते को कॉन्फ़िगर करना होगा, जिसे आप एक्सेस प्रतिबंधित करना चाहते हैं। आप मैन्युअल रूप से / etc / passwd के माध्यम से ऐसा कर सकते हैं या निम्न आदेश का उपयोग कर सकते हैं: usermod -s /usr/bin/scponly USERNAME


5
2018-01-25 20:30



मैं इसके समर्थन में हूं। scponly वास्तव में इस उद्देश्य के लिए डिजाइन किया गया है। - UtahJarhead
लगता है कि मृत हो गया है। ऐसा लगता है कि डेबियन ने इसे हटा दिया है: packages.debian.org/search?keywords=scponly और यह जिथूब पर कोडभी मर चुका है अनुवर्ती चर्चा: serverfault.com/questions/726519/... - koppor


मैं ऐसा करने के लिए MySecureShell का उपयोग करता हूं। आप अन्य प्रतिबंधों को भी कॉन्फ़िगर कर सकते हैं।

https://github.com/mysecureshell/mysecureshell

केवल एसएफटीपी / एससीपी के लिए कनेक्शन कनेक्शन। कोई खोल का उपयोग नहीं।


5
2017-11-12 07:21





पार्टी के लिए बहुत देर हो चुकी है, लेकिन बस गिट उपयोगकर्ता के खोल को / usr / bin / git-shell के रूप में सेट करें। यह एक प्रतिबंधित खोल है जो इंटरैक्टिव लॉगिन की अनुमति नहीं देता है। आप अभी भी उपयोगकर्ता के साथ 'su -s / bin / bash git' या जो भी आपका गिट उपयोगकर्ता नाम है, में मुकदमा कर सकते हैं।


2
2017-10-01 19:54





हम एक psudo खोल का उपयोग करते हैं scponly उपयोगकर्ताओं के लिए हमारे सुरक्षित FTP सर्वर पर हम केवल फाइलों को स्कैन करने में सक्षम होना चाहते हैं लेकिन लॉग इन नहीं करना चाहते हैं।


1
2017-11-27 18:05