در اوبونتو، کاربر root بهصورت پیشفرض غیرفعال است. برخلاف بعضی توزیعهای دیگر، اوبونتو برای این کاربر رمز عبوری تعیین نمیکند و ورود مستقیم با آن را نمیپذیرد. به همین دلیل هنگام نصب، سیستم از شما یک نام کاربری معمولی میخواهد و اگر root وارد کنید، خطای رزرو بودن این نام را میبینید.
این تصمیم امنیتی است: کاربر root روی همه سرورهای دنیا یک نام ثابت دارد، پس نیمی از کار یک مهاجم از قبل انجام شده و فقط باید رمز را حدس بزند. با غیرفعال بودن آن، مهاجم باید نام کاربری را هم حدس بزند.
با این حال در مواردی مثل انتقال سرور، اجرای اسکریپتهای مدیریتی یا نصب برخی پنلها، نیاز به دسترسی مستقیم root پیش میآید. در این آموزش این کار را انجام میدهیم.
پیشنیازها
- یک سرور اوبونتو (نسخه ۲۰.۰۴، ۲۲.۰۴ یا ۲۴.۰۴)
- یک کاربر معمولی با دسترسی sudo
- اتصال SSH به سرور
برای اطمینان از دسترسی sudo این دستور را اجرا کنید:
sudo -v
اگر بدون خطا اجرا شد، دسترسی لازم را دارید.
گام ۱ — تعیین رمز عبور برای root
sudo passwd root
رمز را دو بار وارد کنید. رمز قوی انتخاب کنید — حداقل ۱۶ کاراکتر شامل حروف بزرگ و کوچک، عدد و علامت. این حساب هدف اصلی حملات خودکار است.
پیام passwd: password updated successfully یعنی کار با موفقیت انجام شد.
گام ۲ — اجازه ورود root از طریق SSH
فایل تنظیمات SSH را باز کنید:
sudo nano /etc/ssh/sshd_config
خط زیر را پیدا کنید:
#PermitRootLogin prohibit-password
آن را به شکل زیر تغییر دهید. توجه کنید که علامت # ابتدای خط حتماً باید حذف شود:
PermitRootLogin yes
با Ctrl+O ذخیره و با Ctrl+X خارج شوید.
گام ۳ — نکته مهمی که اغلب فراموش میشود
در اوبونتو ۲۲.۰۴ و ۲۴.۰۴، و بهویژه روی سرورهای مجازی که با ایمیج آماده نصب شدهاند، پوشهای به نام sshd_config.d وجود دارد که تنظیمات داخل آن بر فایل اصلی اولویت دارد.
اگر گام ۲ را انجام دادید و باز هم root وصل نشد، علت تقریباً همیشه همین است. محتوای این پوشه را بررسی کنید:
sudo grep -r PermitRootLogin /etc/ssh/sshd_config.d/
اگر خطی مانند PermitRootLogin prohibit-password یا PermitRootLogin no دیدید، همان فایل را ویرایش و مقدارش را به yes تغییر دهید:
sudo nano /etc/ssh/sshd_config.d/50-cloud-init.conf
گام ۴ — بررسی صحت تنظیمات و ریاستارت سرویس
پیش از ریاستارت، از درستی فایل مطمئن شوید:
sudo sshd -t
اگر خروجی خالی بود یعنی مشکلی وجود ندارد. حالا سرویس را ریاستارت کنید:
sudo systemctl restart ssh
توجه: در اوبونتو نام سرویس ssh است، نه sshd. اگر خطای Unit sshd.service not found گرفتید، دلیلش همین است.
سشن فعلی خود را نبندید. یک پنجره جدید باز کنید و ورود root را تست کنید. اگر چیزی اشتباه پیش رفت، هنوز از طریق سشن قبلی به سرور دسترسی دارید.
گام ۵ — تست اتصال
از سیستم خودتان:
ssh root@YOUR-SERVER-IP
رمزی که در گام ۱ ساختید را وارد کنید. اگر وارد شدید، کار تمام است.
رفع خطاهای رایج
Permission denied, please try again
تنظیم PermitRootLogin هنوز اعمال نشده است. گام ۳ را بررسی کنید؛ به احتمال زیاد فایلی در پوشه sshd_config.d تنظیم شما را بازنویسی میکند.
Connection refused
این خطا یعنی سرور روشن است و شبکه به آن میرسد، اما هیچ سرویسی روی پورت ۲۲ گوش نمیدهد. وضعیت سرویس را بررسی کنید:
sudo systemctl status ssh
Connection timed out
برخلاف مورد بالا، این خطا یعنی بستهها اصلاً به سرور نمیرسند؛ معمولاً فایروال یا مشکل شبکه. فایروال را بررسی کنید:
sudo ufw status
توصیههای امنیتی
فعال کردن root ورود به سرور را ساده میکند، اما سطح حمله را هم بالا میبرد. اگر این کار را انجام دادید، حداقل موارد زیر را رعایت کنید:
۱. بهجای رمز از کلید SSH استفاده کنید. پس از تنظیم کلید، مقدار زیر را قرار دهید تا ورود با رمز غیرفعال شود:
PermitRootLogin prohibit-password
۲. پورت SSH را تغییر دهید. بیشتر حملات خودکار فقط پورت ۲۲ را هدف میگیرند.
۳. Fail2ban نصب کنید تا آیپیهایی که رمز اشتباه وارد میکنند بهصورت خودکار مسدود شوند:
sudo apt update && sudo apt install fail2ban -y
۴. پس از اتمام کار، root را دوباره غیرفعال کنید:
sudo passwd -l root
سپس در فایل sshd_config مقدار را به PermitRootLogin no برگردانید و سرویس را ریاستارت کنید.
اگر در هر یک از مراحل بالا به مشکل خوردید، تیم پشتیبانی سیمبا سرور از طریق بخش تیکتها آماده کمک است.
سرور مجازی ایران با دسترسی کامل root
اگر هنوز سروری ندارید یا به سرور جدیدی نیاز دارید، سرورهای مجازی ایران سیمبا سرور با هارد NVMe و آپلینک آسیاتک، از ۷۵۰٬۰۰۰ تومان در ماه در دسترس هستند. دسترسی کامل root از همان ابتدا در اختیار شماست.
