मेरे पास सर्वर A पर फ़ाइल है (जो NAT के पीछे है इसलिए सीधे संबोधित नहीं की जाती है)। रूट पर प्रतिबंधित डायरेक्टरी में फाइल को सर्वर बी में कॉपी किया जाना चाहिए। मेरा सर्वर B पर sudo विशेषाधिकार के साथ खाता है। Scp कमांड के लिए सिंटैक्स क्या है?
मेरे पास सर्वर A पर फ़ाइल है (जो NAT के पीछे है इसलिए सीधे संबोधित नहीं की जाती है)। रूट पर प्रतिबंधित डायरेक्टरी में फाइल को सर्वर बी में कॉपी किया जाना चाहिए। मेरा सर्वर B पर sudo विशेषाधिकार के साथ खाता है। Scp कमांड के लिए सिंटैक्स क्या है?
जवाबों:
सबसे पहले, आपको फ़ाइल को उस स्थान पर कॉपी करने की आवश्यकता है जहां आपके पास sudo के बिना लेखन है,
scp yourfile serverb:
फिर sudo का उपयोग करके फ़ाइल को स्थानांतरित करें
ssh serverb sudo mv yourfile /path/to/the/destination
यदि आपके पास एक लिखने योग्य स्थान नहीं है, तो अपने उपयोगकर्ता के लिए लिखित अनुमति के साथ एक अस्थायी डायर बनाएं।
ssh serverb sudo mkdir tempdir && sudo chmod 777 tempdir
scp yourfile serverb:tempdir
ssh serverb mv tempdir/yourfile /path/to/the/destination
chmod 777
वह आमतौर पर करने का गलत तरीका है। विचार करें कि क्या हो सकता है अगर कोई अन्य व्यक्ति लॉग इन था और आपको पता था कि आप इस कोड को चलाने वाले हैं।
ssh sudo
मेरे लिए काम नहीं करता है - शिकायत करता है "कोई tty मौजूद है और कोई askpass कार्यक्रम निर्दिष्ट नहीं है"?
serverb
या आप ssh serverb
अलग करने की जरूरत है , तो sudo ...
लॉग इन करने के बाद।
एससीपी के साथ, आपको दो चरणों में करना होगा, हालांकि, आप इसे निम्नानुसार rsync के साथ कर सकते हैं:
rsync --rsync-path="sudo rsync" <LOCALFILE> USER@SERVER2:/root
नोट: इसके लिए NOPASSWD
sudo कॉन्फ़िगरेशन की आवश्यकता है। यदि आपको sudo के लिए पासवर्ड डालना है, तो दो चरण की आवश्यकता है।
निर्देशिका की प्रतिलिपि बनाने के लिए, आपको -r
पैरामीटर जोड़ना होगा । और -v
वर्बोज़ आउटपुट के लिए।
क्रेडेंशियल्स के साथ उपरोक्त विधि का उपयोग करने के लिए, आपको उन्हें अपनी ~/.ssh/config
फ़ाइल में जोड़ना होगा , जैसे
Host SERVER2
HostName server2.example.colm
User USER
#IdentityFile ~/.ssh/custom_key.pem
sudo: sorry, you must have a tty to run sudo
द्वारा तय की गई त्रुटि -e "ssh -tt"
।
-e "ssh -tt"
मेरे साथ protocol version mismatch -- is your shell clean?
। कैसे ठीक करने के लिए कोई संकेत?
आप इसके आसपास काम करने के लिए ssh और tar का उपयोग कर सकते हैं:
ssh -t host 'sudo -v'
ssh -C host 'cd /; sudo tar cf - path/to/file/or/dir' | tar xpsf - --preserve
यह पहले आपके sudo टाइमस्टैम्प को अपडेट करता है (यदि आवश्यक हो तो पासवर्ड की मांग की जाती है, जिसके लिए tty ( ssh -t
) की आवश्यकता होती है ), और फिर सुडो का उपयोग टॉर्टबॉल को दूरस्थ रूप से बनाने और स्थानीय रूप से निकालने के लिए करता है।
RedHat 5 पर "टार" को "xpsf -" कमांड के बाद आने के लिए "--preserve" विकल्पों की आवश्यकता है।
tar: Invalid replacement string
, तो -s
इसे ठीक करने के लिए प्रतीत होता है में निकालना (यह सुनिश्चित नहीं है कि आपको s
वैसे भी क्या चाहिए )। बहुत धन्यवाद; यह कमाल का है।
tty_tickets
अक्षम करने की आवश्यकता होगी , सही?
उदाहरण के लिए, आप sudo कमांड के साथ sftp का उपयोग कर सकते हैं:
sftp -s 'sudo -u REMOTE_SUDO_USER /usr/libexec/openssh/sftp-server' REMOTE_USER@HOST
यदि आपको हर बार sudo के लिए पासवर्ड टाइप करना है, तो आप इसे एक फ़ाइल में सहेज सकते हैं:
echo "Enter password: "; read -s password; echo $password > password_file
और फिर इसे स्रोत फ़ाइल के साथ भेजें।
cat password_file source_file | ssh remote_host 'sudo -S sponge target_file'
tee
इसके बजाय आप उपयोग कर सकते हैं sponge
यदि आपके पास अधिक थरथराहट नहीं है।
सबसे पहले, आपको फ़ाइल को उस स्थान पर कॉपी करने की आवश्यकता है जहां आपके पास सुडो के बिना लिखने की पहुंच है, आप निम्न दो चरण कर सकते हैं।
चरण 1:
scp filename newserver
चरण 2:
ssh newserver sudo mv filename /path/to/the/destination
अधिक जानकारी के लिए scp ट्यूटोरियल पढ़ें
current server $ sudo scp username@server:source/path/filename /tmp/
यह विशिष्ट फ़ाइल को स्रोत से / tmp / करंट सर्वर में कॉपी करेगा