जवाबों:
हां, केवल /bin/false
शेल के रूप में उपयोग करें और उपयोगकर्ता को किसी भी दूरस्थ कमांड (यानी -N
ओपनएसएसएच के लिए ध्वज) को निष्पादित किए बिना सुरंग एसएसएच प्रक्रिया शुरू करने का निर्देश दें :
ssh -N -L 1234:target-host:5678 ssh-host
/bin/false
शेल है, तो आपके पास शेल एक्सेस नहीं होगा, क्योंकि प्रत्येक लॉगिन सत्र तुरंत समाप्त हो जाएगा।
उपयोगकर्ता की .sh / अधिकृत_की फ़ाइल में, कुछ इस तरह से डालें:
permitopen="192.168.1.10:3306",permitopen="10.0.0.16:80",no-pty ssh-rsa AAAAB3N...
तो, मूल रूप से, आप नियंत्रण एक स्थान द्वारा अलग किए गए उपयोगकर्ता की ssh सार्वजनिक कुंजी के सामने होंगे। उदाहरण में, विशिष्ट सार्वजनिक कुंजी का उपयोग करने वाले कनेक्शनों को केवल 192.168.1.10 के MySQL सर्वर और 10.0.0.16 के वेब सर्वर को अग्रेषित करने के लिए SSH पोर्ट करने की अनुमति होगी, और एक शेल (नहीं-पीटीआई) सौंपा नहीं जाएगा। आप विशेष रूप से "नो-पीटीआई" विकल्प के बारे में पूछ रहे हैं, लेकिन अन्य भी उपयोगी हो सकते हैं यदि उपयोगकर्ता केवल विशिष्ट सर्वरों को टनल के लिए माना जाता है।
अधिकृत_की फ़ाइल के लिए अधिक विकल्पों के लिए sshd के लिए मैन पेज देखें ।
ध्यान दें कि उपयोगकर्ता का अनुभव थोड़ा अजीब लग सकता है: जब वे अंदर जाएंगे, तो ऐसा लगेगा कि सत्र लटका हुआ है (जैसा कि उन्हें एक पैसा नहीं मिल रहा है)। ठीक है। यदि उपयोगकर्ता ने पोर्ट फॉरवर्डिंग निर्दिष्ट किया है, उदाहरण के लिए, "-L3306: 192.168.1.10: 3306", तो पोर्ट अग्रेषण अभी भी प्रभावी होगा।
किसी भी मामले में, यह एक कोशिश दे।
no-pty
शेल एक्सेस को रोकना नहीं है, यह शेल को केवल एक पेंटी नहीं देता है। यह प्रॉम्प्ट प्रदर्शित नहीं करता है (यानी "हैंग होने के लिए प्रकट होता है"), लेकिन आप अभी भी कमांड को ठीक दे सकते हैं। यदि आपको शेल एक्सेस को वहां से प्रतिबंधित करना है तो आपको command="..."
विकल्प की आवश्यकता है .ssh/authorized_keys
।
उपयोगकर्ता को एक शेल दें जो केवल उन्हें लॉग आउट करने की अनुमति देता है जैसे /bin/press_to_exit.sh
#! / Bin / bash read -n 1 -p "बाहर निकलने के लिए कोई भी कुंजी दबाएं" कुंजी
इस तरह से वह जब तक चाहे तब लॉग इन रह सकता है, सुरंगों के साथ सक्रिय, लेकिन कोई कमांड नहीं चला सकता। Ctrl-c
कनेक्शन बंद कर देता है।
एक शेल असाइन करें जो उपयोगकर्ता को लॉग इन करने की अनुमति नहीं देता है।
जैसे
#!/bin/sh
echo "No interactive login available."
sleep 60
exit 0
उन्हें शेल प्रॉम्प्ट प्राप्त करने से रोका जाएगा, और उन्हें 60 सेकंड का समय दिया जाएगा - यदि 60 सेकंड के लिए कोई कनेक्शन सक्रिय नहीं है, तो यह बाहर निकल जाएगा और इस तरह उन्हें पूरी तरह से डिस्कनेक्ट कर देगा (आवश्यकताओं के अनुसार संख्या में वृद्धि)।
वे रिमोट कमांड को निष्पादित नहीं कर सकते, या तो, क्योंकि वह शेल उन्हें नहीं होने देगा।
logout
सामान्य के समान होगा ।
/sbin/nologin
, जिसे आप उपयोगकर्ता के अनुकूल संदेश के साथ अनुकूलित कर सकते हैं /etc/nologin.txt
।
मेरा समाधान उस उपयोगकर्ता को प्रदान करना है जो केवल एक इंटरैक्टिव शेल के बिना सुरंग बना सकता है, उस शेल को / etc / passwd में / usr / bin / tunnel_shell पर सेट करने के लिए ।
बस एक अनंत लूप के साथ निष्पादन योग्य फ़ाइल / usr / bin / tunnel_shell बनाएं ।
इसके अतिरिक्त AllowGroups
और Match Group
विकल्प का उपयोग करें ।
यहाँ पूरी तरह से समझाया गया है: http://blog.flowl.info/2011/ssh-tunnel-group-only-and-no-shell-please/
-N
उनके पास शेल एक्सेस है। यह वास्तव में समस्या को हल नहीं करता है और खतरनाक है।