उबंटू 11.10 पर, मैंने पाया कि मैं ssh कमांड को ब्लॉक कर सकता हूं, बिना और -T के साथ भेजा जा सकता है, और पोर्ट फॉरवर्डिंग की अनुमति देता है, जबकि पोर्ट फॉरवर्डिंग से गुजर सकता है।
विशेष रूप से मेरे पास स्थानीयहोस्ट के लिए बाध्य "somehost" पर एक रेडिस-सर्वर है: 6379 कि मैं ssh सुरंगों के माध्यम से अन्य मेजबानों के लिए सुरक्षित रूप से साझा करना चाहता हूं जिनके पास कीफ़ाइल है और साथ में ssh होगा:
$ ssh -i keyfile.rsa -T -N -L 16379:localhost:6379 someuser@somehost
यह रेडिस-सर्वर, "लोकलहोस्ट" पोर्ट 6379 को "somehost" पर स्थानीय रूप से ssh कमांड को निष्पादित करने वाले होस्ट पर प्रदर्शित होने के कारण, "लोकलहोस्ट" पोर्ट 16379 पर रीमेक किया जाएगा।
रिमोट पर "somehost" यहाँ वही है जो मैंने अधिकृत_की के लिए उपयोग किया है:
cat .ssh/authorized_keys (portions redacted)
no-pty,no-X11-forwarding,permitopen="localhost:6379",command="/bin/echo do-not-send-commands" ssh-rsa rsa-public-key-code-goes-here keyuser@keyhost
नो-पीटीआई अधिकांश ssh प्रयासों को पूरा करता है जो एक टर्मिनल खोलना चाहते हैं।
पर्मोपेन बताता है कि किस पोर्ट को आगे भेजने की अनुमति है, इस मामले में पोर्ट 6379 रेडिस-सर्वर पोर्ट जिसे मैं फॉरवर्ड करना चाहता था।
कमांड = "/ बिन / गूंज मत करो-भेजना-आदेश" गूँजना "वापस करना-नहीं-भेजना-आज्ञा देना" यदि कोई व्यक्ति या कोई व्यक्ति ssh -T के माध्यम से मेजबान को आदेश भेजने का प्रबंधन करता है या अन्यथा।
हाल ही के उबंटू से man sshd
, अधिकृत_की / कमांड को निम्नानुसार वर्णित किया गया है:
कमांड = "कमांड" निर्दिष्ट करता है कि जब भी यह कुंजी प्रमाणीकरण के लिए उपयोग की जाती है तो कमांड निष्पादित होता है। उपयोगकर्ता द्वारा आपूर्ति की गई कमांड (यदि कोई है) को नजरअंदाज किया जाता है।
Scp सिक्योर फाइल कॉपी का उपयोग करने के प्रयास "डू-नॉट-सेंड-कमांड्स" की एक गूंज के साथ भी विफल होंगे I मैंने पाया है कि sftp भी इस कॉन्फ़िगरेशन के साथ विफल हो जाता है।
मुझे लगता है कि पिछले कुछ उत्तरों में किए गए प्रतिबंधित शेल सुझाव भी एक अच्छा विचार है। इसके अलावा, मैं इस बात से सहमत हूँ कि यहाँ विस्तृत सब कुछ "मैन sshd" पढ़ने और "अधिकृत_" के लिए खोज करने से निर्धारित किया जा सकता है
no-pty
यह इंटरैक्टिव निष्पादन को खोलने की अनुमति नहीं देता है, यह कमांड निष्पादन को रोकने के लिए कुछ भी नहीं करता है, इसलिए उपयोगकर्ताauthorized_keys
फ़ाइल को संपादित कर सकता है यदि उसके पास कुछ ऐसा हैssh server 'sed -i -e s/no-pty// ~/.ssh/authorized_keys'
।