Ssh config फाइल का उपयोग करके रिमोट कमांड चलाएं


32

मैं इसे टाइप करने की आवश्यकता के बिना एक सर्वर पर ssh लॉगिन पर चलने के लिए एक कमांड सेटअप करने में सक्षम होना चाहता हूं। मूल रूप से मैं ssh config फाइल के बराबर देख रहा हूँ:

ssh host command

इतना है कि मुझे टाइप करने की आवश्यकता है:

ssh host

और कमांड चलता है।

जवाबों:


16

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

command="ssh -Tq <hostname> \"$SSH_ORIGINAL_COMMAND\"",no-port-forwarding,no-agent-forwarding,no-X11-forwarding,no-pty ssh-rsa AAAA... the rest of the key ...

अधिक विशेष रूप से पुनर्निर्देशन मेरे जिओलाइट उदाहरण के लिए है। यह किसी भी बाहरी पहुंच के लिए सीधे गिटोलिट मेजबान को उजागर किए बिना सरल बाहरी पहुंच की अनुमति देता है। अधिक जानकारी के लिए मैन पेज देखें। ( http://linux.die.net/man/8/sshd )


1
यह बहुत बढ़िया है, पता नहीं था कि आप ऐसा कर सकते हैं। +1
ब्रायन विगगिंटन

3
यदि आप अपनी अधिकृत_की फ़ाइल में कमांड डालते हैं तो यह rsync और scp जैसी चीजों को तोड़ देगा - आपको कुछ इस तरह मिलेगा: खुला टर्मिनल विफल: टर्मिनल नहीं। इसके अलावा, ध्यान रखें कि यदि कमांड विफल रहता है तो आप लॉगिन नहीं कर पाएंगे। मैंने इसे कठिन तरीके से खोजा है।
जॉन हंट

11

यदि आप OpenSSH चला रहे हैं, तो ऐसा लगता ~/.ssh/rcहै कि लॉगिन करने पर निष्पादित होता है


3
है /.ssh/rcग्राहक या सर्वर मशीन पर स्थित? डॉक्स सर्वर से लगता है, है ना?
हैवीड

1
हाँ, यह सर्वर मशीन पर होगा।
कोनक्लेयर

दुर्भाग्य से rcफ़ाइल चीजों को चलाने में विफल रहती है जैसे screen, "एक टर्मिनल से जुड़ा होना चाहिए" एक त्रुटि प्राप्त करना
davidparks21

10

आप बैश उर्फ ​​सेट कर सकते हैं।

अपनी .bashrc फ़ाइल में, डालें:

alias ssl='ssh some_host run_command'

तब आपको hostname भी नहीं लिखना होगा।

या, यदि आप कई मेजबानों के साथ ऐसा करना चाहते थे (और कई उपनाम काम नहीं करेंगे), तो एक छोटी स्क्रिप्ट का उपयोग करें:

kevin@box:~$ cat ssl.sh
#!/bin/sh
ssh $1 some_command
kevin@box:~$

2

आप इसे अपने में हल करते हैं .ssh/config file, मेजबान के लिए जहां आप एक कमांड निष्पादित करना चाहते हैं, जोड़ें

  RequestTTY yes
  RemoteCommand <some command>

<some command>आपकी आज्ञा कहाँ है यह भी स्क्रीन या tmux के साथ काम करता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.