Как восстановить сервер Amazon Lightsail, если у вас нет доступа по SSH.
در این مقاله روش‌های ریکاوری سرور Amazon Lightsail بدون دسترسی SSH را بررسی می‌کنیم.

Как восстановить сервер Amazon Lightsail, если у вас нет доступа по SSH.

В этой статье мы покажем, как восстановить сервер Amazon Lightsail, если у вас нет доступа по SSH. Мы подробно и пошагово рассмотрим различные методы и инструменты, необходимые для восстановления доступа и данных.
0 Акции
0
0
0
0

چه‌کاری انجام دهیم وقتی دسترسی SSH به سرور Lightsail قطع شده؟

در محیط‌های production، از دست رفتن دسترسی SSH به یک سرور Amazon Lightsail می‌تواند باعث توقف سرویس‌ها و خسارت شود. در ادامه یک راهنمای قدم‌به‌قدم فنی و عملی برای ریکاوری سروری که دسترسی SSH ندارد آورده شده است: از چک‌های سریع تا روش Rescue با snapshot و اتصال دیسک به یک instance کمکی.

دلایل معمول از دست رفتن SSH

چند دلیل رایج که باعث قطع دسترسی SSH می‌شوند:

  • تغییر یا خراب شدن /etc/ssh/sshd_config
  • خطا در مجوزهای فایل ~/.ssh Или /root/.ssh (permissions)
  • پاک شدن یا خراب شدن فایل авторизованные_ключи
  • پُر بودن دیسک که مانع راه‌اندازی sshd یا نوشتن لاگ می‌شود
  • تغییرات فایروال داخلی (УФВ/iptables) یا فایروال Lightsail (Networking → Firewall)
  • حذف یا خراب شدن بسته openssh-server
  • مشکلات SELinux یا AppArmor
  • گم شدن کلید خصوصی محلی یا اشتباه در Key Pair
  • سیستمی که به‌صورت نادرست بوت می‌شود یا خطای فایل‌سیستم

مرحلهٔ صفر — چک‌های سریع (قبل از هر اقدام سنگین)

قبل از شروع روش‌های پیچیده‌تر، این موارد را بررسی کنید تا سریع‌تر به راه‌حل برسید.

  • در پنل Lightsail وضعیت instance را بررسی کنید (running / stopped).
  • В разделе Нетворкинг مطمئن شوید قانون SSH (TCP 22) فعال است.
  • دکمه Connect using SSH (browser-based) در پنل Lightsail را امتحان کنید.
  • اگر تغییرات فایروال در سرور احتمال دارد، از کنسول لاگ‌ها یا CloudWatch لاگ‌ها بررسی کنید.
  • در صورت دسترسی به کنسول سریال لاگ‌های ssh را بررسی کنید: journalctl -u sshd -b Или tail -n 200 /var/log/auth.log

روش‌های ریکاوری — از آسان تا پیشرفته

در این بخش روش‌ها به ترتیب از کم‌دردسر تا کامل توضیح داده شده‌اند.

1) استفاده از اتصال کنسول وب (Browser-based SSH) یا Serial Console

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

2) بررسی فایروال Lightsail

در پنل Lightsail → Networking → Firewall بررسی کنید که Rule برای پورت 22 وجود داشته باشد:

  • Protocol: TCP
  • Port range: 22

اگر بسته شده بود، آن را باز کنید و دوباره تلاش کنید.

3) در صورت گم شدن کلید خصوصی — دانلود کلید پیش‌فرض منطقه‌ای

Lightsail کلیدهای SSH را بر اساس منطقه مدیریت می‌کند. به Account → SSH keys بروید و کلید مربوط به منطقه خود را دانلود کنید. سپس با آن امتحان کنید:

ssh -i ~/.ssh/lightsail_default_key.pem ubuntu@<public-ip>

4) بررسی فضای دیسک و راه‌اندازی مجدد سرویس‌ها (اگر به کنسول دسترسی دارید)

اگر کنسول وب باز شود، ابتدا فضای دیسک را چک کنید و در صورت پر بودن عملیات پاکسازی را انجام دهید.

df -h
sudo journalctl --vacuum-time=2d
sudo apt-get autoremove -y
sudo journalctl -u ssh -b --no-pager
sudo tail -n 200 /var/log/auth.log

5) روش Rescue اصلی: snapshot → ساخت دیسک/instance کمکی → mount → chroot → اصلاح تنظیمات

این روش زمانی کاربرد دارد که کنسول نیز وصل نشود یا فایل‌های سیستمی نیاز به اصلاح داشته باشند.

گام‌های کلی:

  1. از instance مورد نظر یک Snapshot بگیرید (Lightsail → Create snapshot).
  2. از این snapshot یک block storage disk یا یک instance جدید بسازید.
  3. یک instance کمکی (Rescue instance) با همان توزیع بسازید.
  4. دیسک ساخته‌شده را به Rescue instance متصل کنید.
  5. در Rescue instance لاگین کرده و دیسک را پیدا کنید با lsblk و سپس mount کنید.

نمونه دستورات برای mount و chroot (فرض شود دیسک به /dev/xvdf1 متصل شده):

sudo lsblk
sudo mkdir -p /mnt/rescue
sudo mount /dev/xvdf1 /mnt/rescue
sudo mount --bind /dev /mnt/rescue/dev
sudo mount --bind /proc /mnt/rescue/proc
sudo mount --bind /sys /mnt/rescue/sys
sudo chroot /mnt/rescue /bin/bash

در محیط chroot اقدامات مهم شامل:

  • بازگردانی авторизованные_ключи برای کاربر مناسب
  • نصب یا بازسازی openssh-server
  • بررسی و اصلاح /etc/ssh/sshd_config
  • فعال‌سازی سرویس ssh

نمونه دستورات داخل chroot:

mkdir -p /home/ubuntu/.ssh
echo "ssh-rsa AAAA... your-public-key ..." >> /home/ubuntu/.ssh/authorized_keys
chown -R ubuntu:ubuntu /home/ubuntu/.ssh
chmod 700 /home/ubuntu/.ssh
chmod 600 /home/ubuntu/.ssh/authorized_keys
apt-get update && apt-get install --reinstall openssh-server -y
# Ensure sshd config allows key auth and, if needed temporarily, password auth
# Example: PubkeyAuthentication yes, PermitRootLogin prohibit-password, PasswordAuthentication yes
systemctl enable ssh
systemctl restart ssh

خروج از chroot و آن‌مانت کردن دیسک:

exit
sudo umount /mnt/rescue/sys
sudo umount /mnt/rescue/proc
sudo umount /mnt/rescue/dev
sudo umount /mnt/rescue

در نهایت دیسک را جدا کرده و یا به instance اصلی دوباره متصل کنید یا از آن یک instance جدید بسازید و static IP را در Lightsail منتقل کنید.

6) جایگزینی کامل با instance از snapshot (کم‌دردسر و سریع)

اگر نمی‌خواهید با mount/chroot درگیر شوید:

  • از snapshot یک instance جدید بسازید.
  • با کلید پیش‌فرض یا کنسول وب به instance جدید متصل شوید.
  • در صورت نیاز static IP قبلی را از instance قدیمی جدا کرده و به instance جدید الصاق کنید.

این روش سریع است ولی ممکن است نیاز به تنظیمات شبکه یا device-specific داشته باشد.

7) ریست کردن رمز عبور و برای ویندوز

برای لینوکس‌هایی که Аутентификация по паролю فعال است می‌توانید در chroot با passwd username رمز را تغییر دهید.

برای Windows Lightsail معمولاً امکان استخراج رمز RDP از پنل Lightsail وجود دارد یا از snapshot برای ساخت instance جدید استفاده کنید.

چک‌لیست و دستورات مفید برای عیب‌یابی پس از ریکاوری

  • بررسی مجوزها و فایل‌های ssh:
    sudo ls -la /home/ubuntu/.ssh
    sudo stat -c "%a %n" /home/ubuntu/.ssh /home/ubuntu/.ssh/authorized_keys
  • بررسی سرویس ssh:
    sudo systemctl status ssh
    sudo journalctl -u ssh -n 200
  • بررسی فایروال:
    sudo ufw status verbose
    sudo iptables -L -n -v
  • بررسی فضای دیسک و لاگ‌ها:
    df -h
    du -sh /var/log/*
    sudo tail -n 200 /var/log/auth.log
    sudo tail -n 200 /var/log/syslog

نکات امنیتی و بهترین شیوه‌ها برای جلوگیری از قفل شدن مجدد

  • همیشه حداقل یک کلید SSH اضافی В авторизованные_ключи نگه دارید (کلید همکار یا پشتیبان).
  • От configuration management مثل Ansible/Chef/Puppet برای اعمال تغییرات حساس استفاده کنید تا تغییرات قابل بازگشت باشند.
  • از snapshots دوره‌ای و خودکار استفاده کنید.
  • برای جلوگیری از حملات از فایروال شبکه و ابزارهایی مثل fail2ban استفاده کنید و دسترسی SSH را با IP whitelisting محدود کنید.
  • فعال کردن logging متمرکز (مثلاً ارسال لاگ‌ها به S3 یا سرور لاگ خارجی) تا در صورت مشکل لاگ‌ها قابل دسترسی باشند.
  • از لاگین مستقیم root خودداری کنید؛ از یک کاربر با судо Использовать.

مثال عملی — سناریو: authorized_keys پاک شده است

مسئله: کلید محلی کار نمی‌کند و авторизованные_ключи حذف شده.

راه حل سریع: snapshot → دیسک → attach به rescue instance → mount → بازگردانی авторизованные_ключи → reattach یا ساخت instance جدید → attach static IP.

sudo lsblk
sudo mount /dev/xvdf1 /mnt/rescue
sudo mkdir -p /mnt/rescue/home/ubuntu/.ssh
sudo echo "ssh-rsa AAAA... your-public-key" >> /mnt/rescue/home/ubuntu/.ssh/authorized_keys
sudo chown -R 1000:1000 /mnt/rescue/home/ubuntu/.ssh
sudo chmod 700 /mnt/rescue/home/ubuntu/.ssh
sudo chmod 600 /mnt/rescue/home/ubuntu/.ssh/authorized_keys

وقتی همه راه‌ها شکست خورد — تماس با پشتیبانی و بازیابی داده

اگر امکان تنظیم دستی وجود نداشته باشد یا data integrity در خطر باشد:

  • از snapshot های قبلی استفاده کنید یا با پشتیبانی Lightsail/AWS تماس بگیرید.
  • اگر سرویس حیاتی است و نیاز به مهاجرت فوری دارید، یک instance جدید بسازید و DNS یا static IP را به‌روزرسانی کنید تا سرویس ادامه یابد.

Заключение и окончательные рекомендации

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

  • اصلاح سریع از طریق console / بازگردانی کلید / باز کردن فایروال — کم‌هزینه و سریع
  • روش Rescue با snapshot و اتصال دیسک به یک instance کمکی برای mount و chroot — قوی‌تر و قابل بازیابی کامل فایل‌ها

با تهیه snapshot منظم و رعایت نکات امنیتی می‌توانید ریسک قفل شدن دسترسی SSH را به‌طور قابل توجهی کاهش دهید.

Часто задаваемые вопросы

Вам также может понравиться
Как установить Cockpit на Ubuntu 24.04

Как установить Cockpit в Ubuntu 24.04

Cockpit — это веб-панель управления серверами, которая позволяет осуществлять мониторинг, управление службами, хранилищем, журналами и пользователями в простом графическом интерфейсе. Использование Cockpit на VPS позволяет системным администраторам выполнять многие задачи по администрированию сервера без необходимости использования командной строки. Ниже мы пошагово расскажем, как установить, настроить безопасность и получить доступ к Cockpit.
Полное руководство по настройке репозитория APT на серверах Debian и Ubuntu.

Руководство по настройке репозитория пакетов pt на серверах Debian и Ubuntu.

В этой статье представлено полное и практическое руководство по настройке репозитория APT на серверах Debian и Ubuntu. Вы узнаете о различных методах, таких как dpkg-scanpackages, reprepro и aptly, а также получите советы по безопасности для оптимального управления этими репозиториями.
ModSecurity cPanel

Инструменты безопасности в cPanel — экспертное руководство

Если вы используете cPanel для управления хостингом своего сайта, вы, вероятно, знаете, что безопасность — один из краеугольных камней успеха вашего сайта и доверия пользователей. cPanel предоставляет вам широкий спектр инструментов для серьёзного повышения безопасности вашего сайта. В этой статье мы подробнее рассмотрим эти инструменты и предоставим ссылки на официальную документацию и другие статьи, которые помогут вам более уверенно настроить безопасность вашего хостинга.

Публикация и распространение шаблона в Node.js

Введение. Паттерн «издатель/подписчик» — это универсальный односторонний шаблон обмена сообщениями, в котором отправитель данных/сообщений…