আমার সার্ভার এ-তে একটি ফাইল রয়েছে (যা কোনও NAT এর পিছনে রয়েছে তাই সরাসরি ঠিকানাযোগ্য নয়)। রুটটিতে সীমাবদ্ধ ডিরেক্টরিতে ফাইলটি সার্ভার বিতে অনুলিপি করা দরকার। Sudo সুবিধাগুলি সহ আমার সার্ভার বিতে একটি অ্যাকাউন্ট রয়েছে। Scp কমান্ডের সিনট্যাক্স কী?
আমার সার্ভার এ-তে একটি ফাইল রয়েছে (যা কোনও NAT এর পিছনে রয়েছে তাই সরাসরি ঠিকানাযোগ্য নয়)। রুটটিতে সীমাবদ্ধ ডিরেক্টরিতে ফাইলটি সার্ভার বিতে অনুলিপি করা দরকার। 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আমার জন্য কাজ করে না - অভিযোগ করে "কোন টিটি উপস্থিত নেই এবং কোন জিজ্ঞাসা কর্মসূচি নির্দিষ্ট করা হয়নি"?
serverbকরতে হবে বা আপনাকে ssh serverbআলাদাভাবে আলাদা করতে হবে , তারপরে sudo ...লগ ইন করার পরে চালানো উচিত
এসসিপি সহ, আপনাকে দুটি ধাপে করতে হবে, তবে, আপনি নিচের মত আরএসসিএন দিয়ে এটি করতে পারেন:
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
এটি প্রথমে আপনার সুডোর টাইমস্ট্যাম্প আপডেট করে (প্রয়োজনে পাসওয়ার্ডের জন্য জিজ্ঞাসা করছে, যার জন্য টিটি ( ssh -t) প্রয়োজন) এবং তারপরে দূরবর্তী থেকে টারবাল তৈরি করতে এবং স্থানীয়ভাবে এটিকে বের করতে sudo ব্যবহার করে।
রেডহ্যাট 5-এ "টার" এর জন্য "xpsf -" কমান্ডের পরে "--preferences" বিকল্পগুলির প্রয়োজন।
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
আপনার যদি প্রতিবার সুডোর জন্য পাসওয়ার্ড টাইপ করতে হয় তবে আপনি এটি একটি ফাইলে সংরক্ষণ করতে পারেন:
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থাকলে আপনি তার পরিবর্তে ব্যবহার করতে পারেন ।
প্রথমত, আপনাকে এমন কোনও জায়গায় ফাইলটি অনুলিপি করতে হবে যেখানে আপনার sudo ছাড়াই লেখার অ্যাক্সেস রয়েছে, আপনি নিম্নলিখিত দুটি পদক্ষেপটি করতে পারেন।
ধাপ 1:
scp filename newserver
ধাপ ২:
ssh newserver sudo mv filename /path/to/the/destination
আরও তথ্যের জন্য scp টিউটোরিয়াল পড়ুন
current server $ sudo scp username@server:source/path/filename /tmp/
এটি উত্স থেকে / tmp / বর্তমান সার্ভারে নির্দিষ্ট ফাইলটি অনুলিপি করবে