SSD Nodes Learn 8GB RAM — $66/বছর
নির্দেশিকা Matt Connorদ্বারা Matt Connor

Ubuntu VPS-এ root পাসওয়ার্ড পরিবর্তন করার নিয়ম

Ubuntu VPS-এ passwd ও chpasswd কমান্ড ব্যবহার করে root পাসওয়ার্ড পরিবর্তনের পদ্ধতি জানুন। পাসওয়ার্ড ভুলে গেলে বা SSH অ্যাক্সেস হারিয়ে ফেললে পুনরুদ্ধারের উপায় এখানে দেখুন।

Ubuntu-তে আপনার VPS root পাসওয়ার্ড পরিবর্তন করার পদ্ধতি

Ubuntu-তে আপনার VPS (virtual private server) root পাসওয়ার্ড পরিবর্তন করতে, এমন একজন ব্যবহারকারী হিসেবে একটি SSH (secure shell) সেশন খুলুন যিনি sudo চালাতে পারেন, তারপর sudo passwd root কমান্ডটি চালান। এটি দুইবার নতুন পাসওয়ার্ড চাইবে এবং পুরনো পাসওয়ার্ড চাইবে না, কারণ sudo ইতিমধ্যেই আপনার পরিচয় নিশ্চিত করেছে। পরিবর্তে আপনার নিজের লগইন পাসওয়ার্ড পরিবর্তন করতে, কোনো আর্গুমেন্ট ছাড়া passwd চালান, এবং এটি প্রথমে আপনার বর্তমান পাসওয়ার্ড চাইবে।

passwd                  # your own password
sudo passwd deploy      # another user's password
sudo passwd root        # root's password

সম্পূর্ণ প্রক্রিয়াটি এটুকুই। নিচে যা কিছু আছে তা হলো সেই অংশ যেখানে ভুল হতে পারে: বর্তমান সেশনটি বন্ধ করার আগেই নতুন পাসওয়ার্ডটি কাজ করছে কিনা তা যাচাই করা, স্ক্রিপ্ট থেকে পাসওয়ার্ড সেট করা, ইচ্ছাকৃতভাবে পাসওয়ার্ডের মেয়াদ শেষ করা এবং পাসওয়ার্ড হারিয়ে গেলে পুনরায় প্রবেশাধিকার ফিরে পাওয়া।

পাসওয়ার্ড পরিবর্তনের আগে দ্বিতীয় একটি সেশন খুলুন

এখনই দ্বিতীয় একটি SSH সেশন খুলুন এবং সেটিকে কানেক্টেড অবস্থায় রাখুন। এই গাইডের প্রায় প্রতিটি ত্রুটিই দুই মিনিটের মধ্যে সমাধান করা সম্ভব, যদি একটি অথেন্টিকেটেড শেল সচল থাকে। কিন্তু শেষ শেলটি বন্ধ হয়ে গেলে আপনাকে কনসোলে গিয়ে কাজ করতে হবে।

একটি খোলা শেল আপনার অ্যাকাউন্টের পাসওয়ার্ড পরিবর্তন, লক বা মেয়াদোত্তীর্ণ করার পরেও কাজ চালিয়ে যায়। কারণ SSH শুধুমাত্র লগইনের সময় ক্রেডেনশিয়াল যাচাই করে এবং পরবর্তীতে আর তা পরীক্ষা করে না। এর ব্যতিক্রম হলো sudo। এটি এর টাইমস্ট্যাম্পের মেয়াদ শেষ হওয়ার পর PAM (pluggable authentication modules)-এর মাধ্যমে আপনার পাসওয়ার্ড পুনরায় যাচাই করে, যা ডিফল্টভাবে শেষ প্রম্পটের 15 মিনিট পর ঘটে। তাই নতুন পাসওয়ার্ডটি লগইনের সময় নয়, বরং পরবর্তীবার যখন sudo এটি চাইবে, তখন প্রথমবার সঠিকভাবে যাচাই হবে।

প্রথম সেশনটি খোলা রেখে দ্বিতীয় সেশনে নতুন পাসওয়ার্ডটি পরীক্ষা করুন।

passwd কমান্ড ব্যবহার করে নিজের পাসওয়ার্ড পরিবর্তন করুন

passwd
Changing password for deploy.
Current password:
New password:
Retype new password:
passwd: password updated successfully

passwd: password updated successfully হলো একমাত্র আউটপুট যা নির্দেশ করে যে /etc/shadow-এ থাকা হ্যাশটি প্রতিস্থাপিত হয়েছে। অন্য যেকোনো আউটপুট আসার অর্থ হলো পুরোনো পাসওয়ার্ডটিই রয়ে গেছে।

এখানে দুটি ব্যর্থতা ঘটতে পারে। passwd: Authentication token manipulation error এবং এর পরে passwd: password unchanged আসার অর্থ হলো, আপনি যে বর্তমান পাসওয়ার্ডটি টাইপ করেছেন তা ভুল, অথবা /etc/shadow ধারণকারী ফাইলসিস্টেমটিতে লেখা যাচ্ছে না, যা রিকভারি মোডে স্বাভাবিক অবস্থা। You must choose a longer password. ত্রুটিটি /etc/pam.d/common-password-এর pam_unix থেকে আসে, যা সাধারণ ব্যবহারকারীদের পাসওয়ার্ডের দৈর্ঘ্য এবং সাদৃশ্য পরীক্ষা করে।

অধিকাংশ VPS ইমেজে ডিফল্ট অ্যাকাউন্টের (ubuntu, অথবা আপনার প্রোভাইডার যে নামই প্রদান করুক) কোনো পাসওয়ার্ড থাকে না, শুধুমাত্র একটি SSH key থাকে। passwd-এর ক্ষেত্রে যাচাই করার মতো কোনো বর্তমান পাসওয়ার্ড নেই, তাই এটি প্রথম প্রম্পটটি অতিক্রম করতে পারে না। এর পরিবর্তে sudo passwd $USER ব্যবহার করুন, যা কার্যকর হয় কারণ ইমেজের sudoers ড্রপ-ইন ফাইলটি সেই অ্যাকাউন্টকে পাসওয়ার্ড ছাড়াই sudo চালানোর অনুমতি দেয়।

sudo passwd ব্যবহার করে অন্য ব্যবহারকারীর পাসওয়ার্ড পরিবর্তন করা

sudo passwd deploy

root ব্যবহারকারীকে পুরনো পাসওয়ার্ড জিজ্ঞাসা করা হয় না এবং pam_unix সাধারণ ব্যবহারকারীদের জন্য প্রযোজ্য পাসওয়ার্ডের শক্তির পরীক্ষাগুলো এড়িয়ে যায়। তাই root এমন একটি পাসওয়ার্ড সেট করতে পারে যা ব্যবহারকারী নিজে সেট করতে পারতেন না।

পাসওয়ার্ড লক করা একটি আলাদা কাজ। sudo passwd -l deploy সংরক্ষিত হ্যাশের শুরুতে একটি ! যুক্ত করে, যার ফলে কোনো পাসওয়ার্ডই তার সাথে মেলে না। sudo passwd -u deploy এটি সরিয়ে ফেলে। sudo passwd -S deploy ব্যবহার করে বর্তমান অবস্থা যাচাই করুন।

পাসওয়ার্ড লক করলেই ব্যবহারকারীর লগইন বন্ধ হয় না। তাদের ~/.ssh/authorized_keys-এ থাকা যেকোনো কি (key) কাজ করতে থাকে, কারণ পাবলিক কি অথেন্টিকেশন কখনোই /etc/shadow পড়ে না। একটি অ্যাকাউন্ট পুরোপুরি বন্ধ করতে, অ্যাকাউন্টটির মেয়াদ শেষ করে দিন:

sudo usermod --expiredate 1 deploy

এটি অ্যাকাউন্টের মেয়াদ 1970 সালের একটি তারিখে সেট করে দেয়, তাই যে ক্রেডেনশিয়ালই দেওয়া হোক না কেন, sshd লগইন প্রত্যাখ্যান করে। sudo usermod --expiredate '' deploy ব্যবহার করে এটি পূর্বাবস্থায় ফিরিয়ে আনুন।

passwd -d ব্যবহার করা থেকে বিরত থাকুন। এটি লক করা পাসওয়ার্ডের পরিবর্তে একটি খালি পাসওয়ার্ড সেট করে। পুরনো রিলিজগুলোতে, যেখানে PAM স্ট্যাকে এখনো nullok থাকে, সেখানে খালি পাসওয়ার্ড যে কেউ ব্যবহার করতে পারে।

VPS-এ কি root-এর পাসওয়ার্ড প্রয়োজন?

Ubuntu-তে root অ্যাকাউন্টটি ডিফল্টভাবে লক করা থাকে। /etc/shadow-এ হ্যাশের পরিবর্তে ! থাকে এবং sudo passwd -S root কমান্ডটি root L দিয়ে শুরু হওয়া একটি লাইন প্রদর্শন করে। আপনি পাসওয়ার্ড সেট না করা পর্যন্ত কেউ root হিসেবে পাসওয়ার্ড দিয়ে লগইন করতে পারবে না, আর এই কারণেই ইমেজটিতে আপনাকে sudo সুবিধা সম্পন্ন একটি ইউজার দেওয়া হয়। সরাসরি root হিসেবে কাজ না করে VPS-এ ন্যূনতম সুবিধাপ্রাপ্ত ইউজার অ্যাকাউন্ট ব্যবহার করে কাজ করাই হলো সঠিক পদ্ধতি।

root পাসওয়ার্ড সেট করলে একটি নির্দিষ্ট সুবিধা পাওয়া যায়: প্রোভাইডার কনসোলের মাধ্যমে সিস্টেমে প্রবেশের একটি উপায়। এই কনসোলটি নেটওয়ার্ক স্ট্যাকের নিচে ভার্চুয়াল মেশিনের সাথে সংযুক্ত থাকে, তাই sshd ভুল কনফিগার করা থাকলে বা ফায়ারওয়াল রুল ভুল থাকলেও এটি কাজ করে। তবে এর কিছু অসুবিধাও আছে। GRUB রিকভারি মেনুর root শেল root পাসওয়ার্ড চায় যদি সেটি সেট করা থাকে, ফলে ভুলে যাওয়া পাসওয়ার্ড রিসেট করার জন্য যে টুলটি ব্যবহার করবেন, সেটিও এখন সেই পাসওয়ার্ডের আড়ালে চলে যায়।

root পাসওয়ার্ড সেট করলেই root SSH-এর মাধ্যমে লগইন করতে পারে না। Ubuntu-তে PermitRootLogin prohibit-password কনফিগার করা থাকে, যার অর্থ হলো শুধুমাত্র কি (key) ব্যবহার করা যাবে। আপনার সার্ভারে বর্তমানে কী ব্যবহৃত হচ্ছে তা যাচাই করুন:

sudo sshd -T | grep -i permitrootlogin

sshd -T কমান্ডটি প্রতিটি Include লাইন সমাধান করার পর কার্যকর কনফিগারেশন প্রদর্শন করে, তাই যখন /etc/ssh/sshd_config.d/-এ ড্রপ-ইন ফাইল থাকে, তখন এটিই একমাত্র সঠিক তথ্য প্রদান করে।

chpasswd ব্যবহার করে স্ক্রিপ্ট থেকে পাসওয়ার্ড সেট করা

passwd টার্মিনাল থেকে ইনপুট নেয় এবং এটি স্ক্রিপ্ট থেকে চালানো যায় না। chpasswd স্ট্যান্ডার্ড ইনপুট থেকে প্রতি লাইনে একটি করে user:password জোড়া পড়ে।

printf '%s:%s\n' 'deploy' "$NEW_PASSWORD" | sudo chpasswd

এটি কাজ করে, কিন্তু এটি আপনার শেল হিস্ট্রি এবং CI (কন্টিনিউয়াস ইন্টিগ্রেশন) লগে প্লেইনটেক্সট পাসওয়ার্ড রেখে দেয়। এর পরিবর্তে প্রথমে এটিকে হ্যাশ করুন:

HASH=$(openssl passwd -6)
printf '%s:%s\n' 'deploy' "$HASH" | sudo chpasswd -e

openssl passwd -6 পাসওয়ার্ডটি দুইবার জানতে চায় এবং কোনো কিছু প্রদর্শন করে না, তারপর $6$ দিয়ে শুরু হওয়া একটি SHA-512 ক্রিপ্ট হ্যাশ প্রিন্ট করে। -e ফ্ল্যাগটি chpasswd-কে জানায় যে দ্বিতীয় ফিল্ডটি ইতিমধ্যে হ্যাশ করা আছে, তাই এটি সরাসরি /etc/shadow-এ কপি করা হয়। এই হ্যাশটি কোনো রিপোজিটরি বা CI ভেরিয়েবলে রাখা নিরাপদ এবং প্লেইনটেক্সট পাসওয়ার্ডটি কখনোই সেই মেশিন থেকে বাইরে যায় না যেখানে আপনি এটি টাইপ করেছেন।

Ubuntu 24.04 নতুন পাসওয়ার্ডগুলোকে yescrypt ($y$) দিয়ে হ্যাশ করে যখন passwd সেগুলো সেট করে, অন্যদিকে openssl passwd -6 আপনাকে SHA-512 প্রদান করে। উভয়ই লগইনের সময় যাচাই করা যায়, কারণ libxcrypt উভয় ফরম্যাটই পড়তে পারে। এগুলো মিশ্রিত অবস্থায় থাকা সমস্যা নয় এবং openssl passwd -6 প্রতিটি Ubuntu LTS রিলিজে একইভাবে কাজ করে, যা chpasswd -c YESCRYPT করে না: 20.04-এর পুরনো shadow প্যাকেজটি সেই মেথড নামটি চেনে না।

পাসওয়ার্ডটি সত্যিই পরিবর্তিত হয়েছে কি না তা কীভাবে যাচাই করবেন?

প্রথমে মেটাডেটা দেখুন, তারপর লগইন করে বিষয়টি নিশ্চিত করুন।

sudo passwd -S deploy
deploy P 08/01/2026 0 99999 7 -1

দ্বিতীয় ফিল্ডটি হলো অবস্থা: ব্যবহারযোগ্য পাসওয়ার্ডের জন্য P, লক করা অবস্থার জন্য L, এবং কোনো পাসওয়ার্ড না থাকলে NP। তারিখটি নির্দেশ করে পাসওয়ার্ড সর্বশেষ কবে পরিবর্তিত হয়েছে, তাই এখানে আজকের তারিখ থাকা উচিত। এর পরের সংখ্যাগুলো হলো এজিং ফিল্ড, যা নিচে আলোচনা করা হয়েছে।

সবচেয়ে নিরাপদ লাইভ পরীক্ষা হলো sudo কমান্ডটি ব্যবহার করা। sudo -k ক্যাশ করা টাইমস্ট্যাম্প মুছে ফেলে এবং sudo -v নতুন করে পাসওয়ার্ড প্রম্পট করতে বাধ্য করে। যদি নতুন পাসওয়ার্ডটি সেখানে গৃহীত হয়, তবে বুঝতে হবে PAM এটি গ্রহণ করেছে এবং আপনার সেশনে কোনো পরিবর্তন হয়নি।

sudo -k && sudo -v

অন্য কোনো অ্যাকাউন্টের পরীক্ষা করতে, একটি আনপ্রিভিলেজড শেল থেকে su - deploy চালান। sudo su - deploy চালাবেন না, কারণ root ব্যবহারকারীকে কখনোই পাসওয়ার্ড জিজ্ঞাসা করা হয় না এবং এই পরীক্ষাটি কোনো কাজে আসবে না। ভুল পাসওয়ার্ড দিলে su: Authentication failure বার্তাটি প্রদর্শিত হবে।

প্রকৃত পরীক্ষা হলো আপনার ল্যাপটপ থেকে একটি নতুন SSH লগইন করা, যখন আপনার বর্তমান সেশনটি খোলা থাকবে:

ssh -o PubkeyAuthentication=no deploy@203.0.113.10

এখানে Permission denied (publickey). আসার অর্থ হলো সার্ভারটি পাসওয়ার্ড অথেন্টিকেশন অফার করছে না, তাই পাসওয়ার্ড পরিবর্তন করলেও আপনি প্রবেশ করতে পারবেন না। Permission denied, please try again. আসার অর্থ হলো সার্ভারটি এটি অফার করেছে কিন্তু আপনার দেওয়া পাসওয়ার্ডটি প্রত্যাখ্যান করেছে।

chage ব্যবহার করে পরবর্তী লগইনে পাসওয়ার্ড পরিবর্তন বাধ্যতামূলক করা

sudo chage -d 0 deploy

-d 0 কমান্ডটি সর্বশেষ পাসওয়ার্ড পরিবর্তনের তারিখকে epoch-এ সেট করে, যার ফলে PAM পাসওয়ার্ডটিকে মেয়াদোত্তীর্ণ হিসেবে গণ্য করে। পরবর্তী ইন্টারঅ্যাক্টিভ লগইনের সময় শেল পাওয়ার আগে সিস্টেম বর্তমান পাসওয়ার্ড এবং তারপর একটি নতুন পাসওয়ার্ড চাইবে। sudo passwd -e deploy কমান্ডটিও ঠিক একই কাজ করে।

এটি শুধুমাত্র সেই অ্যাকাউন্টগুলোর জন্য ব্যবহার করুন যেগুলোতে পাসওয়ার্ডের মাধ্যমে ইন্টারঅ্যাক্টিভ লগইন করা হয়। মেয়াদোত্তীর্ণ পাসওয়ার্ড কি-ভিত্তিক (key-based) লগইনকেও প্রভাবিত করে, কারণ কি (key) দিয়ে প্রমাণীকরণ সম্পন্ন হলেও sshd সবসময় PAM অ্যাকাউন্ট স্টেজটি চালায়। ফলে একটি স্ক্রিপ্টেড ssh deploy@203.0.113.10 'systemctl restart app' কমান্ড ব্যর্থ হয় এবং নিচের ত্রুটি দেখায়:

Password change required but no TTY available.

এই লাইনের পরের কোনো কমান্ড আর কার্যকর হয় না এবং জবটি শুধুমাত্র একটি নন-জিরো এক্সিট কোড প্রদান করে।

পাসওয়ার্ড এজিং ফিল্ডগুলোর অর্থ

sudo chage -l deploy
Last password change                                    : Aug 01, 2026
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

এই সংখ্যাগুলো হলো /etc/shadow ফাইলে সংশ্লিষ্ট ব্যবহারকারীর লাইনের 4 থেকে 8 নম্বর ফিল্ড। মিনিমাম ডেইজ (chage -m) হলো পাসওয়ার্ড পরিবর্তনের পর পুনরায় পরিবর্তন করার আগে ব্যবহারকারীকে কতদিন অপেক্ষা করতে হবে তার সময়সীমা, যা ব্যবহারকারীকে বাধ্যতামুলক পরিবর্তনের পরপরই পুরনো পাসওয়ার্ডে ফিরে আসা থেকে বিরত রাখে। ম্যাক্সিমাম ডেইজ (chage -M) হলো পাসওয়ার্ডটি কতদিন কার্যকর থাকবে তার সময়সীমা। ওয়ার্নিং ডেইজ (chage -W) হলো পাসওয়ার্ডের মেয়াদ শেষ হওয়ার কতদিন আগে থেকে লগইনের সময় সতর্কবার্তা দেখানো শুরু হবে। ইনঅ্যাক্টিভ ডেইজ (chage -I) হলো পাসওয়ার্ডের মেয়াদ শেষ হওয়ার পর কতদিন পর্যন্ত গ্রেস পিরিয়ড পাওয়া যাবে, যার পরে পাসওয়ার্ডটি আর কোনোভাবেই গ্রহণ করা হবে না। অ্যাকাউন্ট এক্সপায়ারি (chage -E) হলো অ্যাকাউন্টের মেয়াদ শেষ হওয়ার একটি নির্দিষ্ট তারিখ, যা পাসওয়ার্ডের মেয়াদের ওপর নির্ভর করে না।

sudo chage -M 90 -W 14 deploy

এটি শুধুমাত্র তখনই সেট করুন যখন কোনো পলিসির জন্য এটি প্রয়োজন হয়। NIST (ইউএস ন্যাশনাল ইনস্টিটিউট অফ স্ট্যান্ডার্ডস অ্যান্ড টেকনোলজি) 2017 সাল থেকে নিয়মিত পাসওয়ার্ড পরিবর্তনের বিরুদ্ধে পরামর্শ দিয়ে আসছে, কারণ এটি ব্যবহারকারীদের একই পাসওয়ার্ডের অনুমানযোগ্য পরিবর্তন ব্যবহারে উৎসাহিত করে। এর পরিবর্তে, কোনো অ্যাকাউন্ট হ্যাক হওয়ার প্রমাণ পাওয়া গেলে পাসওয়ার্ড পরিবর্তনের পরামর্শ দেওয়া হয়। একটি পাসওয়ার্ড ম্যানেজারে সংরক্ষিত দীর্ঘ এবং অনন্য পাসওয়ার্ড, সেই সাথে কি-বেসড SSH ব্যবহার করা 90 দিনের সাইকেলের চেয়ে অনেক বেশি কার্যকর।

root পাসওয়ার্ড হারিয়ে গেলে যা করবেন

যদি সার্ভারের কোনো অ্যাকাউন্ট sudo চালাতে পারে, তবে পুনরুদ্ধারের কিছু নেই: sudo passwd root ব্যবহার করে নতুন পাসওয়ার্ড সেট করা যায়। কঠিন পরিস্থিতি হলো যখন কোনো লগইনই কাজ করে না।

নিচের সব ধাপের জন্য প্রোভাইডার কনসোল প্রয়োজন, যা বেশিরভাগ প্যানেলে VNC (virtual network computing) বা সিরিয়াল কনসোল হিসেবে থাকে। এটি নেটওয়ার্ক স্ট্যাকের নিচে ভার্চুয়াল মেশিনের সাথে সংযুক্ত থাকে, তাই sshd সেটিংস বা ফায়ারওয়াল রুলস এতে কোনো প্রভাব ফেলে না।

  1. প্যানেল থেকে সার্ভার রিবুট করুন এবং কনসোলটি পর্যবেক্ষণ করুন।
  2. GRUB মেনু আনুন। ক্লাউড ইমেজগুলোতে সাধারণত GRUB_TIMEOUT=0 সেট করা থাকে, তাই BIOS বুটের ক্ষেত্রে Shift চেপে ধরে রাখুন, অথবা UEFI বুটের ক্ষেত্রে রিবুট শুরু হওয়ার সাথে সাথে বারবার Esc চাপুন।
  3. Advanced options for Ubuntu নির্বাচন করুন, তারপর (recovery mode) দিয়ে শেষ হওয়া এন্ট্রিটি বেছে নিন এবং রিকভারি মেনু থেকে root নির্বাচন করুন।
  4. প্রথমে mount -o remount,rw / চালান। রিকভারি মোড রুট ফাইলসিস্টেমকে শুধুমাত্র পড়ার (read-only) অনুমতিতে মাউন্ট করে, তাই এটি ছাড়া passwd ব্যর্থ হবে এবং passwd: Authentication token manipulation error দেখাবে, কারণ এটি /etc/shadow লিখতে পারে না।
  5. আপনার প্রয়োজনীয় অ্যাকাউন্টের জন্য passwd ubuntu চালান, তারপর প্যানেল থেকে রিবুট করুন।

যদি root-এর আগে থেকেই কোনো পাসওয়ার্ড থাকে এবং সেটিই আপনি হারিয়ে থাকেন, তবে রিকভারি শেল সেই পাসওয়ার্ড চাইবে এবং এই পথটি বন্ধ হয়ে যাবে। সেক্ষেত্রে প্রোভাইডারের রেসকিউ ইমেজ বুট করুন, তারপর মূল ডিস্কটি মাউন্ট করে তার ভেতরে পাসওয়ার্ড পরিবর্তন করুন।

lsblk
sudo mount /dev/vda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt passwd ubuntu
sudo umount -R /mnt

এই পৃষ্ঠা থেকে /dev/vda1 কপি না করে lsblk থেকে পার্টিশন লেআউট দেখে নিন। রুট পার্টিশনটি বড় আকারের হয়। UEFI ইমেজে এটি একটি ছোট EFI পার্টিশনের পাশে থাকে, যেখানে কোনো /etc ডিরেক্টরি থাকে না।

যখন SSH আপনার পাসওয়ার্ড গ্রহণ করা বন্ধ করে দেয় তখন যা করবেন

আপনার কাছে এখনও যে সেশনটি খোলা আছে তা থেকে কাজ করুন। যদি কোনো সেশন খোলা না থাকে, তবে কনসোল ব্যবহার করুন।

Permission denied, please try again. এর অর্থ হলো সার্ভার পাসওয়ার্ড অথেন্টিকেশন অফার করেছিল কিন্তু আপনি যা পাঠিয়েছেন তা প্রত্যাখ্যান করেছে। এর সাধারণ কারণগুলো হলো ক্যাপস লক (caps lock) চালু থাকা, অথবা কনসোলের কিবোর্ড লেআউট যা আপনি পাসওয়ার্ড সেট করার সময় ব্যবহার করেছিলেন তার থেকে আলাদা হওয়া।

Permission denied (publickey). এর অর্থ হলো সার্ভার কখনোই পাসওয়ার্ড অথেন্টিকেশন অফার করেনি। PasswordAuthentication no কোথাও সেট করা আছে, এবং Ubuntu 22.04 ও পরবর্তী ভার্সনগুলোতে এটি সাধারণত /etc/ssh/sshd_config.d/ এর অধীনে একটি ড্রপ-ইন ফাইলে থাকে যা মূল ফাইলটিকে ওভাররাইড করে। কার্যকর মানগুলো পড়ুন:

sudo sshd -T | grep -Ei 'passwordauthentication|kbdinteractiveauthentication|permitrootlogin'

PasswordAuthentication no এর পাশাপাশি KbdInteractiveAuthentication yes এখনও পাসওয়ার্ড গ্রহণ করতে দেয়, কারণ কিবোর্ড-ইন্টারেক্টিভ মেথড একই PAM স্ট্যাক চালায়। একটি বন্ধ করে অন্যটি চালু রাখা হলো সেই পদ্ধতি যার মাধ্যমে একটি সার্ভার যা দেখতে শুধুমাত্র কি-ভিত্তিক মনে হয়, তা টাইপ করা পাসওয়ার্ড গ্রহণ করতে থাকে।

ডিসকানেক্ট মেসেজে Too many authentication failures এর অর্থ হলো আপনার ক্লায়েন্ট পাসওয়ার্ডে পৌঁছানোর আগে বেশ কয়েকটি কি (key) অফার করেছিল এবং সার্ভার MaxAuthTries এ পৌঁছে গেছে, যা ডিফল্টভাবে 6। একটি একক মেথড ফোর্স করুন:

ssh -o IdentitiesOnly=yes -o PubkeyAuthentication=no deploy@203.0.113.10

এক মিনিট আগেও কাজ করছিল এমন একটি পোর্টে Connection refused এর অর্থ সাধারণত হলো fail2ban SSH মনিটর করছে এবং বারবার ব্যর্থ হওয়ার পর আপনার অ্যাড্রেসটিকে ব্যান করেছে। এর ডিফল্ট ব্যান রুল প্যাকেটটিকে ড্রপ না করে প্রত্যাখ্যান করে, যার কারণে এটি টাইম-আউট না হয়ে দ্রুত প্রত্যাখ্যানের মেসেজ দেয়। কনসোল থেকে, sudo fail2ban-client status sshd ব্যান করা অ্যাড্রেসগুলোর তালিকা দেখায় এবং sudo fail2ban-client set sshd unbanip 203.0.113.10 আপনার অ্যাড্রেসটিকে ক্লিয়ার করে।

পাসওয়ার্ড একটি প্রাথমিক ধাপ, কি (key) হলো চূড়ান্ত পর্যায়

SSH-এর মাধ্যমে কাজ করে এমন যেকোনো পাসওয়ার্ড ইন্টারনেটের প্রতিটি স্ক্যানার অনুমান করার চেষ্টা করে। কি-ভিত্তিক অথেন্টিকেশনে চলে যান, তাহলে এই অনুমান করার বিষয়টি আর কোনো প্রভাব ফেলবে না। একটি কি-পেয়ার (key pair) তৈরি করুন, পাবলিক অংশটি ইনস্টল করুন এবং অন্য কোনো পরিবর্তন করার আগে দ্বিতীয় একটি টার্মিনাল থেকে কি-টি আপনাকে লগ-ইন করতে দিচ্ছে কি না তা নিশ্চিত করুন। SSH কি ম্যানেজমেন্টের মৌলিক বিষয়সমূহ-এ কি তৈরি করা, authorized_keys এবং পাসফ্রেজ নিয়ে আলোচনা করা হয়েছে।

এরপর পাসওয়ার্ড অথেন্টিকেশন বন্ধ করে দিন এবং আপনি যে ফাইলটি এডিট করেছেন তার ওপর নির্ভর না করে sudo sshd -T ব্যবহার করে তা নিশ্চিত করুন। VPS-এ SSH হার্ডেনিং-এ sshd-এর অন্যান্য সেটিংস পরিবর্তন করার প্রক্রিয়া বর্ণনা করা হয়েছে এবং নতুন VPS-এ প্রথম দশ মিনিট-এ একটি নতুন সার্ভারে এগুলো করার সঠিক ক্রম দেওয়া হয়েছে।

এরপরেও একটি পাসওয়ার্ড সংরক্ষণ করুন। ভুল sshd কনফিগারেশনসহ একটি কি-অনলি সার্ভারে শুধুমাত্র প্রোভাইডার কনসোলের মাধ্যমেই প্রবেশ করা সম্ভব, আর সেই কনসোল একটি ইউজারনেম এবং পাসওয়ার্ড দাবি করে। একটি শক্তিশালী পাসওয়ার্ডসহ অ্যাকাউন্ট থাকলে আপনি পাঁচ মিনিটের মধ্যে সমস্যা সমাধান করতে পারবেন, অন্যথায় সার্ভারটি পুনরায় ইনস্টল করতে হবে।

FAQ

আমার VPS-এর root পাসওয়ার্ড ভুলে গেলে তা কীভাবে পরিবর্তন করব?

এমন একজন ব্যবহারকারী হিসেবে লগ ইন করুন যিনি sudo চালাতে পারেন এবং sudo passwd root কমান্ডটি রান করুন। এটি পুরনো পাসওয়ার্ড না চেয়েই নতুন পাসওয়ার্ড সেট করে দেয়, কারণ sudo আপনাকে আগেই প্রমাণীকরণ (authenticate) করেছে। যদি সার্ভারে কোনো অ্যাকাউন্টই sudo চালাতে না পারে, তবে প্রোভাইডারের কনসোল খুলুন, GRUB রিকভারি মেনুতে রিবুট করুন, root শেল এন্ট্রি নির্বাচন করুন, mount -o remount,rw / রান করুন এবং তারপর passwd রান করুন। যদি root-এর আগে থেকেই কোনো পাসওয়ার্ড থাকে এবং আপনি সেটিই ভুলে গিয়ে থাকেন, তবে রিকভারি শেল সেটি চাইবে। সেক্ষেত্রে একমাত্র উপায় হলো প্রোভাইডারের রেসকিউ ইমেজ ব্যবহার করা, যেখানে ডিস্ক মাউন্ট করে chroot করতে হয়।

passwd কমান্ড কেন "Authentication token manipulation error" দেখায়?

দুটি কারণে এই বার্তাটি আসে। সাধারণ কারণটি হলো Current password: প্রম্পটে ভুল উত্তর দেওয়া, এবং এর নিচের passwd: password unchanged লাইনটি নিশ্চিত করে যে কোনো কিছুই লেখা হয়নি। অন্য কারণটি হলো ফাইলসিস্টেম যেখানে লেখা সম্ভব নয়; রিকভারি মোডে আপনি এটিই সম্মুখীন হন, কারণ সেখানে / শুধুমাত্র রিড-অনলি (read-only) হিসেবে মাউন্ট করা থাকে। mount -o remount,rw / রান করুন এবং পুনরায় চেষ্টা করুন।

আমার Linux পাসওয়ার্ড পরিবর্তন করলে কি আমার sudo পাসওয়ার্ডও পরিবর্তিত হয়?

হ্যাঁ। sudo-এর নিজস্ব কোনো পাসওয়ার্ড নেই। এটি PAM-এর মাধ্যমে সেই একই /etc/shadow এন্ট্রির বিপরীতে আপনাকে প্রমাণীকরণ করে যা SSH এবং su ব্যবহার করে, তাই প্রতিটি অ্যাকাউন্টের জন্য একটিই পাসওয়ার্ড থাকে। এই কারণেই পাসওয়ার্ড পরিবর্তনের পর প্রথম sudo প্রম্পটটিই হলো আসল পরীক্ষা। আপনার বর্তমান সেশন চালু থাকা অবস্থায় সেই প্রম্পটটি পাওয়ার জন্য sudo -k && sudo -v রান করুন।

পাসওয়ার্ড পরিবর্তন করলে কি আমার SSH কি (keys) বা খোলা সেশনগুলো নষ্ট হয়ে যাবে?

না। পাবলিক কি প্রমাণীকরণ কখনোই /etc/shadow পড়ে না, তাই পাসওয়ার্ড পরিবর্তনের পর, passwd -l-এর পর এবং chage -d 0-এর পরও কি (keys) কাজ করতে থাকে। যে সেশনগুলো আগে থেকেই খোলা আছে সেগুলো খোলা থাকবে, কারণ SSH শুধুমাত্র লগ ইন করার সময় ক্রেডেনশিয়াল যাচাই করে। লাইভ সেশনের ভেতরে একমাত্র যে পরিবর্তনটি ঘটে তা হলো sudo, যা 15 মিনিটের টাইমস্ট্যাম্প শেষ হওয়ার পর নতুন পাসওয়ার্ড চাইবে।

পরবর্তী লগ ইনের সময় কোনো ব্যবহারকারীকে পাসওয়ার্ড পরিবর্তন করতে বাধ্য করব কীভাবে?

sudo chage -d 0 deploy রান করুন, অথবা sudo passwd -e deploy রান করুন, যা একই কাজ করে। সংরক্ষিত সর্বশেষ পরিবর্তনের তারিখটি ইপক (epoch)-এ চলে যায়, PAM পাসওয়ার্ডটিকে মেয়াদোত্তীর্ণ হিসেবে গণ্য করে এবং শেল শুরু হওয়ার আগে পরবর্তী ইন্টারঅ্যাক্টিভ লগ ইনে একটি নতুন পাসওয়ার্ড সেট করতে হয়। SSH-এর মাধ্যমে স্ক্রিপ্ট দ্বারা ব্যবহৃত কোনো অ্যাকাউন্টের ক্ষেত্রে এটি করবেন না: সেক্ষেত্রে একটি নন-ইন্টারঅ্যাক্টিভ কমান্ড Password change required but no TTY available. ত্রুটির কারণে ব্যর্থ হবে এবং কখনোই রান করবে না।

#vps#ubuntu#passwords#ssh#server-security