जब मैं SSH CentOS सर्वर में SSH के लिए डिफ़ॉल्ट पथ परिवर्तित करता हूँ?


12

मेरे पास एक सेंटोस 5.7 वेब सर्वर है, और मैं एसएसएच का उपयोग करते समय कनेक्ट होने वाली डिफ़ॉल्ट जगह को बदलना चाहता हूं।

वर्तमान में मैं भूमि में हूँ /home/username, और मैं /homeइसके स्थान पर उतरना चाहता हूँ ।

मैं रूट के रूप में चला गया और जोड़ा PermitUserEnvironment yesगया है /etc/.ssh/sshd_config- और जैसा कि मैंने इसे समझा है, तब sshएक environmentफ़ाइल के लिए उपयोगकर्ता के स्वयं के फ़ोल्डर को स्वीप करता है । मुझे इस बारे में निश्चित नहीं है कि मैं इस पर्यावरण फाइल में क्या जोड़ रहा हूं, जैसा export path=$PATH:$HOMEकि यहां काम नहीं कर रहा है, या तो यहां या मेरे .ashrc या .bash_profile फाइलों में (जो मुझे लगता है कि इससे कोई फर्क नहीं पड़ेगा। वैसे भी SSH कनेक्शन एक गैर-संवादात्मक खोल है?)।

अग्रिम में धन्यवाद।

जवाबों:


14

यदि आप प्रमाणीकरण के लिए PAM का उपयोग कर रहे हैं, जो संभवतः सबसे अधिक संभावना है। जड़ सिर के रूप में /etc/passwd

वहां आपको अपना उपयोगकर्ता नाम और पथ देखना चाहिए! इसे वहां बदलें और आप घर मुक्त हैं!

संपादित करें - क्षमा करें, यह सिर्फ मेरे लिए हुआ है कि आप अपने होम फोल्डर को बदलना नहीं चाहते हैं। उस मामले में, बस जोड़ें:

cd /home

अपनी .bashrcफ़ाइल के नीचे करने के लिए !


4
गलतियों को रोकने के लिए usermodलिखने वाले उपयोगकर्ता के विषय में कुछ भी बदलते समय उपयोग करना बेहतर होता है :। /etc/passwdusermod -d /home user
laebshade

1
उस साइड कमेंट .bashrcने मुझे फेसपालम बना दिया। यह इतना सरल और स्पष्ट है, काश मैंने इसके बारे में सोचा होता! बहुत बढ़िया। कुडोस!
cwallenpoole

4

याद रखने वाली बात यह है कि ~/.ssh/environmentशेल या sshकमांड को स्पॉन्सर करने से पहले पढ़ा जाता है, इसलिए (उदाहरण के लिए) न तो निर्यात होता है और न ही $ पाथ का कोई मतलब होता है। आप यहां केवल पर्यावरण चर (सामान्य शेल कमांड नहीं चला सकते हैं) सेट कर सकते हैं।

यदि आप एक गैर-संवादात्मक ssh शेल के लिए पर्यावरण को हड़पते हैं, तो उसे संशोधित करें, आपको गैर-संवादात्मक आदेशों के लिए वही प्राप्त करना चाहिए जो आपको चाहिए। उदाहरण के लिए:

$ ssh mylogin@myserver env

आपके सर्वर पर ssh की शुरुआत होती है। यदि आप अपनी ~/.ssh/environmentफ़ाइल इस प्रकार लिखते हैं :

PATH=/usr/local/bin

और ऊपर फिर से दौड़ें, आपको "बैश: env: कमांड नहीं मिला"। अच्छा!

अब, स्पष्ट रूप से अपने सिस्टम का निर्माण करें, जो आपके सिस्टम से आधार पर था sshd(यानी पहला "ssh .... env" कॉल), उदाहरण के लिए ( /usr/local/binसिर पर जोड़कर ):

PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin

ध्यान दें कि CWD को ~/.ssh/rc(जो कि ~/.ssh/environmentपढ़ने के बाद चलाया जाता है, लेकिन आपके sshशेल या कमांड से पहले ) सेट करने की कोशिश करना उपयोगी नहीं है क्योंकि आपका शेल आपके घर के रास्ते में शुरू होगा (डिफ़ॉल्ट रूप से)।


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