সুডো সহ রিমোট সার্ভারে স্কিপ করুন


65

আমার সার্ভার এ-তে একটি ফাইল রয়েছে (যা কোনও NAT এর পিছনে রয়েছে তাই সরাসরি ঠিকানাযোগ্য নয়)। রুটটিতে সীমাবদ্ধ ডিরেক্টরিতে ফাইলটি সার্ভার বিতে অনুলিপি করা দরকার। Sudo সুবিধাগুলি সহ আমার সার্ভার বিতে একটি অ্যাকাউন্ট রয়েছে। Scp কমান্ডের সিনট্যাক্স কী?



আমি এটির সদৃশ হিসাবে পুরানো প্রশ্নটি বন্ধ করে দিয়েছি, যেহেতু প্রশ্নকারী প্রশ্নকর্তা কখনই সেই প্রশ্নের মালিকানা ফিরে পান না।
কোয়াকোট কোয়েসোট

আমি অন্য পোস্টে জবাব দিয়েছি যে আপনি কীভাবে scp কাস্টমাইজ করতে পারবেন আপনার জন্য সরাসরি sudo করতে। এটি WinSCP এর মতোই similar
YoYo

উত্তর:


58

প্রথমত, আপনাকে এমন কোনও জায়গায় ফাইলটি অনুলিপি করতে হবে যেখানে আপনার 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

7
/ tmp অস্থায়ী ফাইলগুলি লেখার জন্য একটি ভাল জায়গা যা (সাধারণত) সমস্ত ব্যবহারকারীদের অ্যাক্সেস থাকে।
ডগ হ্যারিস

3
@ ডগ: দ্রষ্টব্য: / টিএমপি র‌্যামে বা / মাউন্টিং পয়েন্টে হতে পারে এবং বড় ফাইল হোস্ট করার জন্য যথেষ্ট বড় নয়।
রাভাচল

2
আপনি যা অর্জন করার চেষ্টা করছেন তা chmod 777হ'ল এটি করার ভুল উপায়। অন্য কারও লগ ইন করা থাকলে এবং আপনি এই কোডটি চালাচ্ছেন বলে জানলে কী ঘটতে পারে তা বিবেচনা করুন।
ট্রিপলি

1
ssh sudoআমার জন্য কাজ করে না - অভিযোগ করে "কোন টিটি উপস্থিত নেই এবং কোন জিজ্ঞাসা কর্মসূচি নির্দিষ্ট করা হয়নি"?
রস প্রেসার

1
@ রসপ্রেসার দেরিতে জবাবের জন্য দুঃখিত, তবে আপনাকে হয় পাসওয়ার্ডহীন সুডো সেটআপ serverbকরতে হবে বা আপনাকে ssh serverbআলাদাভাবে আলাদা করতে হবে , তারপরে sudo ...লগ ইন করার পরে চালানো উচিত
জোহান

49

এসসিপি সহ, আপনাকে দুটি ধাপে করতে হবে, তবে, আপনি নিচের মত আরএসসিএন দিয়ে এটি করতে পারেন:

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

5
এটি করা এখন পর্যন্ত সবচেয়ে সহজ উপায়।
ম্যাট হোয়াইট

ত্রুটি sudo: sorry, you must have a tty to run sudoদ্বারা স্থির -e "ssh -tt"
এমজে 41

@ এমজে 41 দিয়ে -e "ssh -tt", আমি পেয়েছি protocol version mismatch -- is your shell clean?। এটি ঠিক করার জন্য কোনও ইঙ্গিত?
কুড়াল

19

আপনি এটিকে কাজে লাগাতে 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অক্ষম করা প্রয়োজন, সঠিক?
জ্যাকব বুডিন

@ জ্যাকববুদিন হ্যাঁ
নীল রঙের

4

আপনি sudo কমান্ড সহ sftp ব্যবহার করতে পারেন, উদাহরণস্বরূপ:

sftp -s 'sudo -u REMOTE_SUDO_USER /usr/libexec/openssh/sftp-server' REMOTE_USER@HOST

এটি এবং আরএসএনসি পদ্ধতিগুলি এক ধাপে এটি করার সম্ভবত সবচেয়ে সরাসরি উপায়। দুর্ভাগ্যজনক যে পিপড়ায় থাকা স্কেপ টাস্ক এটি সমর্থন করে না। আপনি এটি এসএফটিপি ব্যবহারের জন্য সেট করতে পারেন তবে আপনি দূরবর্তী সাব-প্রোগ্রামটি পরিবর্তন করতে পারবেন না। নোট করুন যে সার্ভারের ধরণের উপর নির্ভর করে সাব-প্রোগ্রামটি ভিন্ন হবে (সোলারিস আলাদা হতে পারে)।
YoYo

0

আপনার যদি প্রতিবার সুডোর জন্য পাসওয়ার্ড টাইপ করতে হয় তবে আপনি এটি একটি ফাইলে সংরক্ষণ করতে পারেন:

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থাকলে আপনি তার পরিবর্তে ব্যবহার করতে পারেন ।


0

প্রথমত, আপনাকে এমন কোনও জায়গায় ফাইলটি অনুলিপি করতে হবে যেখানে আপনার sudo ছাড়াই লেখার অ্যাক্সেস রয়েছে, আপনি নিম্নলিখিত দুটি পদক্ষেপটি করতে পারেন।

ধাপ 1: scp filename newserver

ধাপ ২: ssh newserver sudo mv filename /path/to/the/destination

আরও তথ্যের জন্য scp টিউটোরিয়াল পড়ুন


-1
current server $ sudo scp username@server:source/path/filename /tmp/

এটি উত্স থেকে / tmp / বর্তমান সার্ভারে নির্দিষ্ট ফাইলটি অনুলিপি করবে


এটি সুদকে স্থানীয়ভাবে কার্যকর করবে, আপনাকে দূর থেকে কোনও উন্নত সুযোগ সুবিধা প্রদান করবে না।
YoYo

এটি ঠিক কাজ করবে না, যেমনটি ইউয়ো বলেছেন।
মণি

scp সম্ভবত সংযুক্ত হবে না, কারণ এটি মূলের কী পড়বে
পিয়েরে-অলিভিয়ার ভারেস
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.