डिफ़ॉल्ट निर्देशिका बदलें जब मैं सर्वर के लिए SSH


41

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

99% उस समय जब मैं अपने सर्वर में लॉग इन कर रहा हूं, यह एक विशिष्ट निर्देशिका में फ़ाइलों तक पहुंचने के लिए है:

/var/www/websites

क्या कोई कॉन्फ़िगर फ़ाइल है जिसे मैं संपादित कर सकता हूं जो मुझे लॉगिन करते समय सीधे इस निर्देशिका में डाल देगा।

जवाबों:


60

इसे प्राप्त करने के दो तरीके हैं:

  • सर्वर / var / www / वेबसाइटों पर अपने होमडायरेक्टरी को बदलें (यह वास्तव में एक अच्छा विचार नहीं है)
  • cd /var/www/websitesअपने अंत में जोड़ें .bashrc। मैं अपनी कठपुतली पर इसका उपयोग करता हूं क्योंकि मैं हमेशा अपने होमडायर के बजाय / etc / कठपुतली / वातावरण / dkaarsemaker में रहना चाहता हूं :-)

धन्यवाद। मैंने bash.bashrc फ़ाइल को संपादित किया जो / etc निर्देशिका में स्थित थी। एक इलाज काम किया :)
बॉब फ्लेमिंग

7
ओह, मैं ऐसा नहीं करूंगा, क्योंकि यह सभी उपयोगकर्ताओं को प्रभावित करता है। बेहतर /home/yourlogin/.bashrc संपादित करने के लिए
डेनिस Kaarsemaker

5
आप .profileइसके बजाय .bashrcइसे अपने अंदर रखना चाह सकते हैं , लेकिन यह आपके उपयोग के मामले पर निर्भर करता है। .profileकेवल संवादात्मक लॉगिन के लिए निष्पादित किया जाता है (जैसे शेल) लेकिन .bashrcगैर-सक्रिय लॉगिन (जैसे scp, rsync, आदि) के लिए भी निष्पादित किया जाता है। इसके अलावा, एंटीफाइल को उन गोले द्वारा कॉल किए जाने की अधिक संभावना है जो बैश नहीं होते हैं (जैसे zsh)।
फोर्ड

.bashrc को तब निष्पादित किया जाता है जब आप अपने बैश को ताज़ा करने के लिए "एग्ज़ॅम बैश" करते हैं। विशेष उपयोग के मामले के लिए bashrc बदलना (यहाँ ssh लॉगिन) उपयोगी नहीं है।
user3123159

13

यदि आप SSH लॉगिन के लिए कुंजियों का उपयोग करते हैं तो आप अपने रिमोट सर्वर पर command=एक कुंजी से पहले prepending द्वारा पथ बदल सकते हैं । उदाहरण:~/.ssh/authorized_keys

command="cd /var/www/websites ; /bin/bash -l" ssh-rsa AAA.....rest of the key

एक ही उपयोगकर्ता के लिए कई कुंजी उत्पन्न करना और उनका उपयोग करना ठीक है। सर्वर पर एक कुंजी में कमांड हो सकती है, दूसरा नहीं हो सकता है - इस तरह आप लॉगिन समय पर अपेक्षित व्यवहार का चयन करते हैं। आप इसे स्थानीय रूप से लपेट सकते हैं ~/.ssh/config:

Host websites-my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key1>  #on the server key with "command"
    User webmaster

Host my-host
    HostName <realhostname>
    IdentityFile ~/.ssh/<key2>  #on the server key without command
    User webmaster

यह क्या होगा:

local$ ssh websites-my-host
webmaster@realhostname:/var/www/websites$ _

या:

local$ ssh my-host
webmaster@realhostname:~$ _

3
मैं इस प्रश्न को स्वीकृत के ऊपर पसंद करता हूं। यह कई उपयोगकर्ताओं को सर्वर पर एक ही उपयोगकर्ता का उपयोग करने की अनुमति देता है और तब भी अनुकूलित करने में सक्षम होता है जब आप व्यक्तिगत रूप से लॉग इन करते हैं। बहुत अधिक लचीला और दूसरे के रूप में सही।
परीक्षार्थी

~ / .Ssh / अधिकृत_keys को जोड़ने के बाद से आपको यहाँ वास्तव में सावधान रहना होगा। ss जैसे rsync, scp पर आधारित अन्य उपकरण प्रभावित करते हैं। ये कमांड बस हैंग हो जाएंगे
Warunapww

आप उपयोग कर सकते हैं $SSH_ORIGINAL_COMMANDके बजाय /bin/bash -lउपकरण काम करने के लिए (मेरे मामले, एचजी में) प्राप्त करने के लिए। या $SHELLअगर आप कोड़े मारना नहीं चाहते हैं। यह सुनिश्चित नहीं है कि दोनों काम करने के लिए उपकरण और मानव लॉगिन कैसे प्राप्त करें।
एमपीएन

6

डिफ़ॉल्ट रूप से Openssh sshd क्लाइंट से इन पर्यावरण चर को स्वीकार करता है:

AcceptEnv LANG LC_*

आप इसका उपयोग क्लाइंट के स्थानीय वातावरण से सर्वर पर इस तरह से मान भेजने के लिए कर सकते हैं:

LC_CDPATH=/var/www/websites ssh -o SendEnv=LC_CDPATH user@server

आप SendEnv निर्देश को ~ / .shsh / config में रख सकते हैं ताकि आपको इसे कमांड लाइन पर शामिल न करना पड़े।

यदि आप अपने ~ / .profile में निम्नलिखित स्थान रखते हैं (सभी इंटरैक्टिव उपयोगों को प्रभावित करने के लिए केवल। लॉगाइल का उपयोग करें .bashrc को प्रभावित करने के लिए):

if [ "$LC_CDPATH" -a -d "$LC_CDPATH" ]; then
  cd "$LC_CDPATH";
fi

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


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