2010-12-10 8 views
30

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

मुझे पता है कि आप DISPLAY चर (फॉरवर्डएक्स 11 के माध्यम से) या एक एसएसएच एजेंट प्रक्रिया (फॉरवर्डएजेंट के माध्यम से) को आगे बढ़ाने के लिए एसएसएच का उपयोग कर सकते हैं, इसलिए मैं सोच रहा हूं कि एसएसएच में मनमानी पर्यावरण चर की सामग्री को स्वचालित रूप से आगे बढ़ाने का कोई तरीका है या नहीं कनेक्शन। आदर्श रूप से, मैं एक .ssh/config फ़ाइल में सेट कर सकता था ताकि जब मुझे इसकी आवश्यकता हो तो यह स्वचालित रूप से चला जाएगा। कोई विचार?

उत्तर

22

आप कर सकते हैं, लेकिन सर्वर कॉन्फ़िगरेशन को बदलने की आवश्यकता है।

ssh_config(5) में sshd_config(5) और SendEnv में AcceptEnv के लिए प्रविष्टियां पढ़ें।

अद्यतन:

ssh [email protected] "FOO=foo BAR=bar doz" 

सुरक्षा, रिमोट मशीन के उपयोग के साथ किसी को भी की तुलना में टिप्पणी से पारित कर दिया वातावरण चर को देखने के लिए सक्षम हो जाएगा के बारे में:

तुम भी उन्हें कमांड लाइन पर पारित कर सकते हैं किसी भी चल रही प्रक्रिया के लिए।

आप उस जानकारी को गुप्त रखने के लिए चाहते हैं, तो यह stdin के माध्यम से इसे पारित करने के लिए बेहतर है:

cat secret_info | ssh [email protected] remote_program 
+1

मुझे याद आया कि मुझे थोड़ी देर लग गई थी कि मुझे इसकी कॉन्फ़िगरेशन फ़ाइलों को फिर से पढ़ने के लिए एसएसडीडी को पुनरारंभ करना पड़ा था, लेकिन एक बार मैंने ऐसा किया, 'AcceptEnv' और' SendEnv' एक आकर्षण की तरह काम करता था। ठीक वही जो मेरे द्वारा खोजा जा रहा था! धन्यवाद! – singingwolfboy

11

आप ($DISPLAY के अलावा जो आप अपने Xauth जानकारी तो दूरदराज के कार्यक्रमों वास्तव में अपने प्रदर्शन से कनेक्ट कर सकते हैं के साथ -X साथ अग्रेषित कर सकते हैं) स्वचालित रूप से यह नहीं कर सकते, लेकिन आप एक "यहाँ दस्तावेज़" के साथ एक स्क्रिप्ट का उपयोग कर सकते हैं:

ssh ... <<EOF 
export FOO="$FOO" BAR="$BAR" PATH="\$HOME/bin:\$PATH" 
runRemoteCommand 
EOF 

अनचाहे चर स्थानीय रूप से विस्तारित किए जाएंगे और परिणाम दूरस्थ पक्ष में प्रेषित होंगे। तो PATH$HOME के दूरस्थ मान के साथ सेट किया जाएगा।

+0

'नहीं छोड़ा जाएगा चर विस्तार किया जाएगा locally' हिस्सा मेरा दिन बचा लिया। यह अन्य मैनुअल में समझाया नहीं गया था। धन्यवाद! – Kolyunya

संबंधित मुद्दे