sshpass: অ ইন্টারেক্টিভ এসএসএইচ লগইনের জন্য একটি দুর্দান্ত সরঞ্জাম - প্রোডাকশন সার্ভারে কখনই ব্যবহার করবেন না


বেশিরভাগ ক্ষেত্রে, লিনাক্স সিস্টেম অ্যাডমিনিস্ট্রেটররা পাসওয়ার্ড, বা পাসওয়ার্ডহীন এসএসএইচ লগইন, অথবা কীবিড এসএসএইচ প্রমাণীকরণ সরবরাহ করে এসএসএইচ ব্যবহার করে দূরবর্তী লিনাক্স সার্ভারগুলিতে লগইন করেন।

আপনি যদি এসএসএইচ প্রম্পটে নিজেই ব্যবহারকারীর নাম সহ একটি পাসওয়ার্ড সরবরাহ করতে চান? এখানেই এসপ্যাস উদ্ধার করতে আসে।

sshpass একটি সাধারণ এবং লাইটওয়েট কমান্ড লাইন সরঞ্জাম যা আমাদের কমান্ড প্রম্পটে নিজেই পাসওয়ার্ড (অ-ইন্টারেক্টিভ পাসওয়ার্ড প্রমাণীকরণ) সরবরাহ করতে সক্ষম করে, যাতে ক্রম শিডিয়ুলারের মাধ্যমে ব্যাকআপ নিতে স্বয়ংক্রিয় শেল স্ক্রিপ্টগুলি কার্যকর করা যায়।

পাসওয়ার্ডটি আসলে একটি ইন্টারেক্টিভ কীবোর্ড ব্যবহারকারী দ্বারা সরবরাহ করা হয়েছে তা নিশ্চিত করার জন্য ssh সরাসরি TTY অ্যাক্সেস ব্যবহার করে। Sshpass একটি নিবেদিত tty মধ্যে ssh চালায়, এটি একটি ইন্টারেক্টিভ ব্যবহারকারীর কাছ থেকে পাসওয়ার্ড পাচ্ছে তা বিশ্বাস করে বিভ্রান্ত করে।

গুরুত্বপূর্ণ: sshpass ব্যবহারকে কমপক্ষে সুরক্ষিত হিসাবে বিবেচনা করা হয়, কারণ এটি কমান্ড লাইনের সরল "পিএস" কমান্ডের সাথে সমস্ত সিস্টেম ব্যবহারকারীদের কাছে পাসওয়ার্ড প্রকাশ করে। আমি উচ্চতর এসএসএইচ পাসওয়ার্ডহীন প্রমাণীকরণ ব্যবহার করার পরামর্শ দিচ্ছি।

লিনাক্স সিস্টেমে sshpass ইনস্টল করুন

রেডহ্যাট/সেন্টোস ভিত্তিক সিস্টেমে আপনাকে প্রথমে প্রদর্শিত হিসাবে yum কমান্ডের প্রয়োজন।

# yum install sshpass
# dnf install sshpass    [On Fedora 22+ versions]

ডেবিয়ান/উবুন্টু এবং এর ডেরিভেটিভগুলিতে আপনি এপি-গেট কমান্ড ব্যবহার করে এটি ইনস্টল করতে পারেন shown

$ sudo apt-get install sshpass

বিকল্পভাবে, আপনি উত্স থেকে sshpass এর সর্বশেষ সংস্করণ পেতে ইনস্টল করতে পারেন, প্রথমে উত্স কোডটি ডাউনলোড করুন এবং তারপরে ট্যারি ফাইলের সামগ্রীগুলি বের করুন এবং এটি ইনস্টল করুন:

$ wget http://sourceforge.net/projects/sshpass/files/latest/download -O sshpass.tar.gz
$ tar -xvf sshpass.tar.gz
$ cd sshpass-1.06
$ ./configure
# sudo make install 

লিনাক্সে কীভাবে এসএসপাস ব্যবহার করবেন

sshpass ssh এর সাথে একসাথে ব্যবহৃত হয়, আপনি নীচের কমান্ডটি জারি করে সমস্ত বিবরণ সহ সমস্ত sshpass ব্যবহারের বিকল্প দেখতে পারবেন:

$ sshpass -h
Usage: sshpass [-f|-d|-p|-e] [-hV] command parameters
   -f filename   Take password to use from file
   -d number     Use number as file descriptor for getting password
   -p password   Provide password as argument (security unwise)
   -e            Password is passed as env-var "SSHPASS"
   With no parameters - password will be taken from stdin

   -h            Show help (this screen)
   -V            Print version information
At most one of -f, -d, -p or -e should be used

যেমনটি আমি আগেই বলেছি, এসপিএস হ'ল স্ক্রিপ্টিংয়ের উদ্দেশ্যে আরও নির্ভরযোগ্য এবং কার্যকর, নীচের উদাহরণ কমান্ডগুলি বিবেচনা করুন।

ব্যবহারকারীর নাম এবং পাসওয়ার্ড সহ দূরবর্তী লিনাক্স ssh সার্ভারে (10.42.0.1) এ লগইন করুন এবং দূরবর্তী সিস্টেমের ফাইল-সিস্টেম ডিস্কের ব্যবহার পরীক্ষা করে দেখুন।

$ sshpass -p 'my_pass_here' ssh [email  'df -h' 

গুরুত্বপূর্ণ: এখানে, পাসওয়ার্ডটি কমান্ড লাইনে দেওয়া হয়েছে যা কার্যত অনিরাপদ এবং এই বিকল্পটি ব্যবহার করার পরামর্শ দেওয়া হয় না।

তবে, স্ক্রিনে পাসওয়ার্ড দেখানো রোধ করতে আপনি -e পতাকাটি ব্যবহার করতে পারেন এবং নীচের মত এসএসএইচপিএএসএস এনভায়রনমেন্ট ভেরিয়েবলের মান হিসাবে পাসওয়ার্ডটি প্রবেশ করতে পারেন:

$ export SSHPASS='my_pass_here'
$ echo $SSHPASS
$ sshpass -e ssh [email  'df -h' 

দ্রষ্টব্য: উপরের উদাহরণে, এসএসএইচপিএসএস এনভায়রনমেন্ট ভেরিয়েবল কেবল অস্থায়ী উদ্দেশ্যে এবং পুনরায় বুট করার সময় অপসারণ করা হবে।

স্থায়ীভাবে এসএসএইচপিএএসএস এনভায়রনমেন্ট ভেরিয়েবল সেট করতে,/ইত্যাদি/প্রোফাইল ফাইলটি খুলুন এবং ফাইলের শুরুতে রফতানি বিবৃতি টাইপ করুন:

export SSHPASS='my_pass_here'

ফাইলটি সংরক্ষণ করুন এবং প্রস্থান করুন, তারপরে পরিবর্তনগুলি প্রভাবিত করতে নীচের কমান্ডটি চালান:

$ source /etc/profile 

অন্যদিকে, আপনি -f পতাকাটি ব্যবহার করতে পারেন এবং একটি ফাইলের মধ্যে পাসওয়ার্ড রাখতে পারেন। এইভাবে, আপনি ফাইলটি থেকে পাসওয়ার্ডটি নিম্নরূপ পড়তে পারেন:

$ sshpass -f password_filename ssh [email  'df -h'

আপনি এসএসএইচ ব্যবহার করে আরএসসিএন-এর মাধ্যমে ফাইলগুলি ব্যাকআপ/সিঙ্ক করতে এসএসপাস ব্যবহার করতে পারেন:

------- Transfer Files Using SCP ------- 
$ scp -r /var/www/html/example.com --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/var/www/html

------- Backup or Sync Files Using Rsync -------
$ rsync --rsh="sshpass -p 'my_pass_here' ssh -l aaronkilik" 10.42.0.1:/data/backup/ /backup/

আরও ব্যবহারের জন্য, আমি আপনাকে sshpass ম্যান পৃষ্ঠাটি পড়ার পরামর্শ দিচ্ছি, টাইপ করুন:

$ man sshpass

এই নিবন্ধে, আমরা এসএসপাসকে একটি সহজ সরঞ্জাম ব্যাখ্যা করেছি যা অ-ইন্টারেক্টিভ পাসওয়ার্ড প্রমাণীকরণকে সক্ষম করে। যদিও, এই সরঞ্জামগুলি সহায়ক হতে পারে তবে এটি ssh এর আরও সুরক্ষিত পাবলিক কী প্রমাণীকরণ প্রক্রিয়াটি ব্যবহার করার জন্য সুপারিশ করা হয়।

দয়া করে, আরও কোনও আলোচনার জন্য নীচের মতামত বিভাগের মাধ্যমে একটি প্রশ্ন বা মন্তব্য করবেন না।