SSH के बराबर .profile / .bashrc


14

मैं किसी भी सर्वर पर अपने सत्र के अंदर कुछ उपनामों को स्वचालित रूप से परिभाषित करने का एक तरीका ढूंढ रहा हूं। मैं उन्हें .bashrcसर्वर पर फाइलों में नहीं डाल सकता क्योंकि मेरे द्वारा लॉग इन किए गए उपयोगकर्ता खाते अन्य लोगों द्वारा साझा किए जाते हैं और इसके अलावा उनमें से दर्जनों हैं और हर मशीन पर एक स्क्रिप्ट बनाए रखना दर्दनाक होगा। मुझे पता है कि मैं expectस्वचालित रूप से उपनाम टाइप करने के लिए उपयोग कर सकता हूं, लेकिन मैं सोच रहा था कि क्या ओपनएसएसएच में कुछ भी अंतर्निहित है जो इसे प्राप्त करने के लिए गर्भ धारण किया जा सकता है?

जवाबों:


7

उम्मीद में ऐसा करने में कुछ भी गलत नहीं है। दूसरा तरीका जो मैंने किया है वह बहुत गंदा है, एक स्क्रिप्ट के साथ, पहले जिस प्रोफाइल को आप चलाना चाहते हैं, उसे स्कैन करें, उसके बाद ssh, उसे रन करें और कनेक्ट रहें।

इसलिए, सभी प्रोफ़ाइल सेटिंग्स को एक स्थानीय फ़ाइल में रखें .<local username>-<hostname>-init.sh, और दूरस्थ होस्ट में प्रवेश करने के लिए नीचे दी गई स्क्रिप्ट को चलाएं।

#!/bin/sh
[ $# -eq 0 ] && { echo "syntax: $0 <host> [<ssh-option>...]" 1>&2 ; exit 1 ; }
host=$1 ; shift    # use any remaining args as ssh options
initfile=".$USER-`hostname`-init.sh"
scp -q ~/.ssh-init.sh "$host:/var/tmp/$initfile"
ssh -t "$@" $host "bash --rcfile /var/tmp/$initfile"

मुझे यह पसंद है क्योंकि इसे सर्वर पर किसी विशेष कॉन्फ़िगरेशन की आवश्यकता नहीं है, अच्छा है!
रेमन

4

आप अपना कॉन्फ़िगरेशन डाल सकते हैं .bashrcऔर लॉग इन करते समय केवल उन्हें निष्पादित कर सकते हैं। यह संभव करने के लिए आप ssh के माध्यम से एक पर्यावरण चर पारित कर सकते हैं।

.bashrc संशोधनों

# common stuff
if [ -n "$IAMTHEGREATEST" ]; then
  # my personal cool stuff
fi;
# other global stuff

sshd_config संशोधनों:

AcceptEnv ... IAMTHEGREATEST

.ssh/config संशोधन (ग्राहक पक्ष):

Host ...
  SendEnv IAMTHEGREATEST

.bashrc संशोधन (ग्राहक पक्ष):

alias ssh='IAMTHEGREATEST="forsure" ssh'

(अप्राप्त, लेकिन करना चाहिए)


कैसे ओपी लॉग में किसी भी सर्वर पर स्वचालित रूप से चीजों को स्थापित करने के उद्देश्य को पूरा करता है?
Womble

ऐसा नहीं होता। यह "उपयोगकर्ता खातों को लॉग इन करता है जो अन्य लोगों द्वारा साझा किए जाते हैं" सवाल का हिस्सा है
क्रिस्सी

यह लगभग वही है जो मैं करता हूं, लेकिन एक अंतर के साथ - बाहर से उस पर्यावरण चर को स्वीकार करने के बजाय, मैंने इसे एसएसएच कुंजी में ही सेट किया। इसका मतलब यह है कि .sh / अधिकृत_कीप में पर्यावरण से शुरू होने वाली लाइनें शामिल हैं = "IAMTHEGREATEST = forsure" ssh-dss ...
ब्रॉन गोंडवाना

3

से ssh (1) आदमी पेज, यदि आप एक फ़ाइल बनाने ~ / .ssh / आर सी है, यह इससे पहले कि उपयोगकर्ता के प्रवेश खोल, मार डाला जाता है जिससे में प्रवेश से पहले 'पूर्व सेटअप' कार्य करने के लिए मौका देने निष्पादित किया जाएगा .. उदाहरण दिया गया है कि लॉग इन करने से पहले नेटवर्क शेयरों को माउंट करें।

यदि आप व्यक्तिगत ~ / .sh / rc फ़ाइलों का उपयोग नहीं करना चाहते हैं , तो आप / etc / ssh / sshrc के साथ भी ऐसा कर सकते हैं । आपके विशेष उपयोगकर्ता नाम या कुछ पहचान करने की विधि की जाँच करने के लिए एक त्वरित परीक्षण अन्य लोगों को भी सूचित कर सकता है जो इस जगह पर था।

/ etc / ssh / sshrc केवल तभी सॉर्ट किया जाता है यदि ~ / .sh / rc मौजूद नहीं है, इसलिए आप प्रभावी रूप से जटिलता की दो परतों को प्राप्त कर सकते हैं।


ding ding ding - हमारे पास एक विजेता है!
अगली सूचना तक रोक दिया गया।

याद किया कि एक! जबकि यह आकर्षक लग रहा है, यह अभी भी प्रत्येक सर्वर को व्यक्तिगत रूप से सर्वर-साइड दाईं ओर स्थापित करने की आवश्यकता होगी?
रेमन

हाँ, सर्वर साइड, लेकिन आपको केवल एक बार एक फ़ाइल को स्कैन करना होगा। लॉगिन पर तुरंत संसाधित होने के लिए आदेशों की एक धारा भेजने के लिए वास्तव में एक आसान तरीका नहीं है। {मुस्कराहट} मुझे थोड़ा दे दो, शायद कुछ लिखूं ... {आज नहीं!}
lornix

2

उपनामों को शेल द्वारा परिभाषित और व्याख्या किया जाता है।

दुर्भाग्य से sshदूरस्थ शेल में उन्हें पास करने का कोई तरीका नहीं है ।

आप sshक्लाइंट साइड पर एक रैपर लिख सकते हैं जो रिमोट साइड पर एक अच्छा वातावरण सेट करता है, लेकिन यह सुंदर नहीं होगा।


0

यदि संभव हो तो, मैं एक छोटी सी स्क्रिप्ट को संग्रहीत करूंगा जो एक सर्वर पर उपलब्ध हर चीज को इनिशियलाइज़ / डिफाइन करे या हर जगह से सुलभ हो और प्रत्येक सर्वर में लॉगिन करने के बाद इसे निष्पादित करें।


0

एक संभावित समाधान यह होगा कि आप अपनी स्क्रिप्ट को एक वेबसर्वर पर सेट करें जो अन्य सभी सर्वरों तक पहुंच सकता है।

तब प्रत्येक सर्वर को कुछ करने के लिए एक छोटी सी स्क्रिप्ट की आवश्यकता होनी चाहिए:

wget http://myserver.com/myawesomescript.sh
chmod +x myawesomescript.sh
./myawesomescript.sh

इस तरह से आपको केवल इसे एक जगह अपडेट करना होगा।


-3

.Ssh / config देखें

यहाँ एक उदाहरण है https://lookherefirst.wordpress.com/2007/12/17/a-simple-ssh-config-file/


कृपया इस बारे में अधिक जानकारी प्रदान करें कि आपको क्यों लगता है कि इससे मदद मिलेगी।
Zoredache

हम वास्तव में पसंद करते हैं कि उत्तर में सामग्री न होने के संकेत होते हैं। जब भी यह सैद्धांतिक रूप से प्रश्न का उत्तर दे सकता है, तो यहां उत्तर के आवश्यक भागों को शामिल करना और संदर्भ के लिए लिंक प्रदान करना बेहतर होगा
15:95 बजे user9517
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.