SSD Nodes Learn Hosting plans →
নির্দেশিকা Matt Connorদ্বারা Matt Connor · আপডেট করা হয়েছে 2026-10-20

Ubuntu VPS-এ root password কীভাবে পরিবর্তন করবেন

Ubuntu VPS-এ passwd, chpasswd ও chage দিয়ে root বা user password বদলান, কাজ করছে কি না যাচাই করুন এবং SSH বা root password হারালে আবার প্রবেশের উপায় জানুন।

Verified Every command ran end-to-end on a fresh Ubuntu 24.04 server, August 1, 2026.

Ubuntu-তে VPS root password কীভাবে পরিবর্তন করবেন

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

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

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

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

এখন দ্বিতীয় একটি SSH session খুলে সংযোগটি চালু রাখুন। এই নির্দেশিকার প্রায় সব ব্যর্থতাই দুই মিনিটে ঠিক করা যায়, যদি অন্তত একটি authenticated shell চালু থাকে। শেষ session বন্ধ হয়ে গেলে console-এ যেতে হতে পারে।

ইতিমধ্যে খোলা একটি shell তার সঙ্গে সম্পর্কিত account পরিবর্তন, lock বা expire করার পরও কাজ করতে থাকে। কারণ SSH login-এর সময় credentials পরীক্ষা করে, পরে আর পরীক্ষা করে না। এর ব্যতিক্রম হলো sudo। cached credentials-এর মেয়াদ শেষ হলে এটি PAM (pluggable authentication modules)-এর মাধ্যমে আবার password পরীক্ষা করে। Ubuntu-তে ডিফল্টভাবে এটি 15 মিনিট পরে ঘটে। এই সময়সীমা শেষ prompt থেকে গণনা করা হয় না, কারণ sudo -v আবার password না চেয়েই cached credentials refresh করে। তাই নতুন password-এর প্রথম প্রকৃত পরীক্ষা login-এর সময় নয়, পরের বার sudo password চাইলে হয়।

প্রথম session চালু রেখে দ্বিতীয় session-এ নতুন password পরীক্ষা করুন।

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

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

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

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

বেশিরভাগ VPS image-এ default account (ubuntu, অথবা provider যে নাম দিয়ে account সরবরাহ করে)–এর কোনো password থাকে না; শুধু একটি SSH key থাকে। passwd-এর যাচাই করার মতো কোনো current password নেই, তাই এটি প্রথম prompt অতিক্রম করতে পারে না। পরিবর্তে sudo passwd $USER ব্যবহার করুন। এটি কাজ করে, কারণ image-এর sudoers drop-in file ওই account-কে password ছাড়াই sudo চালানোর অনুমতি দেয়।

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

sudo passwd deploy

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

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

পাসওয়ার্ড লক করলেও ব্যবহারকারীকে লগ ইন করা থেকে আটকানো যায় না। তার ~/.ssh/authorized_keys-এ থাকা যেকোনো key এখনও কাজ করবে, কারণ public key authentication পাসওয়ার্ডের hash যাচাই করে না। কোনো account পুরোপুরি বন্ধ করতে account-টিকেই expire করুন:

sudo usermod --expiredate 1 deploy

এতে account expiry 1970 সালের একটি তারিখে সেট হয়। ফলে যে credential-ই দেওয়া হোক, sshd লগ ইন প্রত্যাখ্যান করে। sudo usermod --expiredate '' deploy দিয়ে এই পরিবর্তন বাতিল করুন।

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

VPS-এ root-এর কি password প্রয়োজন?

Ubuntu-তে root account locked অবস্থায় থাকে। /etc/shadow hash-এর পরিবর্তে ! সংরক্ষণ করে, এবং sudo passwd -S root এমন একটি line দেখায় যা root L দিয়ে শুরু হয়। আপনি password সেট না করা পর্যন্ত password ব্যবহার করে কেউ root হিসেবে লগ ইন করতে পারে না। তাই image-এর সঙ্গে sudo ব্যবহারের ক্ষমতাসম্পন্ন একটি user দেওয়া হয়। root হিসেবে কাজ না করে VPS-এ least privilege user account ব্যবহার করাই অনুসরণযোগ্য পদ্ধতি।

root password সেট করলে একটি নির্দিষ্ট সুবিধা পাওয়া যায়: provider console দিয়ে প্রবেশের পথ। এই console network stack-এর নিচে virtual machine-এর সঙ্গে সংযুক্ত থাকে। তাই sshd ভুলভাবে configured হলেও বা firewall rule ভুল হলেও এটি কাজ করে। তবে এর একটি অসুবিধাও আছে। root-এর password সেট করা থাকলে GRUB recovery menu-এর root shell সেই password চায়। ফলে ভুলে যাওয়া password reset করার জন্য যে tool ব্যবহার করার কথা, সেটিও একই password-এর আড়ালে চলে যায়।

root password সেট করলেই SSH-এর মাধ্যমে root হিসেবে লগ ইন করা যায় না। Ubuntu-তে PermitRootLogin prohibit-password থাকে, যার অর্থ শুধু key ব্যবহার করা যাবে। আপনার server বাস্তবে কী ব্যবহার করছে তা পরীক্ষা করুন:

sudo sshd -T | grep -i permitrootlogin

sshd -T প্রতিটি Include line resolve করার পর কার্যকর configuration দেখায়। তাই /etc/ssh/sshd_config.d/ drop-in file ধারণ করলে এটিই একমাত্র নির্ভরযোগ্য উত্তর।

স্ক্রিপ্ট থেকে chpasswd দিয়ে একটি পাসওয়ার্ড সেট করুন

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

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

এটি কাজ করে, তবে এতে আপনার shell history এবং CI (continuous integration) log-এ plaintext password লেখা হয়। তাই আগে hash তৈরি করুন:

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

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

Ubuntu 24.04-এ passwd দিয়ে নতুন পাসওয়ার্ড সেট করলে Ubuntu yescrypt ($y$) ব্যবহার করে hash তৈরি করে, আর openssl passwd -6 আপনাকে SHA-512 দেয়। Login-এর সময় উভয় format-ই যাচাই করা যায়, কারণ libxcrypt উভয় format পড়তে পারে। এগুলো মিশিয়ে ব্যবহার করা যায়, এবং Ubuntu LTS-এর 18.04 থেকে পরবর্তী প্রতিটি release-এ openssl passwd -6 একইভাবে কাজ করে। তবে chpasswd -c YESCRYPT একইভাবে কাজ করে না: 20.04-এর পুরোনো shadow package ওই method name চেনে না। Ubuntu 16.04 ব্যতিক্রম, কারণ এর OpenSSL 1.0.2-এ -6 option-ই নেই। এই hash-গুলো release পরিবর্তনের পরেও কার্যকর থাকে। তাই 24.04 server-কে 26.04-এ উন্নীত করলেও কাউকে পাসওয়ার্ড reset করতে হয় না।

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

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

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

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

সরাসরি পরীক্ষা করার সবচেয়ে নিরাপদ উপায় হলো sudo নিজেই। sudo -k cached timestamp বাতিল করে এবং sudo -v নতুন prompt দেখাতে বাধ্য করে। সেখানে নতুন পাসওয়ার্ড গ্রহণ করা হলে PAM সেটি গ্রহণ করেছে এবং আপনার session-এর কোনো পরিবর্তন হয়নি।

sudo -k && sudo -v

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

প্রকৃত পরীক্ষা হলো আপনার laptop থেকে একটি নতুন SSH login করা, এবং বর্তমান কাজের session খোলা রাখা:

ssh -o PubkeyAuthentication=no deploy@203.0.113.10

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

আপনার laptop-এ উইন্ডোজ 10 বা 11 থাকলে PowerShell-এর বিল্ট-ইন OpenSSH client দিয়েই ওপরের command হুবহু চলে, আর উইন্ডোজ থেকে VPS-এ SSH কানেক্ট করার নির্দেশিকায় সেই client প্রস্তুত করা থেকে key সেটআপ পর্যন্ত ধাপগুলো দেখানো হয়েছে।

পরবর্তী লগইনে chage দিয়ে password পরিবর্তন বাধ্যতামূলক করুন

sudo chage -d 0 deploy

-d 0 শেষ পরিবর্তনের তারিখ epoch-এ সেট করে। ফলে PAM password-কে expired হিসেবে গণ্য করে। পরবর্তী interactive login-এ shell দেওয়ার আগে current password এবং তারপর নতুন password চাওয়া হয়। sudo passwd -e deploy ঠিক একই কাজ করে।

এটি কেবল সেই account-গুলোর জন্য ব্যবহার করুন, যেগুলো password দিয়ে interactive login করে। Expired password key-based login-কেও প্রভাবিত করে, কারণ key authentication সম্পন্ন হলেও sshd PAM account stage চালায়। Script থেকে চালানো ssh deploy@203.0.113.10 'systemctl restart app' command শুরু হওয়ার আগেই এভাবে ব্যর্থ হয়:

Password change required but no TTY available.

Remote command কখনও চালানো হয় না এবং ssh non-zero code দিয়ে শেষ হয়। Calling script-এ error হলে execution থামানোর ব্যবস্থা না থাকলে, যেমন set -e বা একটি explicit check ব্যবহার না করলে, পরের লাইনগুলো তবুও চলে। ফলে restart সম্পন্ন হয়েছে ধরে নিয়ে job শেষ হতে পারে।

পাসওয়ার্ডের মেয়াদ-সংক্রান্ত ফিল্ডগুলোর অর্থ

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 নম্বর ফিল্ড। Minimum days (chage -m) হলো ব্যবহারকারীকে আবার পাসওয়ার্ড পরিবর্তন করার আগে যত দিন অপেক্ষা করতে হবে। জোর করে পাসওয়ার্ড পরিবর্তন করানোর পর কেউ যেন সঙ্গে সঙ্গে আগের পাসওয়ার্ডে ফিরে যেতে না পারে, এটি তা প্রতিরোধ করে। Maximum days (chage -M) হলো পাসওয়ার্ড কত দিন বৈধ থাকবে। Warning days (chage -W) নির্ধারণ করে, কখন login-এর সময় সতর্কবার্তা দেখানো শুরু হবে। Inactive days (chage -I) হলো পাসওয়ার্ডের মেয়াদ শেষ হওয়ার পরের grace period। এই সময় শেষ হলে পাসওয়ার্ড আর গ্রহণ করা হবে না। Account expiry (chage -E) একটি নির্দিষ্ট শেষ তারিখ। এটি পাসওয়ার্ডের মেয়াদ থেকে স্বাধীন।

sudo chage -M 90 -W 14 deploy

কোনো policy-তে প্রয়োজন হলে তবেই এটি সেট করুন। NIST (US National Institute of Standards and Technology) 2017 সাল থেকে নিয়মিত পাসওয়ার্ডের মেয়াদ শেষ করার বিরুদ্ধে পরামর্শ দিয়ে আসছে। কারণ এতে মানুষ একই পাসওয়ার্ডের অনুমানযোগ্য পরিবর্তিত রূপ ব্যবহার করতে শুরু করে। পরিবর্তে, password compromise-এর প্রমাণ পাওয়া গেলে পাসওয়ার্ড পরিবর্তন বাধ্যতামূলক করার পরামর্শ দেওয়া হয়। Password manager-এ সংরক্ষিত একটি দীর্ঘ, অনন্য পাসওয়ার্ড এবং key based SSH ব্যবহার করা 90 দিনের পরিবর্তন-চক্রের চেয়ে বেশি নিরাপদ।

root password হারালে কী করবেন

সার্ভারে কোনো account যদি sudo চালাতে পারে, তাহলে password পুনরুদ্ধার করার প্রয়োজন নেই: sudo passwd root একটি নতুন password সেট করে। আসল কঠিন পরিস্থিতি হলো কোনো login-ই কাজ না করা।

নিচের সব কাজের জন্য provider console প্রয়োজন। অধিকাংশ panel-এ এটি VNC (virtual network computing) বা serial console নামে থাকে। এটি network stack-এর নিচে virtual machine-এর সঙ্গে সংযোগ করে। তাই sshd-এর settings এবং firewall rules এতে প্রভাব ফেলে না।

  1. panel থেকে server reboot করুন এবং console পর্যবেক্ষণ করুন।
  2. GRUB menu আনুন। Cloud image-গুলোতে সাধারণত GRUB_TIMEOUT=0 সেট করা থাকে। তাই BIOS boot হলে reboot শুরু হওয়ার সঙ্গে সঙ্গে Shift ধরে রাখুন, অথবা UEFI boot হলে Esc বারবার চাপুন।
  3. Advanced options for Ubuntu নির্বাচন করুন। এরপর (recovery mode) দিয়ে শেষ হওয়া entry নির্বাচন করুন। তারপর recovery menu-তে root নির্বাচন করুন।
  4. প্রথমে mount -o remount,rw / চালান। Recovery root filesystem-কে read-only হিসেবে mount করে। তাই এটি না চালালে passwd ব্যর্থ হয়, কারণ এটি /etc/shadow-এ লিখতে পারে না এবং passwd: Authentication token manipulation error দেখায়।
  5. যে account-এর জন্য password পরিবর্তন করতে হবে, তার জন্য passwd ubuntu চালান। এরপর panel থেকে reboot করুন।

root account-এ আগে থেকেই password সেট করা থাকলে এবং হারিয়ে যাওয়া password-টি সেটিই হলে recovery shell সেই password চাইবে। তখন এই পদ্ধতিতে এগোনো যাবে না। পরিবর্তে provider-এর rescue image দিয়ে boot করুন। এরপর আসল disk mount করে তার ভেতরে password পরিবর্তন করুন।

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

এই page থেকে /dev/vda1 কপি না করে lsblk-এর output দেখে partition layout নির্ধারণ করুন। root partition-টি বড় partition। UEFI image-এ এর পাশে একটি ছোট EFI partition থাকে। সেখানে কোনো /etc directory থাকে না।

SSH আপনার password গ্রহণ করা বন্ধ করলে করণীয়

আপনার চালু থাকা session থেকেই কাজ করুন। কোনো session চালু না থাকলে console ব্যবহার করুন।

Permission denied, please try again. এর অর্থ হলো সার্ভার password authentication প্রস্তাব করেছে, কিন্তু আপনার পাঠানো password প্রত্যাখ্যান করেছে। সাধারণ কারণ হলো caps lock চালু থাকা অথবা console-এর keyboard layout password সেট করার সময় ব্যবহৃত layout থেকে ভিন্ন হওয়া।

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

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

KbdInteractiveAuthentication yes-এর পাশাপাশি PasswordAuthentication no চালু থাকলেও password ব্যবহার করা যায়, কারণ keyboard-interactive method একই PAM stack চালায়। একটিকে বন্ধ রেখে অন্যটিকে চালু রাখলেই এমন সার্ভার তৈরি হয়, যা key-only মনে হলেও টাইপ করা password গ্রহণ করে।

প্রত্যাখ্যাত key login-এর ক্ষেত্রেও একই line প্রদর্শিত হয়। তাই আপনি যদি password-এর বদলে key পাঠিয়ে থাকেন, সার্ভারের password setting হলো Permission denied (publickey)-এর পেছনের পাঁচটি ত্রুটির মধ্যে শুধু একটি। আপনার ক্ষেত্রে কোনটি ঘটেছে, তা ssh -v output জানায়।

Disconnect message-এ Too many authentication failures থাকার অর্থ হলো connection সার্ভারের MaxAuthTries allowance শেষ করে ফেলেছে, যার default মান 6 attempts। সাধারণত এমন হয় যখন কোনো client password-এ পৌঁছানোর আগে একাধিক key পাঠায়। একটি method নির্দিষ্ট করে দিন:

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

এক মিনিট আগে কাজ করা কোনো port-এ Connection refused দেখা গেলে সাধারণত এর অর্থ হলো SSH পর্যবেক্ষণ করা fail2ban repeated failure-এর পরে আপনার address ban করেছে। এর default ban rule packet drop না করে সেটি reject করে। তাই connection timeout না হয়ে দ্রুত refusal ফিরে আসে। Console থেকে sudo fail2ban-client status sshd banned address-গুলোর তালিকা দেখায় এবং sudo fail2ban-client set sshd unbanip 203.0.113.10 আপনার address-এর ban তুলে দেয়।

পাসওয়ার্ড একটি অন্তর্বর্তী ধাপ, key-ই চূড়ান্ত ব্যবস্থা

SSH-তে কাজ করে এমন একটি password হলো এমন একটি password, যা Internet-এর প্রতিটি scanner অনুমান করার চেষ্টা করতে পারে। key based authentication-এ পরিবর্তন করলে এই guessing আর কার্যকর থাকে না। একটি key pair তৈরি করুন, public অংশটি ইনস্টল করুন, এবং অন্য কিছু পরিবর্তন করার আগে দ্বিতীয় terminal থেকে key দিয়ে login হচ্ছে কি না নিশ্চিত করুন। SSH key management-এর প্রাথমিক বিষয়-এ generation, authorized_keys এবং passphrase সম্পর্কে বলা হয়েছে।

এরপর password authentication বন্ধ করুন এবং যে file সম্পাদনা করেছেন, সেটির ওপর নির্ভর না করে sudo sshd -T দিয়ে পরিবর্তনটি নিশ্চিত করুন। VPS-এ SSH hardening-এ পরিবর্তনযোগ্য sshd settings-এর বাকি অংশ দেখানো হয়েছে, আর নতুন VPS-এ প্রথম দশ মিনিট-এ fresh server-এ এগুলো কোন ক্রমে করতে হবে তা দেওয়া হয়েছে।

এর পরে একটি password রেখে দিন। key-only server-এ sshd config নষ্ট হলে provider console ছাড়া আর কোনোভাবে সেখানে পৌঁছানো যায় না, এবং ওই console-এ username ও password চায়। আপনার সংরক্ষণ করা একটি শক্তিশালী password-সহ account-ই পাঁচ মিনিটের repair এবং পুনরায় install করার মধ্যে পার্থক্য তৈরি করে।

FAQ

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

sudo চালাতে পারে এমন কোনো user হিসেবে লগ ইন করে sudo passwd root চালান। এটি পুরোনো পাসওয়ার্ড না চেয়েই নতুন পাসওয়ার্ড সেট করে, কারণ sudo ইতিমধ্যে আপনাকে authenticate করেছে। সিস্টেমে কোনো account sudo চালাতে না পারলে provider console খুলুন, GRUB recovery menu-তে reboot করুন, root shell entry বেছে নিন, mount -o remount,rw / চালান, তারপর passwd চালান। root-এর পাসওয়ার্ড আগে থেকেই সেট করা থাকলে এবং আপনি সেটিই ভুলে গেলে recovery shell সেটি চাইবে। সে ক্ষেত্রে বাকি উপায় হলো provider-এর rescue image ব্যবহার করা, যেখানে disk mount করে chroot করতে হবে।

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

দুটি কারণে এই message দেখা যায়। সাধারণ কারণ হলো Current password: prompt-এ ভুল উত্তর দেওয়া। এর নিচের passwd: password unchanged line নিশ্চিত করে যে কিছুই লেখা হয়নি। অন্য কারণ হলো এমন filesystem-এ লেখা সম্ভব নয়। recovery mode-এ এটাই ঘটে, কারণ সেখানে / read-only হিসেবে mount করা থাকে। mount -o remount,rw / চালিয়ে আবার চেষ্টা করুন।

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

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

পাসওয়ার্ড পরিবর্তন করলে কি SSH key বা খোলা session নষ্ট হবে?

পাসওয়ার্ড পরিবর্তন বা passwd -l করলে তা হবে না। Public key authentication পাসওয়ার্ড hash পরীক্ষা করে না। তাই যেকোনো একটি পরিবর্তনের পরও key কাজ করবে। chage -d 0 আলাদা। key login-এর পরও sshd PAM account check চালায়। এই check-গুলো /etc/shadow-এর password aging field পড়ে। তাই পাসওয়ার্ডের মেয়াদ শেষ হলে key login নতুন পাসওয়ার্ড চাইবে এবং scripted SSH command ব্যর্থ হবে। ইতিমধ্যে খোলা session চালু থাকবে, কারণ SSH শুধু login-এর সময় credentials পরীক্ষা করে। চলমান session-এর ভেতরে যে একমাত্র বিষয়টি বদলায় তা হলো sudo। এর 15 minute timestamp শেষ হলে এটি একবার নতুন পাসওয়ার্ড চায়।

পরবর্তী login-এ কোনো user-কে পাসওয়ার্ড পরিবর্তন করতে বাধ্য করব কীভাবে?

sudo chage -d 0 deploy চালান, অথবা sudo passwd -e deploy চালান; দুটিই একই কাজ করে। সংরক্ষিত last-change date epoch-এ চলে যায়। PAM পাসওয়ার্ডটিকে expired হিসেবে ধরে। পরবর্তী interactive login-এ shell চালু হওয়ার আগে নতুন পাসওয়ার্ড সেট করতেই হবে। SSH-এর মাধ্যমে script ব্যবহার করে এমন account-এ এটি করবেন না। কারণ non-interactive command তখন Password change required but no TTY available.-সহ ব্যর্থ হবে এবং কখনো চালু হবে না।

এই লেখাটি কি কাজে লেগেছে?

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