उपयोगकर्ता को पूर्ण लॉगिन एक्सेस दिए बिना, मैं एकल कमांड को अनुमति देने के लिए SSHd को कैसे कॉन्फ़िगर कर सकता हूं?


11

मैं SSH पर दूरस्थ कमांड को कॉल करने का सबसे अच्छा तरीका ढूंढ रहा हूं। मैं उपयोगकर्ता 'rpcall' बनाता हूं, नया प्रमाणपत्र बनाता हूं और अधिकृत_कीप भरता हूं। इसे थोड़ा और सुरक्षित करें

from="ip",no-agent-forwarding,no-X11-forwarding,no-port-forwarding,no-pty ssh-rsa ......

अब उपयोगकर्ता rpcall टर्मिनल में लॉगिन नहीं कर सकता है

ssh -l rpc 192.168.12.1
PTY allocation request failed on channel 0

लेकिन किसी भी कमांड को चलाना संभव है

ssh -l rpc 192.168.12.1 cat /etc/passwd

क्या कोई समाधान है जो मैं कमांड निष्पादन को केवल एक प्रोसेसिंग स्क्रिप्ट तक सीमित कर सकता हूं? उदाहरण के लिए /home/rpcall/bin/command.sh

मैंने इस उपयोगकर्ता के लिए बैश शेल सेटअप किया है और उपयोग कर रहा है।

उपयोगकर्ता rpcall के लिए .bashrc

/home/rpcall/bin/command.sh $params1 $params2
exit

अन्य मशीन से ssh कॉल

ssh -l rpcall 192.168.12.1 "param1" "param2"

जवाबों:


19

आप अधिकृत_की फ़ाइल का उपयोग करके आदेशों को प्रतिबंधित कर सकते हैं। command="/home/rpcall/bin/command.sh"कुंजी के सामने रखो , अधिकृत_की फ़ाइल में, और उपयोगकर्ता केवल उस कमांड को चलाएगा जब वे कनेक्ट होते हैं।

अधिकृत_की के लिए मैन पेज देखें, यह उस मैन पेज से है,

 command="command"
         Specifies that the command is executed whenever this key is used
         for authentication.  The command supplied by the user (if any) is
         ignored.  The command is run on a pty if the client requests a
         pty; otherwise it is run without a tty.  If an 8-bit clean chan-
         nel is required, one must not request a pty or should specify
         no-pty.  A quote may be included in the command by quoting it
         with a backslash.  This option might be useful to restrict cer-
         tain public keys to perform just a specific operation.  An exam-
         ple might be a key that permits remote backups but nothing else.
         Note that the client may specify TCP and/or X11 forwarding unless
         they are explicitly prohibited.  The command originally supplied
         by the client is available in the SSH_ORIGINAL_COMMAND environ-
         ment variable.  Note that this option applies to shell, command
         or subsystem execution.

यदि आपको एक से अधिक कमांड की आवश्यकता है, तो आपको मूल रूप से कुंजी के कई सेट करने की आवश्यकता है और आपको अलग-अलग कमांड देने के लिए विभिन्न कुंजियों का उपयोग करना होगा।

संपादित करें: मैंने अभी देखा, मूल कमांड SSH_ORIGINAL_COMMANDपर्यावरण चर में उपलब्ध है , इसलिए आप वास्तव में अपनी खुद की स्क्रिप्ट का उपयोग करते हुए, कुछ चालाक कर उस इनपुट को संभाल सकते हैं।


4
निर्दिष्ट आदेश SSH_ORIGINAL_COMMANDपर्यावरण चर के माध्यम से मापदंडों का उपयोग करने में सक्षम है । इस तरह से मापदंडों को उस कमांड में पारित किया जा सकता है, इसके लिए बस उस पर्यावरण चर को पार्स करने और अनुरोधित कार्य करने की आवश्यकता है।
ओलिवर

हाँ, कुछ मिनट पहले जवाब अपडेट किया जब मैंने देखा कि साथ ही।
EightBitTony

कमांड विकल्प और SSH_ORIGINAL_COMMAND के साथ सही समाधान, वास्तव में मुझे क्या चाहिए। EightBitTony और ओलिवर धन्यवाद!
andrew
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.