دسته بندی:

تغییر رمز عبور سرور لینوکس اوبونتو و فعال‌سازی ورود root

تغییر رمز عبور سرور لینوکس اوبونتو و فعال‌سازی ورود root

حدود ۹ دقیقه مطالعه

رمز عبور سرور لینوکسی‌تان را می‌خواهید عوض کنید — چه برای بالا بردن امنیت، چه بعد از تحویل گرفتن سرور جدید یا تغییر سیستم عامل سرور مجازی. تمام کار با دستور passwd انجام می‌شود، اما دو نکته تازه‌کارها را گیر می‌اندازد: کاربر عادی فقط می‌تواند رمز خودش را عوض کند، و در اوبونتو کاربر root به‌صورت پیش‌فرض رمزی ندارد و حسابش قفل است و از راه SSH هم اجازه ورود مستقیم به آن داده نشده است. در ادامه هر دو موضوع را پوشش می‌دهیم. اگر سرور شما ویندوزی است یا رمز فعلی را در اختیار ندارید، آموزش تغییر پسورد سرور مجازی هر دو حالت را جدا پوشش داده است.

تغییر رمز عبور سرور لینوکس اوبونتو

پسورد سرور اوبونتو با دستور passwd تغییر می‌کند. این دستور بخشی از خود لینوکس است و مخصوص اوبونتو نیست؛ روی Debian، AlmaLinux، Rocky Linux و CentOS هم دقیقاً به همین شکل کار می‌کند.

مرحله اول: گرفتن دسترسی root

  • ترمینال یا کلاینت SSH مورد استفاده خودتان را باز کنید (ما در این آموزش از putty استفاده می‌کنیم).
  • اگر پشت خود سیستم عامل نشسته‌اید، با کلیدهای ترکیبی ctrl+alt+t هم می‌توانید ترمینال را باز کنید.
  • اگر با یک کاربر معمولی وارد شده‌اید، ابتدا دسترسی root بگیرید. دستور زیر را وارد کنید و رمز عبور همان کاربر فعلی (نه رمز root) را بنویسید و Enter بزنید.
sudo -i

دستور sudo su - هم همین کار را می‌کند. اگر sudo su را بدون خط تیره بزنید، دسترسی root را می‌گیرید ولی متغیرهای محیطی کاربر قبلی باقی می‌مانند؛ برای کارهای مدیریتی حالت با خط تیره (یا sudo -i) تمیزتر است.

ورود برای تغییر رمز عبور اوبونتو
خروجی دستور sudo -i در ترمینال برای گرفتن دسترسی root در اوبونتو

مرحله دوم: دستور passwd

حالا که با دسترسی root وارد شده‌اید، دستور passwd بدون هیچ گزینه‌ای رمز کاربر فعلی را عوض می‌کند — و کاربر فعلی ما root است.

passwd

پس از وارد کردن دستور بالا از شما خواسته می‌شود رمز عبور جدید را وارد کنید، سپس همان را یک بار دیگر تکرار کنید. در پایان پیام passwd: password updated successfully را می‌بینید.

تغییر رمز سرور لینوکس اوبونتو

مرحله سوم: خروج

از دسترسی root و سپس از ترمینال خارج شوید:

exit

دستور logout هم همین کار را می‌کند. توجه کنید که لینوکس به بزرگی و کوچکی حروف حساس است؛ باید exit با حروف کوچک تایپ شود، نه Exit.

از این به بعد برای هر بار ورود به سرور یا انجام هر عملیات محدودشده، رمز عبور جدید از شما درخواست می‌شود؛ پس آن را جایی امن نگه دارید.

راه جایگزین: تغییر رمز root با یک دستور

اگر نمی‌خواهید اول shell روت را بگیرید، می‌توانید در یک خط رمز root را عوض کنید:

sudo passwd root

پس از اجرا، ابتدا رمز کاربر فعلی از شما پرسیده می‌شود (اگر تازه sudo زده باشید ممکن است نپرسد) و بعد رمز جدید root را دو بار وارد می‌کنید.

تغییر پسورد سیستم عامل سرور اوبونتو لینوکس

چرا موقع تایپ رمز چیزی روی صفحه نمی‌بینید

رایج‌ترین سوالی که تازه‌کارها بعد از زدن passwd می‌پرسند همین است. وقتی لینوکس رمز عبور می‌خواهد، عمداً هیچ کاراکتری روی صفحه چاپ نمی‌کند؛ نه ستاره و نه نقطه. این رفتار یک اقدام امنیتی است تا کسی از روی شانه شما حتی طول رمز را هم نبیند. پس تعجب نکنید و فکر نکنید کیبورد کار نمی‌کند: رمز را کامل تایپ کنید و Enter بزنید.

تغییر رمز کاربران دیگر و بررسی وضعیت رمز

اگر می‌خواهید رمز کاربر دیگری را عوض کنید، نام او را جلوی دستور بیاورید (این کار فقط با دسترسی root یا sudo ممکن است):

passwd username

برای دیدن وضعیت رمز یک کاربر — اینکه اصلاً رمز دارد، قفل است یا خیر — از گزینه -S استفاده کنید (این هم دسترسی root می‌خواهد):

passwd -S root

حرف دوم خروجی مهم است: P یعنی رمز فعال دارد، L یعنی حساب قفل است و NP یعنی اصلاً رمزی تعریف نشده. روی یک اوبونتوی تازه‌نصب معمولاً root L می‌بینید. قفل و باز کردن یک حساب هم با passwd -l username و passwd -u username انجام می‌شود — اما مراقب باشید: اگر حساب تنها کاربری را که با آن به سرور دسترسی دارید قفل کنید، خودتان از سرور بیرون می‌مانید.

چرا با کاربر root نمی‌توانید مستقیم وارد اوبونتو شوید

اوبونتو پس از نصب، برخلاف بعضی توزیع‌های دیگر، اجازه ورود مستقیم با root از طریق SSH را نمی‌دهد. دلیلش دو چیز جداگانه است و برای فعال کردن این قابلیت باید هر دو را حل کنید:

  • حساب root در اوبونتو قفل است و رمز ندارد (خروجی passwd -S root را ببینید). به همین دلیل است که همه کارهای مدیریتی از راه sudo انجام می‌شود.
  • سرویس SSH با تنظیم PermitRootLogin ورود root با رمز عبور را مسدود کرده است.

قبل از ادامه یک هشدار جدی: باز کردن ورود مستقیم root با رمز عبور روی سروری که پورت SSH آن روی اینترنت باز است، پرخطر است؛ ربات‌های حمله brute force دقیقاً همین کاربر را هدف می‌گیرند. اگر واقعاً به آن نیاز دارید ادامه دهید، ولی بخش «روش امن‌تر» در انتهای همین مطلب را حتماً بخوانید. پیش از دست زدن به کانفیگ هم یک نسخه پشتیبان بگیرید:

cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

گام ۱: برای root رمز تعریف کنید

با کاربری که هنگام نصب سیستم عامل ساخته‌اید وارد شوید، دسترسی root بگیرید و رمز تعریف کنید — همان کاری که بالاتر توضیح دادیم:

sudo -i
passwd root

گام ۲: فایل کانفیگ SSH را ویرایش کنید

nano /etc/ssh/sshd_config

با کلیدهای ترکیبی ctrl+w جستجوگر nano را باز کنید، عبارت permitrootlogin را تایپ کنید و Enter بزنید تا به خط مورد نظر برسید.

مقدار پیش‌فرض در اوبونتو معمولاً یکی از این دو است:

PermitRootLogin prohibit-password

در نسخه‌های قدیمی‌تر همین تنظیم با نام without-password نوشته می‌شد. از OpenSSH نسخه ۷.۰ به بعد نام رسمی آن prohibit-password است و without-password فقط به‌عنوان نام قدیمی و منسوخ هنوز پذیرفته می‌شود. هر کدام را دیدید، معنایش یکی است: root می‌تواند با کلید SSH وارد شود ولی با رمز عبور نه.

مقدارهای مجاز این تنظیم:

  • yes — ورود root با رمز عبور و با کلید، هر دو مجاز است.
  • prohibit-password — فقط ورود با کلید SSH (پیشنهاد ما).
  • forced-commands-only — فقط اجرای دستور از پیش تعیین‌شده با کلید.
  • no — ورود root به‌کلی مسدود است.

برای فعال کردن ورود با رمز، خط را به شکل زیر تغییر دهید و اگر ابتدای آن علامت # هست آن را بردارید:

PermitRootLogin yes
ویرایش خط PermitRootLogin در فایل sshd_config با nano

خط PasswordAuthentication را هم پیدا کنید؛ اگر روی no است، ورود با رمز برای همه کاربران بسته است و تغییر بالا به‌تنهایی کاری نمی‌کند:

PasswordAuthentication yes

برای ذخیره در nano کلیدهای ctrl+x را بزنید، سپس y را برای تایید ذخیره و در آخر Enter را برای تایید نام فایل بزنید. فقط زدن ctrl+x کافی نیست و بدون دو مرحله بعدی، تغییرات ذخیره نمی‌شوند.

گام ۳: مراقب فایل‌های داخل sshd_config.d باشید

این نکته‌ای است که در نسخه‌های جدید اوبونتو خیلی‌ها را سردرگم می‌کند. در اوبونتو ۲۲.۰۴ و بالاتر، در ابتدای فایل sshd_config خطی مثل زیر وجود دارد:

Include /etc/ssh/sshd_config.d/*.conf

در OpenSSH اولین مقداری که برای هر تنظیم خوانده شود برنده است، نه آخرین مقدار. چون این خط Include بالای فایل قرار دارد، هر چیزی که داخل پوشه /etc/ssh/sshd_config.d/ نوشته شده باشد بر تغییری که شما پایین‌تر در فایل اصلی دادید اولویت دارد. روی ایمیج‌های ابری اوبونتو معمولاً فایلی مانند 60-cloudimg-settings.conf در همین پوشه هست که PasswordAuthentication no را ست می‌کند. محتوای پوشه را ببینید:

ls /etc/ssh/sshd_config.d/

اگر فایلی آنجا بود، تنظیم را داخل همان فایل اصلاح کنید (یا خط متناقض را از آن حذف کنید). برای اطمینان از اینکه در نهایت چه مقداری اعمال می‌شود، از خروجی نهایی خود sshd بپرسید:

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

گام ۴: تست کانفیگ و ریستارت سرویس SSH

قبل از ریستارت، صحت فایل کانفیگ را بررسی کنید. اگر خطای نگارشی داشته باشید و سرویس بالا نیاید، ممکن است دسترسی خودتان به سرور قطع شود:

sshd -t

اگر این دستور چیزی چاپ نکرد یعنی کانفیگ سالم است. حالا سرویس را ریستارت کنید:

systemctl restart ssh

نام سرویس در اوبونتو و دبیان ssh است، اما در AlmaLinux، Rocky Linux و CentOS نام آن sshd است:

systemctl restart sshd

دستور قدیمی service ssh restart هنوز کار می‌کند ولی فقط درخواست را به systemd پاس می‌دهد، و اسکریپت /etc/init.d/ssh روی اوبونتوی امروزی دیگر وجود ندارد؛ پس مستقیم از systemctl استفاده کنید. ضمناً از اوبونتو ۲۲.۱۰ به بعد سرویس SSH به‌صورت socket activation بالا می‌آید؛ یعنی ssh.socket روی پورت گوش می‌دهد و sshd فقط هنگام برقراری اتصال اجرا می‌شود. برای تغییرات معمولِ کانفیگ همان systemctl restart ssh کافی است، اما اگر بخواهید پورت SSH را عوض کنید، در این حالت خط Port داخل sshd_config نادیده گرفته می‌شود و باید پورت را روی خود واحد ssh.socket تنظیم کنید و بعد این دو دستور را بزنید:

systemctl daemon-reload
systemctl restart ssh.socket

یک نکته عملی مهم: نشست SSH فعلی خود را نبندید. یک پنجره جدید باز کنید و ورود با root را در آن تست کنید. اگر چیزی اشتباه پیش رفت، هنوز از نشست قدیمی به سرور دسترسی دارید و می‌توانید کانفیگ را برگردانید. بعد از موفقیت‌آمیز بودن تست، می‌توانید مستقیماً با کاربر root و نرم‌افزار putty وارد ترمینال لینوکس خود شوید.

روش امن‌تر: کلید SSH به‌جای رمز عبور

برای سروری که روی اینترنت است، ورود با کلید SSH از هر رمزی امن‌تر است. در این حالت لازم نیست PermitRootLogin را روی yes بگذارید؛ مقدار prohibit-password اجازه ورود root با کلید را می‌دهد و در عین حال حمله‌های رمز را بی‌اثر می‌کند.

یک نکته که خیلی‌ها را زمین می‌زند: تا وقتی حساب root قفل است و کلیدی هم ندارد، ssh-copy-id root@server-ip جواب نمی‌دهد، چون اصلاً نمی‌توانید به‌عنوان root وارد شوید. پس اول کلید را برای کاربر معمولی خودتان بفرستید:

ssh-copy-id user@server-ip

سپس از داخل سرور، همان کلید را برای root هم اضافه کنید:

sudo mkdir -p /root/.ssh
sudo chmod 700 /root/.ssh
cat ~/.ssh/authorized_keys | sudo tee -a /root/.ssh/authorized_keys
sudo chmod 600 /root/.ssh/authorized_keys

(اگر قبلاً برای root رمز گذاشته‌اید و PermitRootLogin yes فعال است، می‌توانید مستقیم همان ssh-copy-id root@server-ip را بزنید.)

اگر هم ناچار به استفاده از رمز هستید، رمزی انتخاب کنید که حدس‌زدنی نباشد و در جای دیگری تکرار نشده باشد. عوض کردن پورت پیش‌فرض SSH هم یک لایه اضافه می‌سازد و حجم زیادی از تلاش‌های خودکار ورود را حذف می‌کند؛ مراحلش در تغییر پورت سرور آمده است.

اگر رمز فعلی را در اختیار ندارید

همه روش‌های بالا فرض می‌کنند هنوز به سرور دسترسی دارید. اگر رمز root را کامل از دست داده‌اید و هیچ کاربر sudo دیگری هم ندارید، باید از کنسول مجازی‌ساز رمز را ریست کنید؛ مسیر این کار را در عوض کردن پسورد سرور اختصاصی توسط vSphere نوشته‌ایم.

در صورت بروز هرگونه مشکل، سوال و یا نیاز به کمک می‌توانید با تیم پشتیبانی آنلاین سرور ارتباط برقرار کنید.

آموزش‌های مرتبط

ارسال نظر