عملیاتي سیسټمونه

مدیریت سرور لینوکس با دستورات SSH: کدهای ضروری برای وبمسترها

  • 13 د لوستلو لپاره دقیقې
  • د Hostragons ټیم
مدیریت سرور لینوکس با دستورات SSH: کدهای ضروری برای وبمسترها

مدیریت سرور لینوکس با دستورات SSH، به وبمسترها کمک می‌کند تا به شکل امن به سرور لینوکس راه دور متصل شوند و فایل‌ها، سرویس‌ها، کاربران، لاگ‌ها، امنیت و عملکرد را مستقیماً از ترمینال کنترل کنند. با دستور ساده ssh کاربر@آی‌پی‌سرور به سرور وصل می‌شوید؛ سپس با دستورهایی مثل ls، cd، pwd، cp، mv، rm، nano، systemctl، journalctl، top، df، du، chmod، chown، tar، scp و rsync سایت را آنلاین کنید، خطاها را بررسی کنید، سرویس‌ها را ری‌استارت کنید و بک‌آپ بگیرید. این راهنما مخصوص کسانی است که از هاستینگ، VPS یا سرور اختصاصی استفاده می‌کنند و می‌خواهند عملیات روزانه را سریع و بدون دردسر انجام دهند.

مدیریت سایت فقط از طریق کنترل‌پنل همیشه کافی نیست. وقتی ترافیک بالا می‌رود، نرم‌افزار خاصی نیاز است، لاگ خطاها را باید چک کنید یا در لحظه مداخله لازم است، دانستن SSH مزیت بزرگی ایجاد می‌کند. مثلاً وقتی وردپرس خطای ۵۰۰ می‌دهد، به جای منتظر ماندن برای باز شدن پنل، با چند دستور ساده پر بودن دیسک، وضعیت PHP-FPM، لاگ‌های Nginx یا Apache و آخرین فایل‌های تغییر یافته را در چند دقیقه بررسی کنید. این کار هم زمان قطعی را کم می‌کند و هم به حفظ رتبه سئو کمک می‌کند. اگر هنوز سرور انتخاب نکرده‌اید، VPS سرور و ویب کوربه توب را با هم مقایسه کنید.

SSH چیست و چرا وبمسترها به آن نیاز دارند؟

SSH مخفف Secure Shell است و پروتکل امنی برای اتصال رمزگذاری‌شده به سرور راه دور محسوب می‌شود. FTP فقط برای انتقال فایل است، اما SSH کل محیط خط فرمان سرور را در اختیار شما قرار می‌دهد. می‌توانید به پوشه ریشه سایت بروید، دسترسی‌ها را اصلاح کنید، سرویس‌ها را ری‌استارت کنید، فایروال را چک کنید، بک‌آپ دیتابیس بگیرید و لاگ‌ها را زنده دنبال کنید.

از دید وبمستر، تسلط به SSH سه مزیت اصلی دارد: سرعت (فشرده‌سازی فایل‌های بزرگ داخل سرور به جای دانلود از پنل)، شفافیت (مشاهده مستقیم مصرف CPU، RAM، دیسک و لاگ‌ها) و کنترل کامل (حل سریع مشکلات دسترسی، کرش سرویس یا تنظیمات اشتباه). به‌خصوص در VPS، سرور ابری و سرور اختصاصی، SSH تقریباً ضروری است.

قبل از اتصال SSH چه چیزهایی باید بدانید؟

برای اتصال SSH معمولاً سه مورد لازم است: آی‌پی سرور یا دامنه، نام کاربری و روش احراز هویت. پورت پیش‌فرض در اکثر توزیع‌های لینوکس ۲۲ است، ولی برای امنیت بیشتر می‌توان آن را تغییر داد. دستور اتصال ساده: ssh کاربر@آی‌پی‌سرور. اگر پورت متفاوت باشد از ssh -p 2222 کاربر@آی‌پی‌سرور استفاده کنید.

اولین بار که وصل می‌شوید، ترمینال از شما می‌خواهد «اثر انگشت» سرور را تأیید کنید. با نوشتن Yes، سرور در فایل known_hosts ذخیره می‌شود. اگر بعداً سرور عوض شد یا آی‌پی تغییر کرد، هشدار امنیتی می‌بینید؛ در این حالت اول مطمئن شوید واقعاً به سرور درست وصل شده‌اید.

تفاوت ورود با رمز و کلید SSH

ورود با رمز ساده است ولی در برابر حملات brute force آسیب‌پذیرتر است. کلید SSH امن‌تر عمل می‌کند: کلید خصوصی روی کامپیوتر شما و کلید عمومی روی سرور قرار می‌گیرد. برای ساخت کلید از ssh-keygen -t ed25519 استفاده کنید و با ssh-copy-id کاربر@آی‌پی‌سرور کلید عمومی را به سرور بفرستید. بعد از راه‌اندازی کلید، بهتر است ورود با رمز را کاملاً غیرفعال کنید.

تفاوت ورود با رمز و کلید SSH
روشمزیتریسککاربرد پیشنهادی
SSH با رمزراه‌اندازی سریعبا رمز ضعیف خطر حمله بالادسترسی موقت و راه‌اندازی اولیه
کلید SSHامن‌تر و مناسب اتوماسیوناگر کلید خصوصی محافظت نشود خطر داردمدیریت دائمی سرور
تغییر پورتکاهش اسکن ربات‌هابه تنهایی کافی نیستهمراه با کلید و فایروال
غیرفعال کردن ورود rootکاهش سوءاستفاده از دسترسیتنظیم اشتباه sudo ممکن است دردسرساز شودسرورهای تولیدی

دستورات پایه ناوبری و لیست کردن فایل‌ها

اولین دستورهایی که باید یاد بگیرید: دیدن پوشه فعلی (pwd)، تغییر پوشه (cd) و لیست کردن فایل‌ها (ls) است. با cd /var/www/html به پوشه ریشه وب می‌روید. cd .. یک سطح بالاتر می‌برد و cd شما را به پوشه خانگی برمی‌گرداند. ls فایل‌ها را نشان می‌دهد و ls -la فایل‌های مخفی، دسترسی‌ها، مالک، حجم و تاریخ را هم نمایش می‌دهد.

وبمسترها معمولاً به فایل‌هایی مثل .htaccess، wp-config.php، robots.txt، sitemap.xml و index.php نیاز دارند. ls -lah حجم فایل‌ها را به صورت خوانا (مثلاً ۱.۰M به جای ۱۰۴۸۵۷۶) نشان می‌دهد. برای دیدن آخرین فایل‌های تغییر یافته از ls -lt استفاده کنید؛ این دستور بعد از هک یا نصب افزونه جدید بسیار کاربردی است.

سناریوی عملی: بررسی پوشه ریشه وب

فایل‌های سایت معمولاً در مسیرهایی مثل /var/www، /home/کاربر/public_html یا /usr/share/nginx/html قرار دارند. جریان کار: pwd برای دیدن مکان فعلی، cd /var/www/siteadi برای ورود به پوشه سایت، ls -lah برای لیست فایل‌ها و du -sh . برای چک کردن حجم کل پوشه. اگر چند سایت روی یک سرور دارید، بهتر است هر سایت را با کاربر و پوشه جداگانه نگه دارید تا هم امنیت بالاتر برود و هم نگهداری آسان‌تر شود. برای مدیریت دامنه به ډومین پوښتنه و برای راه‌اندازی سایت به Hosting Setup مراجعه کنید.

عملیات فایل و پوشه: ساختن، کپی، جابجایی و حذف

برای ساخت فایل از touch file.txt و برای ساخت پوشه از mkdir folder-name استفاده کنید. ساخت پوشه‌های تو در تو با mkdir -p backups/2026/january انجام می‌شود. کپی فایل با cp source destination و کپی پوشه با cp -r source-folder destination-folder است. جابجایی یا تغییر نام هم با mv old-name new-name انجام می‌گیرد.

دستورات حذف را با احتیاط به کار ببرید. rm file.txt یک فایل را پاک می‌کند و rm -r folder-name پوشه را با محتویاتش حذف می‌کند. rm -rf بدون پرسیدن و به اجبار حذف می‌کند و اگر اشتباه اجرا شود ممکن است ضرر زیادی بزند. قبل از اجرای rm -rf حتماً با pwd مکان فعلی را چک کنید و با ls محتویات را ببینید. قبل از عملیات حساس، یک بک‌آپ سریع با tar یا rsync بگیرید تا از ساعت‌ها زمان بازیابی جلوگیری کنید.

عادت حذف امن

برای تازه‌کاران safest روش این است که به جای حذف مستقیم، فایل را اول به پوشه قرنطینه منتقل کنید. مثلاً mkdir /root/quarantine و mv suspicious-file.php /root/quarantine/. بعد اگر سایت بدون مشکل کار کرد، فایل را کامل پاک کنید. این روش به‌خصوص هنگام پاک کردن فایل‌های مخرب، حذف افزونه یا تغییر قالب مفید است.

مشاهده و ویرایش محتوای فایل

برای دیدن کامل فایل از cat file.txt و برای مرور صفحه‌به‌صفحه از less file.txt استفاده کنید. در لاگ‌های بزرگ، less بهتر از cat عمل می‌کند. head چند خط اول و tail چند خط آخر را نشان می‌دهد. برای دنبال کردن زنده لاگ از tail -f /var/log/nginx/error.log بهره ببرید.

برای ویرایش فایل، nano، vim یا micro در دسترس هستند. nano برای مبتدیان مناسب‌تر است. با nano .htaccess فایل را باز کنید، ویرایش کنید، با Ctrl+O ذخیره و با Ctrl+X خارج شوید. هنگام ویرایش تنظیمات PHP، بلاک Nginx، هاست مجازی Apache یا robots.txt، یک اشتباه کوچک می‌تواند کل سایت را تحت تأثیر قرار دهد. قبل از تغییر، همیشه با cp file file.bak نسخه پشتیبان بگیرید.

مدیریت دسترسی و مالکیت: chmod و chown

دسترسی فایل‌ها در لینوکس برای کارکرد درست و امنیت سایت حیاتی است. chmod دسترسی‌ها و chown مالکیت را تغییر می‌دهد. مقدار رایج برای پوشه‌ها ۷۵۵ و برای فایل‌ها ۶۴۴ است. مثلاً chmod 644 wp-config.php دسترسی فایل را تنظیم می‌کند. برای تغییر دسترسی انبوه از find . -type d -exec chmod 755 {} \; برای پوشه‌ها و find . -type f -exec chmod 644 {} \; برای فایل‌ها استفاده کنید.

برای مالکیت معمولاً chown -R www-data:www-data /var/www/siteadi به کار می‌رود، ولی این مقدار بسته به توزیع و وب‌سرور متفاوت است. در اوبونتو، Apache و Nginx اغلب از www-data استفاده می‌کنند. مالکیت اشتباه می‌تواند باعث خطای ۴۰۳ یا مشکل آپلود شود. دسترسی خیلی باز مثل ۷۷۷ ممکن است موقتاً مشکل را حل کند، اما حفره امنیتی ایجاد می‌کند. به‌خصوص در پوشه آپلود، اجرای فایل‌ها را محدود کنید.

کنترل دیسک، RAM و CPU

وقتی سایت کند یا دچار مشکل می‌شود، اول مصرف منابع را بررسی کنید. df -h درصد پر بودن پارتیشن‌ها را نشان می‌دهد. اگر پارتیشن ریشه ۱۰۰٪ پر شود، سرویس‌ها نمی‌توانند لاگ بنویسند و سایت خطای ۵۰۰ می‌دهد. du -sh * حجم پوشه‌های فعلی را خلاصه می‌کند. برای پیدا کردن فایل‌های حجیم لاگ یا کش از du -ah /var/www | sort -h | tail استفاده کنید.

برای RAM و CPU از top یا htop بهره ببرید. اگر htop نصب نبود با apt install htop یا dnf install htop نصب کنید. free -m وضعیت RAM و swap را نشان می‌دهد. uptime مدت روشن بودن سرور و load average را می‌گوید. load طولانی بالای تعداد هسته‌ها نشانه مشکل عملکردی است. در این صورت به پلن قوی‌تر یا بهینه‌سازی نیاز دارید؛ Linux VPS و Corporate Hosting را بررسی کنید.

مدیریت سرویس‌ها با systemctl

در توزیع‌های مدرن لینوکس، مدیریت سرویس‌ها عمدتاً با systemctl انجام می‌شود. systemctl status nginx وضعیت را نشان می‌دهد، systemctl restart nginx ری‌استارت می‌کند و systemctl reload nginx تنظیمات را بدون قطع سرویس بارگذاری مجدد می‌کند. نام سرویس Apache معمولاً apache2 یا httpd، PHP-FPM مثل php8.2-fpm و MySQL هم mysql یا mariadb است.

قبل از هر ری‌استارت، تست تنظیمات را فراموش نکنید. nginx -t برای Nginx و apachectl configtest برای Apache استفاده می‌شود. اگر تست ناموفق باشد، ری‌استارت می‌تواند سایت را خاموش کند. مثلاً اگر در Nginx نقطه‌ویرگول جا افتاده باشد، nginx -t خطا را با شماره خط گزارش می‌دهد.

چک‌لیست سریع کنترل سرویس برای وبمستر

  • اگر سایت باز نشد، اول به جای مرورگر در سرور با systemctl status سرویس وب چک کنید.
  • خطای ۵۰۲: وضعیت PHP-FPM و لاگ خطای Nginx را بررسی کنید.
  • خطای اتصال دیتابیس: systemctl status mysql و پر بودن دیسک را ببینید.
  • تغییر تنظیمات: تا حد ممکن از reload به جای restart استفاده کنید.
  • قبل از هر تغییر، از فایل مربوطه بک‌آپ بگیرید.

بررسی لاگ‌ها: پیدا کردن منبع خطا در چند دقیقه

فایل‌های لاگ مثل جعبه سیاه سرور عمل می‌کنند. لاگ Nginx در /var/log/nginx/access.log و /var/log/nginx/error.log، لاگ Apache در /var/log/apache2 و لاگ MySQL در /var/log/mysql/error.log قرار دارد. journalctl -xe آخرین خطاهای سیستمی را نشان می‌دهد و journalctl -u nginx -n 100 آخرین ۱۰۰ رکورد Nginx را لیست می‌کند.

برای جستجوی کلمه خاص داخل لاگ از grep استفاده کنید. مثلاً grep 500 access.log کدهای ۵۰۰ را پیدا می‌کند. grep -i error جستجوی بدون حساسیت به حروف بزرگ و کوچک انجام می‌دهد. تحلیل لاگ علاوه بر رفع خطا، برای بررسی رفتار ربات گوگل و بودجه خزش هم ارزشمند است. برای بررسی‌های فنی سئو، SEO Compatible Hosting و Web Sitesi Hiz Optimizasyonu را هم مطالعه کنید.

جستجو، فیلتر و پردازش متن

جستجو، فیلتر و پردازش متن

برای جستجوی فایل یا متن از find، grep، awk و sed استفاده کنید. find /var/www -name wp-config.php فایل خاصی را پیدا می‌کند. find . -type f -mtime -1 فایل‌های تغییر یافته در ۲۴ ساعت اخیر را نشان می‌دهد. grep -R base64_decode . کدهای مشکوک base64 را جستجو می‌کند. awk برای جدا کردن ستون‌های خاص در لاگ بسیار کاربردی است.

با awk + sort + uniq -c می‌توانید IPهایی که بیشترین درخواست را زده‌اند پیدا کنید و ترافیک ربات یا تلاش brute force را زودتر تشخیص دهید.

انتقال فایل: scp، sftp و rsync

SSH فقط برای اجرای دستور نیست؛ با scp هم فایل منتقل می‌شود. scp local-file کاربر@سرور:/مسیر/هدف فایل را به سرور می‌فرستد. rsync -avz source/ کاربر@سرور:/target/ برای انتقال پوشه‌های بزرگ کارآمدتر است چون فقط فایل‌های تغییر یافته را منتقل می‌کند. پارامتر --delete فایل‌های اضافی مقصد را پاک می‌کند، پس با احتیاط استفاده کنید. برای انتقال وردپرس، همگام‌سازی staging با محیط زنده یا بک‌آپ، rsync انتخاب بهتری است.

بک‌آپ‌گیری و بازیابی با SSH

tar -czf site-backup.tar.gz /var/www/siteadi پوشه سایت را فشرده می‌کند. برای باز کردن آرشیو از tar -xzf استفاده کنید. بک‌آپ دیتابیس با mysqldump -u user -p dbname > backup.sql انجام می‌شود و بازیابی آن با mysql -u user -p dbname < backup.sql. برای بک‌آپ‌های طولانی از screen یا tmux استفاده کنید تا اگر اتصال قطع شد، فرآیند ادامه پیدا کند.

تنظیمات امنیتی مهم SSH

اولین توصیه، غیرفعال کردن ورود مستقیم root است. به جایش کاربر معمولی با دسترسی sudo بسازید: adduser webmaster و usermod -aG sudo webmaster. سپس در فایل /etc/ssh/sshd_config گزینه‌های PermitRootLogin no و PasswordAuthentication no را فعال کنید. بعد از تغییر، حتماً با ترمینال دوم تست کنید تا از سرور خارج نشوید. فایروال را هم با ufw allow 2222/tcp محدود کنید.

حداقل چک‌لیست امنیتی

  • رمز قوی یا ترجیحاً کلید SSH استفاده کنید.
  • ورود root را ببندید و کاربر sudo بسازید.
  • سرویس‌های غیرضروری را خاموش و فقط پورت‌های لازم را باز کنید.
  • بسته‌ها را مرتب به‌روز کنید: apt update && apt upgrade.
  • لاگ‌ها را مرتب چک کنید و از fail2ban بهره ببرید.
  • بک‌آپ را فقط روی همان سرور نگه ندارید.

مدیریت پکیج و به‌روزرسانی

در اوبونتو و دبیان از apt و در AlmaLinux/Rocky از dnf یا yum استفاده کنید. apt update لیست پکیج‌ها را به‌روز می‌کند و apt upgrade پکیج‌های نصب‌شده را ارتقا می‌دهد. به‌روزرسانی‌های مهم PHP، MySQL و OpenSSL را در پنجره نگهداری انجام دهید و قبلش بک‌آپ بگیرید.

جریان مداخله اضطراری برای وبمسترها

صبح که سایت بالا نیامد، به جای وحشت، گام‌به‌گام پیش بروید: اول با SSH وصل شوید، uptime و load را چک کنید، df -h برای دیسک، free -m و top برای RAM/CPU، سپس systemctl status nginx. در خطای ۵۰۲ وضعیت PHP-FPM را ببینید، در خطای دیتابیس لاگ MySQL را بررسی کنید و با tail -n 100 آخرین خطاها را بخوانید. اگر مشکل بعد از نصب افزونه جدید پیش آمده، ls -lt آخرین فایل‌های تغییر یافته را نشان می‌دهد.

اشتباهات رایج هنگام کار با SSH

رایج‌ترین اشتباه، کپی کردن دستور بدون فهمیدن آن است. دستور rm -rf، chmod -R 777 یا حذف دیتابیس را بدون چک کردن اجرا نکنید. دومین اشتباه، کار مداوم با کاربر root است؛ بهتر است با کاربر معمولی و sudo کار کنید. سومین اشتباه، تغییر بدون بک‌آپ است. چهارمین اشتباه، ری‌استارت مکرر سرویس بدون خواندن لاگ و پنجمین اشتباه، نادیده گرفتن به‌روزرسانی‌های امنیتی است.

جدول خلاصه دستورات پایه SSH

جدول خلاصه دستورات پایه SSH
عملیاتدستورزمان استفاده
اتصالssh کاربر@آی‌پی‌سروراتصال به سرور از ترمینال
دیدن پوشهpwdفهمیدن مکان فعلی
لیست فایلls -lahدیدن فایل، دسترسی و حجم
چک دیسکdf -hبررسی درصد پر بودن دیسک
حجم پوشهdu -sh *پیدا کردن پوشه‌های حجیم
وضعیت سرویسsystemctl status nginxچک کردن کارکرد وب‌سرور
دنبال کردن لاگtail -f error.logمشاهده زنده خطاها
بک‌آپ فایلtar -czf backup.tar.gz folderفشرده کردن فایل‌های سایت
انتقالrsync -avz source targetهمگام‌سازی پوشه‌های بزرگ
تغییر دسترسیchmod 644 fileتنظیم دسترسی فایل

نتیجه‌گیری: تسلط به SSH سرعت کار وبمستر را بالا می‌برد

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

در هاست راگونز هنگام انتخاب هاستینگ، VPS، دامنه و SSL، دسترسی SSH، بک‌آپ، امنیت و عملکرد را با هم در نظر بگیرید. راهنماهای مرتبط هاست راگونز را بخوانید و زیرساخت مناسب پروژه خود را انتخاب کنید.

سؤالات متداول

برای مدیریت سرور لینوکس با SSH حتماً باید root باشم؟

خیر. حتی در سرورهای تولیدی ورود مستقیم root توصیه نمی‌شود. با کاربر معمولی دارای دسترسی sudo وصل شوید و فقط وقتی لازم است از sudo استفاده کنید.

وبمستر تازه‌کار اول کدام دستورات SSH را یاد بگیرد؟

اولویت با ssh، pwd، cd، ls -lah، cp، mv، rm، nano، df -h، du -sh، top، systemctl، tail -f، grep، tar، scp و rsync است. این دستورها بخش عمده کارهای روزانه را پوشش می‌دهند.

چرا اتصال SSH رد می‌شود؟

دلایل رایج: آی‌پی یا پورت اشتباه، خاموش بودن سرویس SSH، مسدود بودن فایروال، نام کاربری نادرست، فایل کلید اشتباه یا غیرفعال بودن PasswordAuthentication. اول پورت، کاربر و وضعیت سرویس را چک کنید.

استفاده از chmod 777 امن است؟

معمولاً خیر. chmod 777 همه را قادر به خواندن، نوشتن و اجرا می‌کند و در پوشه‌های وب ریسک امنیتی ایجاد می‌کند. مقدار ۷۵۵ برای پوشه و ۶۴۴ برای فایل معمولاً ایمن‌تر است.

بک‌آپ با SSH بهتر است یا از طریق پنل؟

هر دو قابل استفاده‌اند. بک‌آپ پنل راحت‌تر است، اما بک‌آپ SSH انعطاف‌پذیرتر و مناسب اتوماسیون است. برای سایت‌های بزرگ، استفاده از tar، mysqldump و rsync از طریق SSH کنترل بیشتری می‌دهد. بهترین روش، بک‌آپ منظم، تست‌شده و دارای نسخه خارج از سرور است.

دا مقاله شریکه کړئ:

د Hostragons ټیم

زموږ د متخصص ټیم لخوا د کوربه توب، سرورونو او ډومین نومونو په اړه تازه لارښوونې. راځئ چې په ګډه ستاسو د پروژې لپاره سم حل ومومو.

له موږ سره اړیکه ونیسئ