SHET53

آموزش کار با SSH؛ از اتصال به سرور تا دستورات کاربردی

آموزش کار با SSH؛ از اتصال به سرور تا دستورات کاربردی

اگه تا حالا فقط با کنترل‌پنل‌های گرافیکی مثل دایرکت‌ادمین یا سی‌پنل کار کردید، اولین باری که یه صفحه‌ی سیاه با یه مکان‌نمای چشمک‌زن جلوتون باز می‌شه، حس خوبی نداره. ولی واقعیت اینه که با یاد گرفتن حدود ۲۵ تا ۳۰ دستور، بیشتر کارهای روزمره‌ی مدیریت سرور رو می‌تونید انجام بدید — و خیلی سریع‌تر از کلیک کردن تو پنل.

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

آنچه در این مقاله می‌خوانید

SSH چیست و کِی بهش نیاز پیدا می‌کنید؟

SSH مخفف Secure Shell است؛ پروتکلی برای اتصال امن به یه سرور راه‌دور. تفاوت اصلیش با پروتکل‌های قدیمی مثل Telnet اینه که همه‌چیز — از نام کاربری و رمز گرفته تا خود دستورات — رمزنگاری می‌شه. یعنی اگه کسی وسط مسیر ترافیک شبکه رو شنود کنه، چیز قابل خوندنی گیرش نمیاد.

معمولاً کِی بهش نیاز پیدا می‌کنید؟ وقتی از هاست اشتراکی به سرور مجازی مهاجرت می‌کنید، وقتی می‌خواید یه فایل چندگیگابایتی رو جابه‌جا کنید (که با مدیریت فایل پنل عملاً غیرممکنه)، وقتی سایتتون بالا نمیاد و باید لاگ سرور رو ببینید، یا وقتی می‌خواید کاری رو روی صدها فایل هم‌زمان انجام بدید.

اتصال به سرور در ویندوز، مک و لینوکس

قبل از هر چیز به چهار تا اطلاعات نیاز دارید که باید از هاست یا مدیر سرورتون بگیرید: آی‌پی سرور، نام کاربری، پورت SSH و رمز عبور (یا کلید خصوصی).

دو تا نکته که باعث سردرگمی می‌شن: نام کاربری پیش‌فرض روی خیلی از سرورهای لینوکسی root است، ولی هاست‌های حرفه‌ای معمولاً یه کاربر معمولی به شما می‌دن که امن‌تره. پورت پیش‌فرض هم ۲۲ است، ولی خیلی از مدیرها به دلایل امنیتی عوضش می‌کنن.

لینوکس و مک

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

ssh -p 22 username@203.0.113.10

اگه پورت سرورتون ۲۲ است، می‌تونید -p 22 رو کلاً حذف کنید.

ویندوز

ویندوزهای ۱۰ و ۱۱ کلاینت SSH داخلی دارن، پس دیگه لازم نیست حتماً نرم‌افزار جداگانه نصب کنید (هرچند PuTTY هم همچنان گزینه‌ی خوبیه). کافیه PowerShell یا Windows Terminal رو باز کنید و همون دستور بالا رو بزنید.

لازم نیست PowerShell رو با دسترسی Administrator باز کنید. اتصال SSH هیچ نیازی به دسترسی ادمین ویندوز نداره و عادت کردن به اجرای همه‌چیز با ادمین، عادت خوبی نیست.

اولین باری که وصل می‌شید، پیامی درباره‌ی «اثر انگشت» سرور می‌بینید و ازتون تأیید می‌خواد. این یعنی سیستم شما تا حالا این سرور رو ندیده. با yes تأیید کنید. اگه دفعات بعد همین هشدار دوباره ظاهر شد و چیزی هم عوض نکرده بودید، جدی بگیریدش — یعنی هویت سرور تغییر کرده.

سه قانونی که سرورتان را نجات می‌دهد

قبل از دستورها، این سه تا رو بخونید. ۹۰ درصد فاجعه‌های مبتدی‌ها از ندونستن همین‌هاست.

قانون ۱ — همیشه بدونید کجایید. دستورها روی مسیر فعلی اجرا می‌شن. یه دستور حذف که تو پوشه‌ی درست بی‌خطره، تو پوشه‌ی اشتباه فاجعه‌ست. قبل از هر کار مخرب، اول pwd بزنید.

قانون ۲ — تو خط فرمان سطل زباله وجود نداره. فایلی که پاک بشه، برنمی‌گرده. نه Ctrl+Z هست نه Undo. عادت کنید قبل از حذف، همون الگو رو اول با ls تست کنید تا ببینید دقیقاً چه فایل‌هایی انتخاب می‌شن.

قانون ۳ — sudo یعنی «این دستور رو با اختیارات کامل اجرا کن». کاربر معمولی به فایل‌های سیستمی دسترسی نداره؛ sudo این محدودیت رو موقتاً برمی‌داره. برای همین هر وقت sudo تایپ می‌کنید، یه لحظه مکث کنید و دستور رو دوباره بخونید. اکثر خرابکاری‌های جبران‌ناپذیر با sudo شروع می‌شن.

جدول مرجع سریع دستورات

این جدول رو بوکمارک کنید؛ برای وقتی که فقط می‌خواید یه دستور رو سریع پیدا کنید:

می‌خواید چی کار کنیددستور
ببینم کجا هستمpwd
محتویات پوشه رو ببینمls -lh
فایل‌های مخفی رو هم ببینمls -la
برم به یه پوشه‌ی دیگهcd /path
پوشه بسازمmkdir -p a/b/c
کپی کنمcp -r source dest
جابه‌جا کنم یا اسمش رو عوض کنمmv old new
حذف کنمrm file / rm -r folder
فایل بزرگ رو بخونمless file
لاگ رو زنده ببینمtail -f file.log
داخل فایل دنبال متن بگردمgrep -n 'text' file
دنبال خود فایل بگردمfind /path -name "*.log"
مجوز فایل رو عوض کنمchmod 644 file
فضای خالی دیسک رو ببینمdf -h
حجم پوشه‌ها رو ببینمdu -sh *
مصرف منابع رو ببینمhtop
سرویس رو ریستارت کنمsudo systemctl restart nginx
فایل دانلود کنمwget URL
فشرده یا استخراج کنمtar czvf / tar xzvf

گروه ۱: حرکت در فایل‌سیستم

pwd — الان کجا هستم؟

ساده‌ترین و در عین حال یکی از مفیدترین دستورها. مسیر کامل پوشه‌ی فعلی رو نشون می‌ده:

pwd
# خروجی: /home/mihanwp/public_html

هر وقت تو مسیرهای تودرتو گم شدید، این نجاتتون می‌ده.

ls — چی داخل این پوشه هست؟

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

ls -l    # لیست کامل: مجوز، مالک، حجم، تاریخ تغییر
ls -a    # فایل‌های مخفی رو هم نشون می‌ده (مثل .htaccess)
ls -lh   # حجم‌ها رو خوانا نشون می‌ده: 4K، 12M، 2G
ls -la   # ترکیب کامل + فایل‌های مخفی
ls -lt   # مرتب‌شده بر اساس تاریخ، جدیدترین بالا

اون -lt رو یادتون باشه؛ وقتی سایتتون هک شده و می‌خواید ببینید چه فایلی اخیراً تغییر کرده، دقیقاً همینه که لازم دارید.

cd — جابه‌جایی بین پوشه‌ها

cd /home/mihanwp/public_html   # رفتن به مسیر مشخص
cd ..                          # یک سطح بالا
cd ../..                       # دو سطح بالا
cd ~                           # پوشه‌ی خانگی کاربر
cd -                           # برگشت به پوشه‌ی قبلی

اون cd - خیلی به کار میاد؛ وقتی بین دو تا پوشه‌ی دور از هم مدام رفت‌وبرگشت دارید.

کلید Tab رو یاد بگیرید. اسم پوشه رو نصفه تایپ کنید و Tab بزنید تا خودکار کامل بشه. این کار فقط سرعت رو بالا نمی‌بره؛ جلوی غلط تایپی تو مسیرها رو هم می‌گیره که موقع دستورهای حذف حیاتیه.

گروه ۲: کار با فایل و پوشه

mkdir — ساخت پوشه

mkdir backups
mkdir -p projects/1405/farvardin   # هر سه پوشه رو یکجا می‌سازه

touch — ساخت فایل خالی

touch robots.txt

اگه فایل از قبل باشه، محتواش دست نمی‌خوره و فقط زمان آخرین تغییرش به‌روز می‌شه.

cp — کپی

cp config.php config.php.bak       # کپی ساده
cp -r myfolder /home/backups/      # کپی پوشه با تمام محتویاتش
cp -i file.txt /backup/            # قبل از بازنویسی می‌پرسه
cp -v file.txt /backup/            # جزئیات عملیات رو نشون می‌ده

عادت کنید قبل از ویرایش هر فایل کانفیگ، یه نسخه‌ی .bak ازش بگیرید. همون خط اول بالا، بارها نجاتتون می‌ده.

mv — جابه‌جایی و تغییر نام

mv oldname.txt newname.txt          # تغییر نام
mv file.txt /home/mihanwp/backup/   # جابه‌جایی
mv source/* destination/            # انتقال محتویات، نه خود پوشه

rm — حذف (با احتیاط)

rm file.txt        # حذف فایل
rm -r myfolder     # حذف پوشه با محتویاتش
rm -i file.txt     # قبل از حذف تأیید می‌گیره

گزینه‌ی -f تأیید رو حذف می‌کنه و ترکیب rm -rf خطرناک‌ترین دستوریه که به‌عنوان یه مدیر سایت باهاش سر و کار دارید. سه تا قاعده برای زنده موندن:

  • اول با ls تست کنید. اگه می‌خواید rm -rf cache/* بزنید، اول ls cache/* بزنید و خروجی رو ببینید. اگه چیزی که می‌بینید همونیه که انتظار دارید، حالا حذف کنید.
  • مراقب فاصله‌ی اضافی باشید. یه فاصله‌ی اشتباهی بین مسیر و ستاره، دامنه‌ی حذف رو کاملاً عوض می‌کنه.
  • هیچ‌وقت روی مسیرهای سیستمی مثل ریشه، /etc یا /home این دستور رو اجرا نکنید.

tar و unzip — فشرده‌سازی و استخراج

tar czvf backup.tar.gz /path/to/folder   # ساخت آرشیو
tar xzvf backup.tar.gz                   # استخراج
tar tzvf backup.tar.gz                   # فقط دیدن محتویات بدون استخراج
unzip plugin.zip                         # استخراج فایل zip

معنی حروف: c ساخت، x استخراج، t فهرست، z فشرده‌سازی gzip، v نمایش جزئیات، f تعیین نام فایل. اگه فایلتون .tar.bz2 است، به‌جای z از j استفاده کنید.

اون t رو دست‌کم نگیرید؛ قبل از استخراج یه آرشیو ناشناس، اول ببینید داخلش چیه تا فایل‌هاش رو وسط پوشه‌ی سایتتون نریزه.

گروه ۳: خواندن و ویرایش فایل

cat، less، head و tail

چهار تا ابزار برای چهار موقعیت مختلف:

cat file.txt          # نمایش کل فایل — فقط برای فایل‌های کوتاه
less file.log         # مرور فایل بزرگ (خروج با q)
head -n 50 file.log   # ۵۰ خط اول
tail -n 50 file.log   # ۵۰ خط آخر
tail -f error.log     # نمایش زنده‌ی خطوط جدید

cat رو روی فایل لاگ چندمگابایتی اجرا نکنید؛ کل ترمینال رو پر می‌کنه و عملاً چیزی دستگیرتون نمی‌شه. برای فایل‌های بزرگ همیشه less.

مهم‌ترین دستور عیب‌یابی این مقاله همین tail -f است. وقتی سایت خطا می‌ده، این دستور رو روی لاگ خطای سرور اجرا کنید و بعد صفحه رو تو مرورگر رفرش کنید. خطا رو همون لحظه جلوی چشمتون می‌بینید. با Ctrl+C خارج بشید.

nano و vi — ویرایش فایل

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

nano wp-config.php
vi wp-config.php

nano برای شروع بهتره چون دستورها پایین صفحه نوشته شدن: ذخیره با Ctrl+O، خروج با Ctrl+X.

vi قدرتمندتره ولی منطق متفاوتی داره. اولش تو حالت Normal هستید و تایپ کردن کار نمی‌کنه. با i وارد حالت نوشتن می‌شید. برای ذخیره و خروج: Esc بعد :wq. برای خروج بدون ذخیره: Esc بعد :q!.

اگه یه روز اشتباهی وارد vi شدید و گیر کردید، همین :q! راه فرارتونه.

گروه ۴: جستجو

grep — جستجوی متن داخل فایل‌ها

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

grep 'define' wp-config.php        # خطوط شامل کلمه‌ی define
grep -n 'error' error.log          # با شماره‌ی خط
grep -i 'warning' error.log        # بدون حساسیت به بزرگی و کوچکی حروف
grep -r 'eval(' /path/to/site/     # جستجوی بازگشتی در همه‌ی زیرپوشه‌ها
grep -v 'debug' file.log           # نمایش خطوطی که این کلمه رو ندارن

اون grep -r موقع بررسی سایت هک‌شده خیلی به کار میاد؛ می‌تونید دنبال الگوهای مشکوک تو تمام فایل‌های سایت بگردید.

ترکیب grep با دستورهای دیگه هم خیلی رایجه:

ps aux | grep php        # فرآیندهای مربوط به PHP
ls -la | grep .htaccess  # فیلتر کردن خروجی لیست

موقع کار با فایل‌های حساس مثل wp-config.php، دنبال چاپ کردن رمز دیتابیس روی ترمینال نرید. خروجی ترمینال تو بافر اسکرول و گاهی تو لاگ‌ها می‌مونه. اگه فقط می‌خواید ساختار فایل رو ببینید، دنبال نام ثابت‌ها بگردید نه مقادیرشون.

find — جستجوی خود فایل‌ها

اگه grep دنبال متن داخل فایله، find دنبال خود فایله بر اساس نام، حجم، نوع و تاریخ:

find /home -name "wp-config.php"        # جستجو بر اساس نام دقیق
find . -type f -name "*.log"            # همه‌ی فایل‌های لاگ
find . -type d -name "cache"            # فقط پوشه‌ها
find /var/log -type f -size +100M       # فایل‌های بزرگ‌تر از ۱۰۰ مگابایت
find . -type f -mtime -2                # فایل‌های تغییرکرده در ۲ روز اخیر

اون دستور آخر یکی از مفیدترین‌هاست: وقتی مشکوکید سایتتون آلوده شده، فایل‌هایی که اخیراً بدون اطلاع شما تغییر کردن رو نشون می‌ده.

گروه ۵: مجوزها و مالکیت فایل

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

خواندن مجوزها

وقتی ls -l می‌زنید، اول هر خط چیزی شبیه -rw-r--r-- می‌بینید. این یعنی سه گروه دسترسی: مالک، گروه و بقیه. هر کدوم می‌تونن خواندن (r)، نوشتن (w) و اجرا (x) داشته باشن.

معادل عددیش هم که بیشتر استفاده می‌شه: خواندن ۴، نوشتن ۲، اجرا ۱. پس:

  • ۶۴۴ — مالک بخونه و بنویسه، بقیه فقط بخونن. مقدار استاندارد برای فایل‌ها.
  • ۷۵۵ — مالک همه‌کاره، بقیه بخونن و وارد بشن. مقدار استاندارد برای پوشه‌ها.
  • ۶۴۰ — گزینه‌ی امن‌تر برای فایل‌های حساس مثل wp-config.php.

🔴 هیچ‌وقت ۷۷۷ نذارید. این عدد یعنی «هر کسی روی این سرور می‌تونه این فایل رو تغییر بده». متأسفانه رایج‌ترین توصیه‌ی غلط تو انجمن‌های فارسیه و مستقیم‌ترین راه هک شدن سایته. اگه مشکل دسترسی دارید، جواب تقریباً همیشه اصلاح مالکیت است، نه باز کردن مجوزها.

chmod — تغییر مجوز

chmod 644 wp-config.php
chmod 755 wp-content

# اصلاح یکجای کل سایت:
find /path/to/site -type f -exec chmod 644 {} \;
find /path/to/site -type d -exec chmod 755 {} \;

اون دو خط آخر رو یادداشت کنید؛ وقتی مجوزهای سایت به‌هم ریخته، با همین دو دستور کل ساختار رو استاندارد می‌کنید.

chown — تغییر مالکیت

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

sudo chown -R www-data:www-data /var/www/mysite

نام کاربر وب‌سرور بسته به توزیع فرق می‌کنه: تو اوبونتو و دبیان معمولاً www-data است و تو توزیع‌های خانواده‌ی ردهت معمولاً apache یا nginx. اگه مطمئن نیستید، با ps aux | grep -E 'nginx|apache' ببینید سرویس با چه کاربری اجرا می‌شه.

گروه ۶: پایش وضعیت سرور

df — فضای دیسک

df -h     # فضای خالی هر پارتیشن
df -i     # وضعیت inodeها

«سایت بالا نمیاد» خیلی وقت‌ها یعنی «دیسک پر شده». اولین دستوری که باید بزنید همینه.

و اون df -i رو جدی بگیرید: ممکنه فضای دیسک خالی باشه ولی تعداد فایل‌ها به سقف رسیده باشه. سایتی که میلیون‌ها فایل کش کوچیک تولید می‌کنه دقیقاً به این مشکل می‌خوره و چون df -h چیز نگران‌کننده‌ای نشون نمی‌ده، ساعت‌ها دنبال مشکل اشتباهی می‌گردید.

du — چه چیزی فضا را اشغال کرده؟

du -sh /home/mihanwp/public_html   # حجم کل یک پوشه
du -sh * | sort -h                 # زیرپوشه‌ها مرتب‌شده بر اساس حجم

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

free و htop — حافظه و پردازنده

free -h    # وضعیت رم
htop       # نمایش تعاملی منابع و فرآیندها

اگه htop نصب نبود، با پکیج‌منیجر توزیعتون نصبش کنید. داخلش با کلیدهای جهت‌دار حرکت می‌کنید، با F9 یه فرآیند رو می‌بندید و با F10 یا q خارج می‌شید.

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

systemctl status nginx           # وضعیت سرویس
sudo systemctl restart nginx     # ریستارت کامل
sudo systemctl reload nginx      # بارگذاری مجدد بدون قطع اتصالات
sudo systemctl enable nginx      # اجرای خودکار بعد از ریبوت

تفاوت restart و reload مهمه: اگه فقط کانفیگ رو عوض کردید، reload بزنید تا اتصالات فعال کاربرها قطع نشه.

journalctl — دیدن لاگ سرویس‌ها

journalctl -u nginx -n 50    # ۵۰ خط آخر لاگ nginx
journalctl -u nginx -f       # نمایش زنده

وقتی systemctl status می‌گه سرویس بالا نیومده ولی نمی‌گه چرا، جواب اینجاست.

گروه ۷: انتقال فایل و دانلود

wget — دانلود روی سرور

wget https://example.com/file.zip
wget -c https://example.com/big.zip        # ادامه‌ی دانلود نیمه‌تمام
wget -O custom-name.zip https://...        # تعیین نام خروجی

scp — انتقال بین کامپیوتر خودتان و سرور

# از سیستم خودتان به سرور:
scp -P 22 file.zip username@203.0.113.10:/home/username/

# از سرور به سیستم خودتان:
scp -P 22 username@203.0.113.10:/home/username/backup.tar.gz .

یه نکته‌ی ریز که همه رو گیر می‌ندازه: تو ssh پورت با p کوچک مشخص می‌شه ولی تو scp با P بزرگ. اگه scp کار نکرد، اول همین رو چک کنید.

rsync — انتقال هوشمند

rsync -avz --progress /path/source/ user@203.0.113.10:/path/dest/

برتری rsync به scp اینه که فقط تفاوت‌ها رو منتقل می‌کنه و اگه ارتباط قطع بشه، از همون‌جا ادامه می‌ده. برای مهاجرت سایت‌های بزرگ، این گزینه‌ی درسته.

دستور طولانی را وسط راه از دست ندهید

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

راه‌حل screen است:

screen -S backup      # ساخت یک جلسه‌ی جدا با نام backup
# حالا دستور طولانی رو اجرا کنید
# با Ctrl+A و بعد D از جلسه خارج بشید (بدون قطع کردنش)

screen -ls            # لیست جلسه‌های باز
screen -r backup      # برگشتن به جلسه

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

وردپرس روی خط فرمان: WP-CLI

اگه سایتتون وردپرسیه، WP-CLI کارهایی رو در چند ثانیه انجام می‌ده که تو پیشخوان چند دقیقه طول می‌کشه — و مهم‌تر، وقتی پیشخوان اصلاً بالا نمیاد هم کار می‌کنه:

wp core update                  # به‌روزرسانی هسته
wp plugin list                  # لیست افزونه‌ها و وضعیتشون
wp plugin deactivate --all      # غیرفعال کردن همه‌ی افزونه‌ها
wp db export backup.sql         # خروجی گرفتن از دیتابیس
wp search-replace 'http://old.com' 'https://new.com'

اون plugin deactivate --all ناجی روزهای بدتونه: وقتی سایت بعد از یه آپدیت سفید می‌شه و به پیشخوان دسترسی ندارید، با همین یه دستور همه رو خاموش می‌کنید و بعد یکی‌یکی روشن می‌کنید تا مقصر رو پیدا کنید.

قبل از search-replace هم حتماً اول wp db export بگیرید. این دستور تغییرات گسترده‌ای تو دیتابیس می‌ده و برگشت‌پذیر نیست.

امنیت SSH؛ چهار کار ضروری

با کاربر root کار نکنید

sudo adduser mihanwp
sudo usermod -aG sudo mihanwp     # در اوبونتو و دبیان

حواستون باشه نام گروه ادمین تو توزیع‌های مختلف فرق داره: تو اوبونتو و دبیان گروه sudo است، ولی تو توزیع‌های خانواده‌ی ردهت (مثل AlmaLinux و Rocky) گروه wheel است. اگه دستور بالا رو اونجا بزنید، خطا می‌گیرید.

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

روی سیستم خودتان (نه سرور) یه جفت کلید بسازید:

ssh-keygen -t ed25519 -C "your-email@example.com"
ssh-copy-id -p 22 mihanwp@203.0.113.10

حالا بدون رمز وارد می‌شید. کلید خصوصی روی سیستم شما می‌مونه و هیچ‌وقت جایی ارسال نمی‌شه.

ورود با رمز را غیرفعال و پورت را عوض کنید

تو فایل /etc/ssh/sshd_config:

PasswordAuthentication no
PermitRootLogin no
Port 2222

ولی قبل از ریستارت این دو کار رو انجام بدید:

sudo sshd -t                  # تست صحت فایل کانفیگ
sudo ufw allow 2222/tcp       # باز کردن پورت جدید در فایروال

اگه پورت جدید رو تو فایروال باز نکنید و سرویس رو ریستارت کنید، درِ سرور رو روی خودتون قفل کردید.

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

fail2ban نصب کنید

این ابزار لاگ‌های ورود ناموفق رو می‌خونه و آی‌پی‌هایی که مدام تلاش می‌کنن رو خودکار مسدود می‌کنه. بدون این، سرور شما از همون روز اول هدف حملات خودکار brute force خواهد بود.

کجا بدون ترس تمرین کنیم؟

بهترین راه یادگیری این دستورها، اجرا کردنشونه — ولی نه روی سروری که سایت واقعی روش بالاست. خبر خوب اینه که برای تمرین اصلاً لازم نیست پول خرج کنید:

  • ویندوز: قابلیت WSL رو فعال کنید. یه لینوکس کامل داخل ویندوزتون دارید، بدون نصب سیستم‌عامل دوم.
  • هر سیستم‌عاملی: با VirtualBox یه ماشین مجازی رایگان بسازید و روش اوبونتو نصب کنید. اگه خرابش کردید، پاکش می‌کنید و از اول می‌سازید.
  • سریع‌ترین راه: اگه داکر دارید، با یه دستور یه کانتینر لینوکس بالا میارید و توش تمرین می‌کنید.

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

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

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

نه. با همون ۲۵ تا ۳۰ دستوری که تو این مقاله اومد، بیشتر کارهای روزمره‌ی مدیریت یه سایت رو می‌تونید انجام بدید. لینوکس رو در حین کار یاد می‌گیرید، نه قبلش.

اگر رمز SSH را فراموش کنم چه کار کنم؟

روی سرور مجازی معمولاً از پنل مدیریت ارائه‌دهنده می‌تونید رمز root رو ریست کنید یا از کنسول اضطراری وارد بشید. روی هاست اشتراکی هم باید از پشتیبانی درخواست بدید. برای همینه که استفاده از کلید SSH به‌جای رمز، هم امن‌تره هم دردسر کمتری داره.

چرا بعد از تغییر پورت SSH نمی‌توانم وصل شوم؟

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

مجوز ۷۷۷ چه اشکالی دارد؟

یعنی هر کاربری روی اون سرور می‌تونه فایل شما رو بخونه، تغییر بده و اجرا کنه. این رایج‌ترین توصیه‌ی غلط برای رفع خطاهای دسترسیه و مستقیم‌ترین راه آلوده شدن سایته. مقدار درست برای فایل‌ها ۶۴۴ و برای پوشه‌ها ۷۵۵ است؛ اگر باز هم خطا داشتید، مشکل معمولاً از مالکیت فایل‌هاست نه از مجوزها.

اگر وسط اجرای یک دستور طولانی اینترنتم قطع شود چه می‌شود؟

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

جمع‌بندی

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

اگه بخوایم مهم‌ترین نکته‌ها رو خلاصه کنیم: قبل از هر کار مخرب pwd بزنید، قبل از حذف با ls تست کنید، هیچ‌وقت ۷۷۷ نذارید، و بعد از تغییر تنظیمات SSH ترمینال فعلی رو تا وقتی که با یه جلسه‌ی دوم تست نکردید نبندید.

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

نظر شما در این مورد چیه؟

  1. U10129۱۸ آذر ۱۳۹۸

    وقت بخیر. ظاهرا این بخش رو به اشتباه تایپ کردین:

    rm myfile.txt
    در عبارت بالا به‌جای “myfile” نام پوشه مدنظر خود را وارد کنید.

    به جای نام پوشه، فکر میکنم نام فایل باید نوشته میشد.
    خسته نباشید

    • تیم پشتیبانیتیم پشتیبانی۱۹ آذر ۱۳۹۸

      با سلام

      در عبارت بالا به‌جای “myfile” نام پوشه مدنظر خود را وارد کنید.

پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرس
پشتیبانپشتیبانپشتیبانپشتیبانپشتیبان
تیم میهن وردپرسخارج از ساعات کاری هستیم؛ دستیار هوش مصنوعی پاسخگوی شماست.هوش مصنوعی

در حال بارگذاری...

هر سوالی دارید بپرسید.پاسخگوی شما هستیم.