ssh_config: लॉगिन पर रिमोट मशीन पर निष्पादित होने के लिए कमांड निर्दिष्ट करें


16

यह मेरे पहले के प्रश्न का विस्तार है । मुझे ssh लॉगिन पर रिमोट मशीन पर स्थानीय रूप से संग्रहीत कमांड (यानी mount /home) चलाने की आवश्यकता है । फिलहाल, मैं उपयोग कर रहा हूं:

ssh -t mymachine.example.com 'mount /home ; /bin/bash'

जो ठीक काम करता है, लेकिन मैं सोच रहा था कि क्या मैं इस आदेश को अपने अंदर रख सकता हूं .ssh/configताकि मुझे हर बार इसे टाइप न करना पड़े। मुझे एक LocalCommandविकल्प मिला , लेकिन मुझे कोई RemoteCommandविकल्प दिखाई नहीं दे रहा है ।

यह command-to-be-executedआयात किया जाता है कि स्थानीय मशीन पर संग्रहीत किया जाए, क्योंकि इसमें एन्क्रिप्टेड डिस्क खोलने के लिए पासवर्ड होगा। यही कारण है कि मैं .profileरिमोट मशीन पर कमांड नहीं डाल सकता।

जवाबों:


6

यह सवाल सुपरयूजर पर पहले भी पूछा जा चुका है। पहला उत्तर एक दूरस्थ फ़ाइल का उपयोग करता है जो आपकी आवश्यकताओं के अनुकूल नहीं है, लेकिन एक स्थानीय उपनाम का उपयोग करने का सुझाव देने वाला दूसरा उत्तर आपकी समस्या का समाधान हो सकता है।

यह आयात किया जाता है कि कमांड-टू-एग्जीक्यूटेड को स्थानीय मशीन पर संग्रहीत किया जाए, क्योंकि इसमें एन्क्रिप्टेड डिस्क खोलने के लिए पासवर्ड होगा। यही कारण है कि मैं कमांड को रिमोट मशीन पर .profile में नहीं डाल सकता।

यह शायद सुरक्षित नहीं है। यदि मैं echoएक ssh कमांड के रूप में कमांड का उपयोग करता हूं , तो यह psरिमोट सर्वर पर दिखाता है:

martin@martin ~ % ssh dev2 "echo hello; ps aux|grep echo"

hello
root     25358  0.0  0.0   5848  1296 ?        Ss   11:27   0:00 bash -c echo hello; ps aux|grep echo
root     25362  0.0  0.0   5012   828 ?        S    11:27   0:00 grep echo

धन्यवाद, लेकिन सुपरयूजर के समाधान ~/.ssh/rcमें रिमोट मशीन पर फिर से संग्रहीत किया जाता है। psमेरी कमांड लाइन पैरामीटर (पासवर्ड सहित) दिखाने के बारे में आपकी टिप्पणी के बारे में , जो मुझे परेशान नहीं करता है। यह रिमोट मशीन है जिस पर मुझे भरोसा नहीं है। मेरी स्थानीय मशीन केवल स्वयं द्वारा उपयोग की जाती है, इसलिए किसी और के पास नहीं है ps
मार्टिन वेग्टर

6
यही कारण है कि psउत्पादन है रिमोट मशीन से। मुद्दा यह है: sshरिमोट कमांड के रूप में आपके द्वारा आपूर्ति की जाने वाली हर चीज रिमोट सर्वर पर दिखाई देगी ps
मार्टिन वॉन विटिच

1
हाँ आप सही है। इस पर ध्यान दिलाने के लिए धन्यवाद।
मार्टिन वेज्टर

1
@MartinvonWittich - प्रत्येक एसई साइट स्वतंत्र है इसलिए प्रत्येक साइट के लिए समान क्यू और ए के समान होने के लिए पूरी तरह से स्वीकार्य है क्योंकि वे उस विशेष साइट के लिए विषय पर हैं। यदि कोई Q ऊपर आता है और A अन्य SE साइट पर है, तो उसे सामग्री की प्रतिलिपि बनाने के लिए प्रोत्साहित किया जाता है। इसे उचित रूप में अनुकूलित करें ताकि यह विषय पर हो।
SLM

7

यह ओपनएसएसएच 7.6 में जोड़ा गया था:

क्लाइंट के कमांड लाइन पर देने के बजाय ssh config फाइल में कमांड निर्दिष्ट करने के लिए RemoteCommand विकल्प जोड़ें। यह कॉन्फ़िगरेशन फ़ाइल को कमांड को निर्दिष्ट करने की अनुमति देता है जिसे दूरस्थ होस्ट पर निष्पादित किया जाएगा।

रेफरी: https://www.openssh.com/txt/release-7.6



2

आप इसे निम्नानुसार रिमोट मशीन के सहयोग से कर सकते हैं।

अपने स्थानीय मशीन पर, पर्यावरण चर में चलाने के लिए कमांड सामान LC_SSH_INITIAL_COMMAND। एसएसएच आमतौर पर फॉर्म के सभी पर्यावरण चर को पास करने के लिए कॉन्फ़िगर किया गया हैLC_* , क्योंकि वे सामान्य रूप से स्थानीय सेटिंग्स हैं।

दूरस्थ मशीन पर, eval "$LC_SSH_INITIAL_COMMAND" प्रति-कुंजी सेटिंग से~/.ssh/authorized_keys या उसके माध्यम से चलाएं ~/.ssh/rc(सावधान रहें कि यदि आपके पास कोई ~/.ssh/rcफ़ाइल है, तो आपको चलाने का ध्यान रखना होगाxauth X11 अग्रेषण के लिए मैन्युअल रूप )।

authorized_keysविधि के साथ , आप इसी तरह एक कमांड चला सकते हैं जब एसएसएच सत्र बाहर निकलता है (जब तक कि शेल प्रक्रिया अचानक नहीं मार दी जाती है; आपको कम से कम एचयूपी सिग्नल को फंसाना चाहिए ताकि कनेक्शन समाप्त होने पर भी आपकी कमांड निष्पादित हो जाए)।

हालाँकि यह एक वैश्विक व्यवस्था की तरह एक फाइलसिस्टम माउंट करने के लिए एक अच्छी व्यवस्था नहीं है । यदि फाइल सिस्टम पहले से ही माउंट है (उदाहरण के लिए एक समवर्ती एसएसएच कमांड के कारण), और लॉगआउट पर अनमाउंट नहीं करने पर आपको फिर से माउंट न करने की देखभाल करने की आवश्यकता होगी। इस उपयोग के मामले के लिए मेरी सिफारिश अभी भी स्पष्ट रूप से बढ़ते करने के लिए है, फिर कुछ भी विशेष किए बिना दूरस्थ कमांड चलाएं, और अनमाउंट करें जब आप उस फाइल सिस्टम तक पहुंच नहीं चाहते हैं।


0

मैंने इसकी कोशिश नहीं की है लेकिन एक दृष्टिकोण हो सकता है

  • Subsystemरिमोट पर घोषणा करेंsshd_config जो कमांड को निष्पादित करता है जिसे आप कुछ एनवी वर्सेस पढ़कर चाहते हैं
  • रिमोट सर्वर पर ऐसी चाबियों को पास करने के SendEnvलिए स्थानीय पर उपयोग करें.ssh/config
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.