मुझे यकीन नहीं है कि आप अपने स्थानीय .zshrc
को दूरस्थ सर्वर में कैसे डाल सकते हैं , (यह स्थायी रूप से इसे वहां संग्रहीत किए बिना है), यह मेरे लिए दूरस्थ सर्वर पर अपने लॉगिन शेल को बदलने के लिए काम करता है।
चूंकि यह एक साझा खाता है, मैं zsh
केवल इस पद्धति के साथ अपने लिए उपयोग कर सकता हूं।
इसे ~/.ssh/config
अपनी स्थानीय मशीन में अपनी फ़ाइल में जोड़ें ।
Host yourServer
HostName <IP, FQDN or DNS resolvable name>
IdentityFile ~/.ssh/<your keyfile>
RemoteCommand zsh -l
RequestTTY force
User <yourUsername>
नीचे की तरह, जो आप देख रहे हैं, उसे पूरा करने के लिए हैकिंग तरीका हो सकता है।
चेतावनी यह कोई गारंटी के साथ आता है और 'बुद्धिमान' नहीं दिखता है, हालांकि मैंने सर्वर के लिए अपनी स्थानीय फ़ाइल डालने और इसे उपयोग करने के लिए लॉगिन शेल में स्रोत बनाने में कामयाब रहा।
Host someHost
HostName someIP
IdentityFile ~/.ssh/somekey.pem
RemoteCommand zsh -l -c 'sleep 1; source /tmp/somefile; zsh'
PermitLocalCommand yes
LocalCommand bash -c 'sftp %r@%h <<< "put /tmp/somefile /tmp/somefile"'
RequestTTY force
User someUser
यह काम किस प्रकार करता है?
RemoteCommand
यह परिभाषित करता है कि रिमोट पर चलने की क्या आवश्यकता है।
LocalCommand
परिभाषित करता है कि स्थानीय पर चलाने की क्या आवश्यकता है, जो आपकी स्थानीय फ़ाइल को दूरस्थ सर्वर पर कॉपी करने के लिए उपयोग किया जाता है। यहाँ पकड़ है, यह दूरस्थ मेजबान के 'सफल' कनेक्शन के बाद ही होता है।
अर्थ:
- आपका रिमोट से कनेक्शन खुला और जीवित होना चाहिए
- आपके दूरस्थ शेल में अभी तक फ़ाइल नहीं है, इसलिए इसे तब तक इंतजार करना होगा जब तक कि फ़ाइल वहां न हो, इरगो
sleep
- आपका स्थानीय उपयोग
sftp
आपकी फ़ाइल को दूरस्थ सर्वर में रखने के लिए करता है, दूरस्थ सर्वर sleep
आपकी स्क्रिप्ट से जागता है और स्रोत बनाता है।
यह सुपर हैकिश है, मैं जानना चाहूंगा कि क्या कोई बेहतर तरीका है, भी।
अपडेट: इसका उपयोग 'लंबे' सोने के समय के बजाय किया जा सकता है:
RemoteCommand zsh -l -c 'while [[ ! -f /tmp/somefile ]]; do sleep 0.05; done; source /tmp/somefile; zsh'
/etc/shells
शेल को चयन करने योग्य होने के लिए बाइनरी के लिए पथ होना चाहिए।