এসএসএইচ পাসওয়ার্ড পাস করে সুদো, কোনও প্রকারের দরকার নেই:
আপনি sudo একটি ইন্টারেক্টিভ পাসওয়ার্ড প্রয়োজন হয় না এবং কেবল স্টিডিন বন্ধ পাসওয়ার্ড দখল করতে suud কে একটি সিউডো-টিটি (ssh "-t" স্যুইচ ব্যবহার না করে) জোর করে ছাড়িয়ে ssh ওভার ssh ব্যবহার করতে পারেন। আপনি sudo অন "-S" স্যুইচ ব্যবহার করে এটি করেন। এটি স্টিডিনে পাসওয়ার্ডের জন্য সুডো শোনায় এবং এটি যখন একটি নতুন লাইন দেখবে তখন শুনা বন্ধ করে দেয়।
উদাহরণ 1 - সাধারণ রিমোট কমান্ড
এই উদাহরণে, আমরা একটি সাধারণ whoami
কমান্ড প্রেরণ করি :
$ ssh user@server cat \| sudo --prompt="" -S -- whoami << EOF
> <remote_sudo_password>
root
আমরা sudo কে প্রম্পট জারি না করার জন্য এবং স্ট্যান্ডিনের কাছ থেকে এর ইনপুট নেওয়ার জন্য বলছি। এটি সুডো পাসওয়ার্ডকে সম্পূর্ণ নিঃশব্দে অতিক্রম করে তোলে তাই আপনার ফিরে পাওয়া একমাত্র প্রতিক্রিয়া হ'ল আউটপুট whoami
।
এই কৌশলটি আপনাকে sudo ওভার ssh এর মাধ্যমে প্রোগ্রাম চালানোর অনুমতি দেওয়ার সুবিধা দেয় যা তাদের নিজেরাই স্টিডিন ইনপুট প্রয়োজন। এটি কারণ sudo স্টিডিনের প্রথম লাইনে পাসওয়ার্ড গ্রাস করছে, তারপরে যা কিছু প্রোগ্রাম চালায় সেটিকে স্টিডিন ধরে রাখার সুযোগ দেয়।
উদাহরণ 2 - রিমোট কমান্ড যা তার নিজস্ব স্টিডিনের প্রয়োজন
নিম্নলিখিত উদাহরণে, দূরবর্তী কমান্ড "ক্যাট" সুডোর মাধ্যমে কার্যকর করা হয় এবং আমরা স্টিমিনের মাধ্যমে দূরবর্তী বিড়ালটি প্রদর্শনের জন্য কিছু অতিরিক্ত লাইন সরবরাহ করছি।
$ ssh user@server cat \| sudo --prompt="" -S -- "cat" << EOF
> <remote_sudo_password>
> Extra line1
> Extra line2
> EOF
Extra line1
Extra line2
আউটপুটটি দেখায় যে <remote_sudo_password>
লাইনটি sudo দ্বারা গ্রাস করা হচ্ছে এবং দূরবর্তীভাবে কার্যকর করা বিড়ালটি তখন অতিরিক্ত লাইনগুলি প্রদর্শন করছে।
আপনি যদি কমান্ড লাইনটি ব্যবহার না করে কোনও সুবিধাযুক্ত কমান্ডে পাসওয়ার্ড দেওয়ার জন্য ssh ব্যবহার করতে চান তবে এটি কোথায় উপকারী হবে তার একটি উদাহরণ। বলুন, আপনি যদি ssh- র মাধ্যমে কোনও রিমোট এনক্রিপ্ট করা ধারক মাউন্ট করতে চান।
উদাহরণ 3 - একটি দূরবর্তী Verarypt কনটেইনার মাউন্ট করা
এই উদাহরণ স্ক্রিপ্টে, আমরা কোনও অতিরিক্ত প্রম্পটিং পাঠ্য ছাড়াই দূরবর্তীভাবে সুডোর মাধ্যমে ভেরাক্রিপ কনটেইনারটি মাউন্ট করছি:
#!/bin/sh
ssh user@server cat \| sudo --prompt="" -S -- "veracrypt --non-interactive --stdin --keyfiles=/path/to/test.key /path/to/test.img /mnt/mountpoint" << EOF
SudoPassword
VeraCryptContainerPassword
EOF
এটি লক্ষ্য করা উচিত যে উপরের সমস্ত কমান্ড-লাইনের উদাহরণগুলিতে (স্ক্রিপ্ট ব্যতীত অন্য সমস্ত কিছু) << EOF
কমান্ড লাইনে নির্মাণের ফলে পাসওয়ার্ড সহ টাইপ করা সমস্ত কিছু স্থানীয় মেশিনের .bash_history এ রেকর্ড করা হবে । অতএব এটি অত্যন্ত প্রস্তাবিত যে বাস্তব-বিশ্বের ব্যবহারের জন্য আপনি এটি পুরোপুরি স্ক্রিপ্টের মাধ্যমে ব্যবহার করুন উপরের ভেরাক্রিপ্ট উদাহরণের মতো, অথবা, যদি কমান্ড লাইনে কোনও পাসওয়ার্ড একটি ফাইলে রাখুন এবং সেই ফাইলটি এসএসএসের মাধ্যমে পুনঃনির্দেশ করুন।
উদাহরণ 1 এ - উদাহরণ 1 স্থানীয় কমান্ড-লাইন পাসওয়ার্ড ছাড়াই
প্রথম উদাহরণটি এইভাবে হয়ে উঠবে:
$ cat text_file_with_sudo_password | ssh user@server cat \| sudo --prompt="" -S -- whoami
root
উদাহরণ 2 এ - উদাহরণ 2 স্থানীয় কমান্ড-লাইন পাসওয়ার্ড ছাড়াই
এবং দ্বিতীয় উদাহরণ হয়ে উঠবে:
$ cat text_file_with_sudo_password - << EOF | ssh va1der.net cat \| sudo --prompt="" -S -- cat
> Extra line1
> Extra line2
> EOF
Extra line1
Extra line2
স্ক্রিপ্টগুলির বিষয়বস্তুগুলি আপনার ইতিহাসে শেষ না হওয়ায় আপনি যদি পুরো জিনিসটি কোনও স্ক্রিপ্টে রাখছেন তবে একটি পৃথক ফাইলে পাসওয়ার্ড স্থাপন অপ্রয়োজনীয়। এটি এখনও কার্যকর হতে পারে, আপনি যদি সেই ব্যবহারকারীদের স্ক্রিপ্টটি সম্পাদন করার জন্য পাসওয়ার্ডটি দেখতে না চান তবে তাদের অনুমতি দেওয়া উচিত।
ssh <user@server> sudo <script>
, কারণ আমি ত্রুটিটিsudo: no tty present and no askpass program specified