عوض کردن پسورد سرور اختصاصی توسط Vspher
برای عوض کردن پسورد سرور اختصاصی از طریق vSphere باید از کنسول ماشین در vSphere Client استفاده کنید؛ کنسول دقیقاً معادل نشستن پشت کیبورد و مانیتور خود سرور است. در لینوکس سرور را با تغییر موقت پارامترهای بوت در GRUB به حالت تککاربره یا rescue میبرید و دستور passwd را اجرا میکنید، و در ویندوز یا از یک حساب Administrator دیگر پسورد را ریست میکنید یا از محیط ریکاوری. هر دو مسیر نیاز به ریاستارت دارند، پس قطعی سرویس را از قبل برنامهریزی کنید.
اول مطمئن شوید که راه سادهتری وجود ندارد
کنسول آخرین راه است، نه اولین. قبل از ریاستارت این گزینهها را بررسی کنید، چون هیچکدام قطعی ندارند:
- اگر با کلید SSH یا با کاربری در گروه
sudoیاwheelهنوز وارد میشوید، همانsudo passwd rootکافی است. - در ویندوز، اگر حساب Administrator دیگری فعال دارید، با آن RDP بگیرید و پسورد حساب قفلشده را عوض کنید.
- روی سرویسهای مدیریتشده مانند سرور مجازی ایران مدیریتشده، این کارها معمولاً بر عهده سرویسدهنده است.
رسیدن به کنسول در vSphere
با vSphere Client به vCenter یا مستقیم به هاست ESXi متعلق به VMware وصل شوید، ماشین موردنظر را انتخاب کنید و Launch Web Console یا Launch Remote Console را بزنید. از این لحظه هر چیزی که تایپ میکنید مستقیم به سرور میرسد، حتی وقتی شبکه یا سرویس SSH از کار افتاده باشد. اگر هنوز ESXi را تهیه نکردهاید یا درگیر مسئله لایسنس آن هستید، وضعیت امروز نسخه رایگان را در سریال VMware ESXi بررسی کردهایم.
اگر سرور اختصاصی شما فیزیکی است و هایپروایزر ندارد، معادل همین کنسول از طریق کارت مدیریتی مادربرد و KVM over IP در دسترس است؛ بسته به سازنده iDRAC، iLO یا IPMI نامیده میشود. فعال بودن این دسترسی به سرویسدهنده و مدل سرور بستگی دارد.
یک نکته عملی: در کنسول تحت وب چیدمان کیبورد ممکن است فرق کند و در تایپ سریع بعضی کلیدها جا میافتند. پس ابتدا یک پسورد ساده بگذارید و بعد از داخل SSH پسورد نهایی را تنظیم کنید.
ریست پسورد root در لینوکس
اگر سرور یک ماشین مجازی است، اول یک Snapshot بگیرید تا در صورت اشتباه بتوانید برگردید. Snapshot جایگزین بکاپ نیست و نگه داشتن طولانیمدت آن به کارایی و فضای دیسک آسیب میزند؛ بعد از پایان کار حذفش کنید.
روش init=/bin/bash
روی دبیان، اوبونتو و توزیعهایی که SELinux فعال ندارند:
- سرور را ریاستارت کنید و در منوی GRUB روی ورودی کرنل کلید
eرا بزنید. اگر منو نمایش داده نمیشود، هنگام بوت Shift یا Esc را نگه دارید. - خط شروعشونده با
linuxرا پیدا کنید و در انتهایشrw init=/bin/bashرا اضافه کنید. وجودrwمهم است، وگرنه فایلسیستم فقطخواندنی بالا میآید. - با
Ctrl+XیاF10بوت کنید تا یک شل root بدون پرسیدن پسورد بگیرید. - اگر خطای read-only گرفتید،
mount -o remount,rw /را اجرا کنید. passwd rootرا بزنید و در پایانsyncو سپسexec /sbin/initرا اجرا کنید تا بوت عادی ادامه پیدا کند.
روش rd.break در خانواده RHEL
روی RHEL، CentOS، Rocky و AlmaLinux بهخاطر SELinux مسیر کمی فرق دارد:
- در منوی GRUB کلید
eرا بزنید، در انتهای خطlinuxعبارتrd.breakرا اضافه کنید و باCtrl+Xبوت کنید. - در پرامپت switch_root دستور
mount -o remount,rw /sysrootو سپسchroot /sysrootو بعدpasswd rootرا اجرا کنید. - کاربرد همین دستور
passwdدر حالت عادی و برای کاربران غیر روت را در تغییر رمز عبور سرور لینوکس اوبونتو توضیح دادهایم. - دستور
touch /.autorelabelرا فراموش نکنید. بدون آن برچسب SELinux فایل shadow اشتباه میماند و باز هم نمیتوانید وارد شوید. - دو بار
exitبزنید. بوت بعدی بهخاطر برچسبگذاری دوباره فایلسیستم طولانیتر است؛ وسط کار سرور را خاموش نکنید.
وقتی ویرایش GRUB ممکن نیست
اگر منوی GRUB با پسورد محافظت شده باشد، باید از یک ISO نجات بوت کنید. در vSphere از Edit Settings سراغ CD/DVD Drive بروید، ISO را از دیتااستور انتخاب کنید، تیک Connect At Power On را بزنید و اولویت بوت را به درایو نوری بدهید. اگر روی یک VPS هستید و خودتان به هاست ESXi و دیتااستور دسترسی ندارید، اتصال ISO یا بالا آوردن ماشین در حالت rescue را باید از سرویسدهنده بخواهید. در محیط زنده پارتیشن ریشه را mount کنید، /proc و /sys و /dev را با mount --bind داخلش بیاورید، chroot کنید و passwd را بزنید. اگر دیسک با LUKS رمزنگاری شده و عبارت عبور را ندارید، تنها گزینه بازیابی از بکاپ است.
معادل همین کار در ویندوز سرور
اگر با یک حساب Administrator دیگر وارد میشوید، سادهترین راه اجرای compmgmt.msc و رفتن به Local Users and Groups سپس Users است؛ روی کاربر راست کلیک کنید و Set Password را بزنید. همین کار با یک خط در Command Prompt با دسترسی Administrator هم انجام میشود:
net user Administrator NewPassword
هشدار ویندوز موقع Set Password جدی است: با ریست پسورد یک حساب توسط حساب دیگر، فایلهای رمزنگاریشده با EFS، گواهیهای شخصی و پسوردهای ذخیرهشده در Credential Manager آن کاربر از دسترس خارج میشوند. اگر خود کاربر پسورد را با Ctrl+Alt+Del عوض کند، این اتفاق نمیافتد.
اگر هیچ حساب ادمینی در دسترس نیست، از کنسول vSphere ایمیج نصب ویندوز را متصل کنید، سیستم را در Windows Recovery Environment بالا بیاورید و پسورد را آفلاین ریست کنید؛ روش شناختهشده آن جایگزینی موقت یکی از ابزارهای دسترسپذیری صفحه ورود با cmd.exe است. سه نکته: با BitLocker فعال و بدون کلید بازیابی راه به جایی نمیبرید؛ روی Domain Controller حساب محلی وجود ندارد و این روش پاسخ نمیدهد؛ و هر فایلی که جابهجا کردهاید باید بلافاصله بعد از ورود به حالت اول برگردد، وگرنه یک در پشتی دائمی روی سرور میماند.
قطعی سرویس را دستکم نگیرید
روشهای کنسولی بالا به ریاستارت نیاز دارند و در تمام مدت بوت سرویسهای شما پایین هستند. چند نکته که ریسک را کم میکند:
- کار را در بازه کمترافیک انجام دهید و از قبل به تیم و کاربران اطلاع بدهید.
- در صورت نصب بودن VMware Tools، برای ریاستارت گزینه Restart Guest OS را به Power Off ترجیح دهید تا فایلسیستم سالم بسته شود.
- پیش از شروع مطمئن شوید بکاپ سالم و قابل بازگردانی دارید.
بعد از تغییر پسورد چه کنیم
پسورد جدید را در یک مدیر رمز عبور ذخیره کنید و اگر قرار است با root از راه دور وارد شوید، مقدار PermitRootLogin را در /etc/ssh/sshd_config بررسی کنید؛ در بسیاری از توزیعها ورود root با پسورد پیشفرض بسته است. بهتر است بهجای پسورد از کلید SSH استفاده کنید تا دفعه بعد به این مسیر نیفتید.
یک نکته امنیتی را هم نادیده نگیرید: اگر پسورد بدون دلیل مشخص کار نمیکرد، احتمال دستکاری هست. لاگهای ورود، فایل authorized_keys کاربران، کرونجابها و کاربران تازهساختهشده را بررسی کنید. اگر مطمئن نیستید، سپردن کار به خدمات پشتیبانی سرور منطقیتر از آزمون و خطا روی سرور تولیدی است.
