- چهکاری انجام دهیم وقتی دسترسی SSH به سرور Lightsail قطع شده؟
- دلایل معمول از دست رفتن SSH
- مرحلهٔ صفر — چکهای سریع (قبل از هر اقدام سنگین)
- روشهای ریکاوری — از آسان تا پیشرفته
- 1) استفاده از اتصال کنسول وب (Browser-based SSH) یا Serial Console
- 2) بررسی فایروال Lightsail
- 3) در صورت گم شدن کلید خصوصی — دانلود کلید پیشفرض منطقهای
- 4) بررسی فضای دیسک و راهاندازی مجدد سرویسها (اگر به کنسول دسترسی دارید)
- 5) روش Rescue اصلی: snapshot → ساخت دیسک/instance کمکی → mount → chroot → اصلاح تنظیمات
- 6) جایگزینی کامل با instance از snapshot (کمدردسر و سریع)
- 7) ریست کردن رمز عبور و برای ویندوز
- چکلیست و دستورات مفید برای عیبیابی پس از ریکاوری
- نکات امنیتی و بهترین شیوهها برای جلوگیری از قفل شدن مجدد
- مثال عملی — سناریو: authorized_keys پاک شده است
- وقتی همه راهها شکست خورد — تماس با پشتیبانی و بازیابی داده
- 结论和最终建议
- 常见问题解答
چهکاری انجام دهیم وقتی دسترسی SSH به سرور Lightsail قطع شده؟
در محیطهای production، از دست رفتن دسترسی SSH به یک سرور Amazon Lightsail میتواند باعث توقف سرویسها و خسارت شود. در ادامه یک راهنمای قدمبهقدم فنی و عملی برای ریکاوری سروری که دسترسی SSH ندارد آورده شده است: از چکهای سریع تا روش Rescue با snapshot و اتصال دیسک به یک instance کمکی.
دلایل معمول از دست رفتن SSH
چند دلیل رایج که باعث قطع دسترسی SSH میشوند:
- تغییر یا خراب شدن
/etc/ssh/sshd_config - خطا در مجوزهای فایل
~/.ssh或者/root/.ssh(permissions) - پاک شدن یا خراب شدن فایل
授权密钥 - پُر بودن دیسک که مانع راهاندازی sshd یا نوشتن لاگ میشود
- تغییرات فایروال داخلی (
ufw/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.log5) روش Rescue اصلی: snapshot → ساخت دیسک/instance کمکی → mount → chroot → اصلاح تنظیمات
این روش زمانی کاربرد دارد که کنسول نیز وصل نشود یا فایلهای سیستمی نیاز به اصلاح داشته باشند.
گامهای کلی:
- از instance مورد نظر یک Snapshot بگیرید (Lightsail → Create snapshot).
- از این snapshot یک block storage disk یا یک instance جدید بسازید.
- یک instance کمکی (Rescue instance) با همان توزیع بسازید.
- دیسک ساختهشده را به Rescue instance متصل کنید.
- در 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 منتقل کنید.
vgchange -ay یا باز کردن رمز وجود داشته باشد.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 خودداری کنید؛ از یک کاربر با
sudo使用。.
PasswordAuthentication yes شدید، پس از حل مشکل آن را بلافاصله غیرفعال کنید تا ریسک امنیتی کاهش یابد.مسئله: کلید محلی کار نمیکند و 授权密钥 حذف شده.
راه حل سریع: 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 را بهطور قابل توجهی کاهش دهید.








