कैसे ~ / .ssh / config से ssh_config में सेट SendEnv चर को अक्षम करने के लिए


30

मुझे नहीं लगा कि कहीं भी मैं सोच रहा हूं कि मैं इस तरह के मुद्दे को मार रहा हूं।

Red Hat और Debian पर डिफ़ॉल्ट रूप से ssh के पास कम से कम ssh_config है जिसमें SendEnv विकल्प के साथ एलसी * और लैंग चर को दूरस्थ सत्र में पास किया जाता है। यदि कोई बदलने के लिए रूट नहीं है / etc / ssh / ssh_config, तो वह उस व्यवहार को कैसे अक्षम कर सकता है? SendEnv विकल्प जमा हो रहा है और मैं इसे रीसेट करने का कोई तरीका नहीं देख सकता।

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


यह आपके प्रश्न का उत्तर नहीं है, लेकिन क्या आप अपनी परीक्षण मशीनों पर envलिपटी स्क्रिप्ट के माध्यम से या स्क्रिप्ट और कार्यक्रमों को लागू करके अपनी समस्या को हल कर सकते हैं ?
स्कॉट

2
हाँ, वर्कअराउड संभव है लेकिन असुविधाजनक है
akostadinov

जवाबों:


18

तुम अकेले नहीं हो । जैसा कि ssh_config(5)आप में प्रलेखित परेशान नहीं कर सकता SendEnv, क्योंकि

एकाधिक पर्यावरण चर कई SendEnv निर्देशों में फैले [...] हो सकते हैं।

यदि आपके पास परीक्षण मशीनों पर रूट है, तो आप AcceptEnvक्लाइंट द्वारा भेजे गए चर को स्वीकार नहीं करने के लिए बदल सकते हैं , हालांकि।


4
बकवास, मैं केवल -F को कमांड लाइन पर देख सकता हूं लेकिन यह वास्तव में उपयोग करने के लिए बहुत असुविधाजनक है। देखें bugzilla.mindrot.org/show_bug.cgi?id=1285
akostadinov

5

ऐसा नहीं किया जा सकता ~/.ssh/configक्योंकि इसमें SendEnvओवरराइड नहीं किया जा सकता।

उपनाम का उपयोग स्क्रिप्ट के लिए काम नहीं करेगा जो ssh कहते हैं।

एक विकल्प एक फ़ंक्शन निर्यात करना है। जैसे ~/.bashrc:

function ssh() {
    LANG="en_US.UTF-8" \
    LC_ADDRESS="$LANG" \
    LC_IDENTIFICATION="$LANG" \
    LC_MEASUREMENT="$LANG" \
    LC_MONETARY="$LANG" \
    LC_NAME="$LANG" \
    LC_NUMERIC="$LANG" \
    LC_PAPER="$LANG" \
    LC_TELEPHONE="$LANG" \
    LC_TIME="$LANG" \
    LC_ALL="$LANG" \
    /usr/bin/ssh $@
}
export -f ssh

1

विकल्प है SetEnv, किसी को LANGभेजने से पहले कुछ विशिष्ट मूल्य के लिए मजबूर कर सकते हैं ।

साथ ही मैन पेज कहता है कि

पूर्वनिर्धारित पैटर्न के साथ SendEnv चर नामों को पहले से सेट करना संभव है -

लेकिन मैंने यह काम करने का प्रबंधन नहीं किया।


Bugzilla.mindrot.org/show_bug.cgi?id=1285 देखें , शायद यही बताएगा कि -दृष्टिकोण क्यों काम नहीं किया। हालांकि दूरस्थ SANG और ssh विन्यास में अन्य vars हार्डकोड करने के लिए अच्छा सुझाव है। चीजों को अधिक अनुमानित बनाता है। शायद SetEnvएक नया निर्देश है क्योंकि इसके बारे में किसी और ने सुझाव नहीं दिया है। SetEnv LANG=en_US.UTF-8
अकोस्टाडिनोव

0

यदि आप bash का उपयोग कर रहे हैं, तो आप अन्य सर्वरों में LANG को निष्क्रिय करने के लिए एक उपनाम ssh = 'LANG = कमांड ssh' सेट कर सकते हैं।


0

su - youruserजब आप ssh पर लॉग इन हो तब उपयोग कर सकते हैं । यह उपयोगकर्ता के लिए पर्यावरण को फिर से संगठित करेगा।

वास्तव में आप एक नए सत्र को एक नए परिवेश के साथ आरंभ करते हैं।


सवाल अपने आप में पर्यावरणीय समझ रखने का है। और btw su हमेशा स्थापित नहीं है। और आपको su के साथ अपना पासवर्ड टाइप करना होगा। उपयोगी नहीं। वहाँ आसान workarounds हैं।
akostadinov

0

के अनुसार man ssh:

 -F configfile
         Specifies an alternative per-user configuration file.  If a con-
         figuration file is given on the command line, the system-wide
         configuration file (/etc/ssh/ssh_config) will be ignored.  The
         default for the per-user configuration file is ~/.ssh/config.

इसलिए, आप कमांड लाइन पर स्पष्ट रूप से डिफ़ॉल्ट (डिफ़ॉल्ट) कॉन्फ़िगरेशन फ़ाइल निर्दिष्ट करके अनुपालन/etc/ssh/ssh_config कर सकते हैं ( ~/.ssh/configखाली होने के लिए ठीक है:

$ touch ~/.ssh/config
$ ssh -F ~/.ssh/config your_user@your_host

आप इसके लिए एक उपनाम बना सकते हैं ~/.bashrc:

alias ssh="ssh -F ~/.ssh/config"

बैश शेल को पुनरारंभ करें, तो आप बस इस तरह से ssh कर सकते हैं:

$ ssh your_user@your_host

ऊपर मेरी टिप्पणी देखें। if one supplies on command line -F, then the system wide config is ignored according to man pageसे bugzilla.mindrot.org/show_bug.cgi?id=1285 ; यह एक विकल्प है, लेकिन वास्तव में वांछित विशेषता नहीं है।
akostadinov
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.