الإجابة السريعة

SSH (اختصار Secure Shell) هو بروتوكول مُشفّر يتيح لك تسجيل الدخول إلى خادمك البعيد والتحكّم فيه بالكامل من سطر الأوامر، بأمان تامّ حتى عبر شبكات غير موثوقة. تتصل بأمر ssh user@server-ip على المنفذ 22 افتراضيًا، وتُصادِق إمّا بكلمة مرور أو — وهو الأفضل بكثير — بمفاتيح SSH التي تُولّدها بـssh-keygen -t ed25519 وتنسخها للخادم بـssh-copy-id. بعد الدخول تستخدم أوامر لينكس للتنقّل وإدارة الملفات والخدمات، وتنقل الملفات بـscp أو sftp أو rsync. وقبل أن تنام مرتاحًا، تُؤمّن SSH بتعطيل دخول root وكلمة المرور، وربما تغيير المنفذ، وتركيب Fail2ban لصدّ المهاجمين. في هذا الدليل ستتعلّم كل ذلك خطوة بخطوة مع الأوامر الدقيقة وجداول مرجعية وحلول الأخطاء الشائعة.

ما هو SSH ولماذا يهمّك كصاحب خادم؟

عندما تشتري خادمًا افتراضيًا (VPS) أو خادمًا مخصّصًا، فأنت لا تحصل على شاشة ولوحة مفاتيح يمكنك الجلوس أمامها. الخادم موجود في مركز بيانات قد يبعد عنك آلاف الكيلومترات. السؤال الطبيعي: كيف تتحكّم فيه إذًا؟ الجواب هو SSH.

SSH بروتوكول شبكي يسمح لجهازك (العميل) بالاتصال بجهاز آخر (الخادم) عبر الإنترنت، وفتح "صدفة" (shell) — أي جلسة سطر أوامر — تكتب فيها الأوامر فتُنفَّذ على الخادم البعيد كأنك جالس أمامه مباشرة. كل ما يمرّ بين جهازك والخادم — كلمات المرور والأوامر والمخرجات والملفات — مُشفَّر، فلا يستطيع أحد التنصّت عليه أو تعديله أثناء النقل.

قبل SSH كان الناس يستخدمون بروتوكولات مثل Telnet وrlogin وrsh، وكانت كارثة أمنية: تُرسِل كلمة المرور كنصّ صريح يمكن لأي متنصّت على الشبكة قراءته. ظهر SSH عام 1995 ليحلّ هذه المشكلة جذريًا، وأصبح اليوم المعيار المطلق لإدارة الخوادم عن بُعد على كل أنظمة يونكس ولينكس، وحتى على ويندوز سيرفر.

لماذا سطر الأوامر أصلًا؟

قد تتساءل: لماذا لا ألوحةً رسومية بدلًا من شاشة سوداء مخيفة؟ الجواب أن سطر الأوامر:

  • أسرع وأخفّ: لا يستهلك موارد الخادم في رسم واجهة؛ كل بايت من ذاكرة الخادم يذهب لتطبيقك.
  • أكثر قوّة: أمر واحد قد يُنجز ما يتطلّب عشرات النقرات في واجهة رسومية، ويمكن أتمتته في سكربتات.
  • يعمل على كل خادم: كل توزيعة لينكس تأتي بـSSH جاهزة، بينما الواجهات الرسومية نادرة وثقيلة على الخوادم.
  • قابل للتسجيل والتكرار: يمكنك حفظ الأوامر، مشاركتها، وتنفيذها على مئات الخوادم دفعة واحدة.

إن كنت ما زلت تتساءل أصلًا هل تحتاج خادمًا بهذا المستوى من التحكّم، فاطّلع على ما هو الـVPS ومتى تحتاجه لتفهم الفرق بين الاستضافة المشتركة والخادم الافتراضي الذي تديره بنفسك.

كيف يعمل SSH؟ التشفير والبصمة والمصادقة

لفهم SSH عمليًا تحتاج أن تستوعب ثلاثة أجزاء يحدث كلٌّ منها عند كل اتصال: تأسيس قناة مُشفّرة، والتحقّق من هوية الخادم، والتحقّق من هويتك أنت.

1) تأسيس القناة المُشفّرة

عندما تتصل، يتفاوض جهازك والخادم على خوارزميات التشفير ويتبادلان مفاتيح جلسة مؤقتة عبر آلية تُسمّى Diffie-Hellman key exchange. النتيجة: قناة مُشفّرة متماثلة (symmetric) سريعة تُشفَّر بها كل البيانات لبقية الجلسة. هذا يحدث تلقائيًا دون أي تدخّل منك.

2) التحقّق من هوية الخادم (host key وبصمته)

لكل خادم SSH زوج مفاتيح خاص به يُسمّى host key. عند أول اتصال، يعرض لك العميل بصمة (fingerprint) هذا المفتاح ويسألك إن كنت تثق به:

The authenticity of host '203.0.113.10 (203.0.113.10)' can't be established.
ED25519 key fingerprint is SHA256:abc123def456...xyz.
Are you sure you want to continue connecting (yes/no/[fingerprint])?

عندما تكتب yes، يُخزَّن مفتاح الخادم في ملف ~/.ssh/known_hosts على جهازك. في المرّات التالية، يقارن العميل تلقائيًا مفتاح الخادم بالمحفوظ؛ فإن تطابق، اتصل بصمت، وإن اختلف، حذّرك بقوّة (قد يكون الخادم أُعيد بناؤه، أو قد يكون هجوم رجل-في-الوسط). هذه البصمة هي حصنك الأول ضدّ انتحال هوية الخادم.

3) التحقّق من هويتك (المصادقة)

بعد أن وثقت بالخادم، يأتي دورك لتثبت من أنت. هنا طريقتان رئيسيتان: كلمة المرور أو مفتاح SSH عام/خاص. هذه نقطة جوهرية سنفرد لها قسمًا كاملًا لأن اختيارك هنا يحدّد مستوى أمان خادمك كلّه.

مصادقة SSH بالمفاتيح: جهازك يحمل المفتاح الخاص والخادم يحمل المفتاح العام في authorized_keys؛ تحدٍّ مشفّر يُفكّ بالمفتاح الخاص ليتمّ الدخول بلا كلمة مرور.كيف تعمل مصادقة المفاتيح في SSH؟جهازك (Client)مفتاح خاص (private)الخادم (Server)authorized_keys (public)1 · طلب اتصال (يعرض اسم المفتاح)2 · تحدٍّ مشفّر بالمفتاح العام3 · يفكّه بالمفتاح الخاص ويردّ بالإثبات4 · تطابق ⇒ دخول بلا كلمة مرور
مصادقة المفاتيح في SSH: جهازك يحتفظ بالمفتاح الخاص، والخادم بالمفتاح العام؛ تحدٍّ مشفّر يُفكّ بالخاص ⇒ دخول آمن بلا كلمة مرور.

الرسم أعلاه يوضّح مصادقة المفتاح: جهازك يحتفظ بالمفتاح الخاص (سرّي لا يغادر جهازك أبدًا)، والخادم يحتفظ بالمفتاح العام؛ يتحقّق الخادم أنك تملك المفتاح الخاص المقابل دون أن يُرسَل المفتاح الخاص نفسه عبر الشبكة على الإطلاق.

المكوّنأين يعيش؟دوره
العميل (SSH client)جهازك المحلييبدأ الاتصال ويُشفّر طلباتك
الخادم (SSH daemon / sshd)الخادم البعيديستقبل الاتصالات ويتحقّق من الهوية
host keyالخادميُثبت هوية الخادم للعميل (البصمة)
المفتاح الخاصجهازك فقطيُثبت هويتك؛ لا يغادر جهازك أبدًا
المفتاح العامالخادميُوضع في authorized_keys للسماح لك بالدخول

الاتصال الأول: ssh user@ip والمنفذ 22

بنية أمر الاتصال الأساسية بسيطة:

ssh username@server-ip-or-hostname

مثال واقعي للاتصال بخادم جديد بمستخدم root:

ssh root@203.0.113.10

عند الاتصال الأول سيسألك عن قبول بصمة الخادم (كما رأينا)، ثم يطلب كلمة المرور. اكتبها (لن تظهر أحرف على الشاشة، وهذا طبيعي لأسباب أمنية) واضغط Enter. إن نجحت، ستجد نفسك في موجّه أوامر الخادم، مثل:

root@my-server:~#

تهانينا — أنت الآن داخل خادمك.

تحديد المنفذ والمستخدم بوضوح

SSH يستمع افتراضيًا على المنفذ 22. إن غيّرت المنفذ (وسنشرح لاحقًا لماذا قد تفعل)، حدّده بالعَلم -p:

ssh -p 2222 username@203.0.113.10
الجزءالمثالالمعنى
الأمرsshبرنامج عميل SSH
العَلم -p-p 2222منفذ الاتصال (افتراضيًا 22)
المستخدمusername@اسم حساب المستخدم على الخادم
المضيف203.0.113.10IP أو اسم نطاق الخادم

ملاحظة: المنفذ 22 هو منفذ SSH القياسي. تذكّر أنه المنفذ الافتراضي الذي يجب أن يكون مفتوحًا في جدار الحماية لتتمكّن من الاتصال.

للخروج من الجلسة في أي وقت، اكتب exit أو اضغط Ctrl+D:

exit

كلمة المرور مقابل مفاتيح SSH: لماذا المفاتيح أأمن بكثير؟

هذه أهمّ نقطة في الدليل كلّه. كثير من الاختراقات تبدأ من خادم يقبل الدخول بكلمة مرور ضعيفة أو مُخمَّنة. مفاتيح SSH تحلّ المشكلة من جذورها.

كلمة المرور سرّ مشترك يعرفه الطرفان؛ يمكن تخمينه بهجمات brute-force، أو تسريبه، أو التقاطه بالتصيّد. ومع أن الخوادم تتعرّض لآلاف محاولات الدخول الآلية يوميًا، فكلمة مرور واحدة ضعيفة كفيلة بكارثة.

مفتاح SSH زوج رياضي: مفتاح خاص (private key) يبقى على جهازك فقط، ومفتاح عام (public key) تضعه على الخادم. عند الدخول، يثبت جهازك أنه يملك المفتاح الخاص عبر تحدٍّ تشفيري، دون أن يُرسَل المفتاح الخاص نفسه. المفتاح الخاص (ed25519 أو RSA 4096) عمليًا مستحيل تخمينه بالقوة الغاشمة.

المعياركلمة المرورمفتاح SSH
القوّة ضد brute-forceضعيفة–متوسطةقوية جدًا (عمليًا مستحيل)
ما يُنقل عبر الشبكةتُرسَل (مُشفّرة)لا يُنقل المفتاح الخاص أبدًا
قابلية التسريبمرتفعة (تصيّد، إعادة استخدام)منخفضة (المفتاح الخاص لا يغادر جهازك)
سهولة الأتمتةمحدودة (تتطلّب إدخالًا)ممتازة (دخول بلا تفاعل)
الراحة اليوميةتكتبها كل مرّةدخول فوري بلا كتابة
إدارة عدّة مستخدمينمعقّدةسهلة (مفتاح عام لكل شخص)
الحماية الإضافيةعبارة مرور (passphrase) على المفتاح

الخلاصة: استخدم مفاتيح SSH دائمًا، وعطّل الدخول بكلمة المرور بعد التأكّد أن مفتاحك يعمل. هذا أهمّ إجراء أمني منفرد يمكنك اتخاذه لخادمك.

تحتاج موارد مخصّصة وتحكّمًا كاملًا؟

خطط VPS من wpressly بموارد مضمونة وصلاحية root، مُدارة وغير مُدارة، مع دعم عربي للإعداد والتأمين من اليوم الأول.

استعرض خطط VPS

توليد مفاتيح SSH ونسخها للخادم

العملية ثلاث خطوات: تولّد زوج المفاتيح على جهازك، تنسخ المفتاح العام للخادم، تختبر الدخول.

الخطوة 1: توليد زوج المفاتيح بـ ssh-keygen

افتح طرفية على جهازك (وليس على الخادم) ونفّذ:

ssh-keygen -t ed25519 -C "your_email@example.com"

سيسألك عن مكان الحفظ (اقبل الافتراضي ~/.ssh/id_ed25519 بالضغط على Enter)، ثم عن عبارة مرور (passphrase) — وهي طبقة حماية إضافية تُشفّر المفتاح الخاص نفسه على قرصك. يُنصَح بشدّة بوضع عبارة مرور؛ هكذا حتى لو سُرق جهازك، لا يُستخدم المفتاح دونها.

النتيجة ملفّان في مجلد ~/.ssh:

  • id_ed25519 — المفتاح الخاص (لا تشاركه مع أحد أبدًا).
  • id_ed25519.pub — المفتاح العام (هذا الذي تضعه على الخوادم).

نوع ed25519 هو الخيار الموصى به حاليًا: قصير، سريع، وآمن جدًا. إن كان لديك نظام قديم لا يدعمه، استخدم RSA بطول 4096 بت:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
العَلمالمثالالوظيفة
-t-t ed25519نوع المفتاح (ed25519 موصى به، أو rsa)
-b-b 4096طول المفتاح بالبت (لـRSA؛ ed25519 ثابت)
-C-C "email"تعليق لتمييز المفتاح (غالبًا بريد أو وصف)
-f-f ~/.ssh/work_keyمسار/اسم ملف المفتاح المُخرَج
-N-N "passphrase"تعيين عبارة المرور مباشرة (للسكربتات)
-p-pتغيير عبارة مرور مفتاح موجود

الخطوة 2: نسخ المفتاح العام للخادم بـ ssh-copy-id

أسهل طريقة لتثبيت مفتاحك العام على الخادم:

ssh-copy-id username@203.0.113.10

سيطلب كلمة مرور الخادم لمرّة أخيرة، ثم يضيف مفتاحك العام إلى ملف ~/.ssh/authorized_keys على الخادم تلقائيًا، ويضبط الصلاحيات الصحيحة. إن كنت تستخدم منفذًا مخصّصًا:

ssh-copy-id -p 2222 username@203.0.113.10

إن لم يكن ssh-copy-id متاحًا (شائع على ويندوز)، انسخ المفتاح يدويًا:

cat ~/.ssh/id_ed25519.pub | ssh username@203.0.113.10 "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

الخطوة 3: اختبار الدخول

الآن جرّب الاتصال:

ssh username@203.0.113.10

يجب أن تدخل مباشرة (أو بعد إدخال عبارة مرور المفتاح إن وضعتها) دون أن يطلب كلمة مرور الخادم. إن نجح ذلك، فأنت جاهز لتعطيل الدخول بكلمة المرور لاحقًا.

عملية إعداد المفاتيح هي جزء من سلسلة إعداد كاملة للخادم. لرؤية الصورة الكاملة من لحظة شراء الخادم حتى تأمينه وتشغيل تطبيقك، راجع دليل إعداد أول سيرفر VPS من الصفر.

خطوات إعداد أول VPS بالترتيب: الاتصال SSH، تحديث النظام، إنشاء مستخدم non-root بمفاتيح، جدار حماية، تثبيت ستاك الويب، ثم شهادة SSL.إعداد أول VPS: الخطوات بالترتيب1 · الاتصال عبر SSHدخول آمن للخادم2 · تحديث النظامapt update && upgrade3 · مستخدم non-root+ مفاتيح SSH4 · جدار حماية (UFW)افتح المنافذ اللازمة فقط5 · تثبيت ستاك الويبNginx · PHP · قاعدة بيانات6 · شهادة SSLHTTPS عبر Certbot
أول إعداد لـVPS بالترتيب: SSH ← تحديث النظام ← مستخدم non-root ومفاتيح ← جدار حماية ← ستاك الويب ← SSL.

الرسم أعلاه يلخّص تدفّق إعداد خادم جديد: تتصل أولًا، تُنشئ مستخدمًا غير root، تثبّت مفتاحك، تُؤمّن SSH، ثم تركّب برمجياتك. SSH هو البوابة لكل خطوة بعدها.

ملف ~/.ssh/config: اختصارات تختصر عمرك

إن كنت تدير عدّة خوادم، ستملّ من كتابة المستخدم والـIP والمنفذ في كل مرّة. ملف ~/.ssh/config على جهازك يحلّ ذلك. أنشئه أو حرّره:

nano ~/.ssh/config

وأضف كتلة لكل خادم:

Host myserver
    HostName 203.0.113.10
    User deploy
    Port 2222
    IdentityFile ~/.ssh/id_ed25519

Host db
    HostName 198.51.100.20
    User admin
    Port 22
    IdentityFile ~/.ssh/db_key

الآن بدل أمر طويل، تكتب فقط:

ssh myserver
الخيارالمثالالوظيفة
HostHost myserverالاسم المختصر الذي تكتبه
HostName203.0.113.10عنوان الخادم الفعلي
Userdeployاسم المستخدم الافتراضي
Port2222المنفذ
IdentityFile~/.ssh/id_ed25519المفتاح الخاص المستخدَم لهذا الخادم
ServerAliveInterval60إرسال نبضة كل 60 ثانية لمنع قطع الجلسة

تأكّد أن صلاحيات الملف صحيحة وإلا تجاهله SSH:

chmod 600 ~/.ssh/config

أهمّ الأوامر بعد الدخول

بمجرّد دخولك، أنت في بيئة لينكس. هذه أكثر الأوامر استخدامًا مصنّفة بحسب الغرض.

التنقّل واستعراض الملفات

pwd                 # اطبع المسار الحالي
ls -lah             # اعرض الملفات بالتفصيل مع الأحجام والمخفية
cd /var/www         # انتقل لمجلد
cd ..               # ارجع مجلدًا للأعلى
cd ~                # اذهب للمجلد الرئيسي

إدارة الملفات والمجلدات

mkdir projects              # أنشئ مجلدًا
touch index.html            # أنشئ ملفًا فارغًا
cp file.txt backup.txt      # انسخ ملفًا
mv old.txt new.txt          # انقل/أعد التسمية
rm file.txt                 # احذف ملفًا
rm -r folder                # احذف مجلدًا ومحتوياته (احذر!)
cat file.txt                # اطبع محتوى ملف
less /var/log/syslog        # تصفّح ملفًا طويلًا بهدوء (q للخروج)
nano config.txt             # حرّر ملفًا بمحرّر بسيط

الصلاحيات والملكية

chmod 600 ~/.ssh/id_ed25519     # قراءة/كتابة للمالك فقط
chmod 755 script.sh             # تنفيذ للجميع، كتابة للمالك
chown deploy:deploy file.txt    # غيّر مالك الملف ومجموعته

الصلاحيات الإدارية بـ sudo

المستخدم العادي لا يملك صلاحيات النظام؛ تستعير صلاحيات root مؤقتًا بـsudo:

sudo apt update                 # حدّث قوائم الحزم
sudo apt install nginx          # ثبّت برنامجًا
sudo systemctl restart nginx    # أعد تشغيل خدمة

مراقبة النظام والخدمات

top                             # راقب العمليات والموارد حيًّا (q للخروج)
df -h                           # مساحة الأقراص
free -h                         # استهلاك الذاكرة
systemctl status nginx          # حالة خدمة معيّنة
journalctl -u nginx -n 50       # آخر 50 سطرًا من سجلّات الخدمة
الأمرالوظيفةمثال
lsاستعراض الملفاتls -lah
cdتغيير المجلدcd /var/www
cp / mv / rmنسخ/نقل/حذفcp a b
chmod / chownالصلاحيات/الملكيةchmod 644 file
sudoصلاحيات إداريةsudo apt update
systemctlإدارة الخدماتsystemctl restart nginx
top / df / freeمراقبة المواردdf -h
journalctlقراءة السجلّاتjournalctl -u nginx

نصيحة عملية: اعتد على Tab لإكمال أسماء الملفات تلقائيًا، وعلى السهم لأعلى لاستدعاء الأوامر السابقة. هذان وحدهما يضاعفان سرعتك.

نقل الملفات: scp وsftp وrsync

التحكّم بالخادم لا يكتمل دون نقل الملفات إليه ومنه. لديك ثلاث أدوات تعمل كلّها فوق SSH المُشفّر.

scp — النسخ السريع المباشر

scp (secure copy) أبسطها للنسخ لمرّة واحدة. النمط: scp المصدر الوجهة.

رفع ملف من جهازك إلى الخادم:

scp ./report.pdf username@203.0.113.10:/home/username/

تنزيل ملف من الخادم إلى جهازك:

scp username@203.0.113.10:/var/log/app.log ./

نسخ مجلد كامل (بالعَلم -r)، ومع منفذ مخصّص (-P كبيرة لـscp):

scp -r -P 2222 ./site username@203.0.113.10:/var/www/
العَلمالوظيفة
-rنسخ مجلد بشكل تكراري
-P 2222تحديد المنفذ (لاحظ: P كبيرة في scp)
-i keyتحديد مفتاح خاص معيّن
-Cضغط البيانات أثناء النقل

sftp — جلسة تفاعلية لإدارة الملفات

sftp يفتح جلسة تفاعلية تتنقّل فيها وتنقل الملفات بأوامر شبيهة بـFTP لكن مُشفّرة:

sftp username@203.0.113.10

داخل الجلسة:

ls                  # ملفات الخادم
lls                 # ملفات جهازك المحلي (local ls)
cd /var/www         # تنقّل على الخادم
put localfile.txt   # ارفع ملفًا
get remotefile.txt  # نزّل ملفًا
put -r myfolder     # ارفع مجلدًا
bye                 # اخرج

rsync — المزامنة الذكية للملفات الكبيرة

rsync الأقوى للمزامنة والنسخ الاحتياطي: ينقل الفروق فقط، فيستأنف ويُسرّع التحديثات الكبيرة:

rsync -avz -e "ssh -p 2222" ./site/ username@203.0.113.10:/var/www/site/
العَلمالوظيفة
-aوضع الأرشفة (يحفظ الصلاحيات والتواريخ)
-vإخراج تفصيلي
-zضغط أثناء النقل
-e "ssh -p 2222"تحديد منفذ/خيارات SSH
--deleteحذف ما لم يعد موجودًا في المصدر (احذر)
--dry-runمحاكاة دون تنفيذ فعلي (للاختبار)
الأداةالأفضل لـتفاعلية؟نقل تفاضلي؟
scpنسخة سريعة لمرّة واحدةلالا
sftpتصفّح وإدارة ملفات يدويًانعملا
rsyncمزامنة ونسخ احتياطي متكرّرلانعم

تأمين SSH: أهمّ خطوات بعد الإعداد

خادمك على الإنترنت العام يتعرّض لمحاولات اختراق آلية على مدار الساعة. هذه الإجراءات تُقلّص سطح الهجوم بشكل كبير. كلّها تُجرى عبر ملف إعداد خادم SSH:

sudo nano /etc/ssh/sshd_config

بعد أي تعديل، اختبر الإعداد ثم أعد تشغيل الخدمة:

sudo sshd -t                      # تحقّق من سلامة الإعداد قبل إعادة التشغيل
sudo systemctl restart ssh        # أو: sudo systemctl restart sshd

تحذير حاسم: لا تغلق جلستك الحالية بعد التعديل قبل أن تفتح جلسة جديدة في نافذة منفصلة وتتأكّد أنها تعمل. إن أخطأت في الإعداد وأغلقت جلستك، قد تُحبَس خارج خادمك.

1) إنشاء مستخدم غير root وتعطيل دخول root

أخطر شيء هو السماح بدخول root مباشرة عبر SSH، لأن المهاجمين يعرفون اسمه دائمًا. أنشئ مستخدمًا عاديًا بصلاحيات sudo أولًا:

adduser deploy
usermod -aG sudo deploy

انسخ مفتاحك لهذا المستخدم (ssh-copy-id deploy@...)، اختبر دخوله، ثم في sshd_config عطّل دخول root:

PermitRootLogin no

2) تعطيل المصادقة بكلمة المرور

بعد التأكّد أن مفتاحك يعمل تمامًا، عطّل كلمة المرور لتُغلق باب التخمين نهائيًا:

PasswordAuthentication no
PubkeyAuthentication yes
ChallengeResponseAuthentication no

3) تحديد المستخدمين المسموح لهم

اسمح فقط لمستخدمين محدّدين بالدخول عبر SSH:

AllowUsers deploy admin

4) تغيير المنفذ الافتراضي (اختياري)

تغيير المنفذ من 22 لا يوفّر أمانًا حقيقيًا (أمن بالغموض)، لكنه يقلّل ضجيج محاولات الدخول الآلية في سجلّاتك بشكل ملحوظ:

Port 2222

تذكّر فتح المنفذ الجديد في جدار الحماية قبل إعادة التشغيل، وإلا حُبست خارجًا:

sudo ufw allow 2222/tcp
sudo ufw delete allow 22/tcp     # بعد التأكّد أن 2222 يعمل
sudo ufw enable
الإعداد في sshd_configالقيمة الموصى بهاالأثر
PermitRootLoginnoيمنع دخول root مباشرة
PasswordAuthenticationnoيُلغي تخمين كلمات المرور
PubkeyAuthenticationyesيفعّل مصادقة المفاتيح
AllowUsersdeployيحصر الدخول بمستخدمين محدّدين
Port2222يقلّل ضجيج الهجمات الآلية
MaxAuthTries3يحدّ محاولات المصادقة لكل اتصال
LoginGraceTime30يقطع الاتصالات المعلّقة بسرعة

5) تركيب Fail2ban لحظر المهاجمين تلقائيًا

Fail2ban يراقب سجلّات الدخول، وعند رصد عدّة محاولات فاشلة من IP واحد، يحظره تلقائيًا في جدار الحماية لفترة:

sudo apt update
sudo apt install fail2ban
sudo systemctl enable --now fail2ban

أنشئ إعدادًا محليًا لئلا تُمحى تخصيصاتك عند التحديث:

sudo nano /etc/fail2ban/jail.local

وأضف:

[sshd]
enabled = true
port = 2222
maxretry = 4
bantime = 3600
findtime = 600

أعد التشغيل وتحقّق من الحالة:

sudo systemctl restart fail2ban
sudo fail2ban-client status sshd

هذه المبادئ نفسها — أقلّ امتيازات، حصر الوصول، حظر المحاولات الفاشلة — تنطبق على كل واجهات إدارة خادمك، وليس SSH فقط. إن كنت تدير لوحة تحكّم أيضًا، فطبّق المنطق ذاته كما في دليل تأمين لوحة cPanel.

تحتاج موارد مخصّصة وتحكّمًا كاملًا؟

خطط VPS من wpressly بموارد مضمونة وصلاحية root، مُدارة وغير مُدارة، مع دعم عربي للإعداد والتأمين من اليوم الأول.

استعرض خطط VPS

عملاء الاتصال: ويندوز وماك ولينكس

أداة الاتصال تختلف قليلًا حسب نظام جهازك المحلي.

ماك ولينكس

كلاهما يأتي بعميل OpenSSH مدمجًا. افتح تطبيق الطرفية (Terminal) واكتب أمر ssh مباشرة. كل الأوامر في هذا الدليل تعمل دون أي تثبيت إضافي.

ويندوز

عندك خياران ممتازان:

  1. OpenSSH المدمج في PowerShell: ويندوز 10/11 يأتيان بعميل OpenSSH جاهز. افتح PowerShell واكتب أوامر ssh وscp وssh-keygen تمامًا كما في لينكس. هذا الخيار الأبسط والموصى به اليوم.

  2. PuTTY: برنامج رسومي عريق. تُدخل فيه عنوان الخادم والمنفذ ضمن واجهة نوافذ. للمفاتيح يستخدم PuTTY صيغة .ppk خاصة تُولّدها أداة PuTTYgen، وتنقل الملفات بأداة pscp المرافقة.

النظامالعميل الافتراضيكيف تبدأ
لينكسOpenSSH مدمجطرفية → ssh user@ip
ماكOpenSSH مدمجTerminal → ssh user@ip
ويندوز 10/11OpenSSH في PowerShellPowerShell → ssh user@ip
ويندوز (بديل)PuTTY + PuTTYgenواجهة رسومية + مفاتيح .ppk

إدارة المفاتيح ووكيل ssh-agent

إن وضعت عبارة مرور على مفتاحك (وهو الصواب)، سيطلبها في كل اتصال. هنا يأتي دور ssh-agent: برنامج يحتفظ بمفتاحك مفكوكًا في الذاكرة طوال الجلسة، فتُدخل العبارة مرّة واحدة فقط.

شغّل الوكيل وأضف مفتاحك:

eval "$(ssh-agent -s)"      # شغّل الوكيل
ssh-add ~/.ssh/id_ed25519   # أضف المفتاح (ستُدخل العبارة مرّة واحدة)
ssh-add -l                  # اعرض المفاتيح المحمّلة حاليًا
الأمرالوظيفة
ssh-add keyإضافة مفتاح للوكيل
ssh-add -lعرض المفاتيح المحمّلة
ssh-add -d keyإزالة مفتاح معيّن
ssh-add -Dإزالة كل المفاتيح

نصائح لإدارة آمنة للمفاتيح:

  • مفتاح لكل شخص، لا مفتاح مشترك: هكذا تُلغي وصول شخص بحذف مفتاحه فقط.
  • انسخ مفتاحك الخاص احتياطيًا في مكان آمن مُشفّر — فقدانه يعني فقدان وصولك (إن عطّلت كلمة المرور).
  • دوّر المفاتيح دوريًا للحسابات الحسّاسة، واحذف القديمة من authorized_keys.
  • لا ترفع مفتاحك الخاص أبدًا إلى مستودع Git أو خدمة سحابية غير مُشفّرة.

حلّ الأخطاء الشائعة (Troubleshooting)

أكثر رسائل خطأ SSH شيوعًا وحلولها المباشرة.

Permission denied (publickey)

يعني أن الخادم رفض مفتاحك. الأسباب الشائعة: المفتاح العام غير موجود في authorized_keys، أو صلاحيات مجلد .ssh خاطئة، أو تستخدم اسم مستخدم خاطئ. أصلح الصلاحيات على الخادم:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

وللتشخيص التفصيلي، اتصل بوضع verbose لرؤية أي مفتاح يُجرَّب ولماذا يُرفض:

ssh -v username@203.0.113.10

Host key verification failed

تغيّر مفتاح الخادم عن المحفوظ في known_hosts. قد يكون السبب مشروعًا (أُعيد بناء الخادم) أو خطيرًا (انتحال). إن كنت متأكّدًا أن التغيير مشروع، احذف المُدخلة القديمة:

ssh-keygen -R 203.0.113.10

ثم اتصل مجدّدًا واقبل البصمة الجديدة.

Connection refused / Connection timed out

refused يعني أن الجهاز رفض الاتصال على ذلك المنفذ (خدمة SSH متوقّفة أو المنفذ مغلق). timed out يعني أنه لم يردّ أصلًا (الخادم مطفأ، IP خاطئ، أو جدار حماية يُسقِط الحزم). تحقّق:

# على الخادم (إن وصلت بطريقة أخرى): تأكّد أن SSH يعمل
sudo systemctl status ssh
# تأكّد أن المنفذ مفتوح في جدار الحماية
sudo ufw status

Too many authentication failures

يحاول العميل مفاتيح كثيرة فيتجاوز حدّ الخادم قبل أن يصل لمفتاحك الصحيح. أجبر مفتاحًا واحدًا:

ssh -o IdentitiesOnly=yes -i ~/.ssh/id_ed25519 username@203.0.113.10
الخطأالسبب الأرجحالحلّ
Permission denied (publickey)المفتاح غير مثبّت أو صلاحيات خاطئةتحقّق من authorized_keys وchmod 600
Host key verification failedتغيّر مفتاح الخادمssh-keygen -R host ثم أعد الاتصال
Connection refusedخدمة SSH متوقّفة أو المنفذ مغلقشغّل sshd وافتح المنفذ
Connection timed outالخادم مطفأ أو IP/جدار حمايةتحقّق من IP وحالة الخادم والجدار
Too many authentication failuresتجربة مفاتيح كثيرةاستخدم -o IdentitiesOnly=yes -i key
WARNING: UNPROTECTED PRIVATE KEYصلاحيات المفتاح الخاص فضفاضةchmod 600 ~/.ssh/id_ed25519

نصائح خبير وأخطاء شائعة يقع فيها المبتدئون

  • لا تعطّل كلمة المرور قبل اختبار المفتاح: أكثر سبب للحبس خارج الخادم. افتح جلسة جديدة بالمفتاح وتأكّد أنها تعمل قبل أي تعطيل.
  • لا تعمل دائمًا بـroot: أنشئ مستخدمًا بصلاحيات sudo واعمل به؛ يقلّل خطر الأوامر الكارثية ويترك أثرًا للتدقيق.
  • استخدم tmux أو screen للمهامّ الطويلة: إن انقطع اتصالك أثناء عملية طويلة (تحديث، نسخ احتياطي)، فقد تتوقّف. هذه الأدوات تُبقي الجلسة حيّة على الخادم.
  • فعّل ServerAliveInterval في ~/.ssh/config لمنع قطع الجلسات الخاملة من جدران الحماية.
  • احتفظ بنسخة من مفتاحك الخاص في مدير كلمات مرور أو وسيط مُشفّر؛ فقدانه = فقدان الوصول.
  • راجع authorized_keys دوريًا واحذف مفاتيح من لم يعودوا يحتاجون الوصول.
  • انتبه لـrm -r وrm -rf: لا تراجع، ولا سلّة محذوفات على الخادم. تأكّد من المسار مرّتين.

الأسئلة الشائعة

ما الفرق بين SSH وSSL/TLS؟ كلاهما يستخدم التشفير، لكن لأغراض مختلفة. SSH بروتوكول للدخول الآمن والتحكّم في خادم بعيد عبر سطر الأوامر ونقل الملفات. SSL/TLS بروتوكول لتأمين الاتصالات بين المتصفّحات والمواقع (https). باختصار: SSH لإدارة الخادم، وTLS لتأمين زيارات موقعك.

هل أحتاج معرفة لينكس قبل استخدام SSH؟ SSH نفسه سهل: أمر واحد للاتصال. لكن بعد الدخول ستحتاج أساسيات أوامر لينكس (التنقّل، الملفات، الصلاحيات، sudo) لإنجاز أي شيء مفيد. القسم الخاص بالأوامر في هذا الدليل يكفيك للبداية، وستتعلّم الباقي بالممارسة.

هل المنفذ 22 آمن أم يجب تغييره؟ المنفذ 22 آمن بحدّ ذاته؛ الأمان يأتي من التشفير والمصادقة لا من رقم المنفذ. تغيير المنفذ "أمن بالغموض" لا يصدّ مهاجمًا جادًّا، لكنه يقلّل ضجيج محاولات الدخول الآلية في سجلّاتك. الأهمّ بكثير هو تعطيل دخول root وكلمة المرور واستخدام المفاتيح.

ماذا لو فقدت مفتاحي الخاص؟ إن كانت كلمة المرور ما زالت مفعّلة، ادخل بها ثم ولّد مفتاحًا جديدًا وثبّته. إن كنت عطّلت كلمة المرور، فستحتاج وحدة تحكّم لوحة المزوّد (console/VNC أو وضع الإنقاذ rescue mode) للدخول وتثبيت مفتاح جديد. لذلك ينصح دائمًا بالاحتفاظ بنسخة احتياطية مُشفّرة من مفتاحك الخاص.

ما الفرق بين ed25519 وRSA؟ كلاهما نوع مفاتيح. ed25519 أحدث: مفاتيحه أقصر وأسرع وأمانه ممتاز، وهو الموصى به اليوم. RSA أقدم وأوسع توافقًا مع الأنظمة القديمة جدًا، لكن يحتاج 4096 بت ليضاهي أمان ed25519. اختر ed25519 ما لم تتعامل مع نظام قديم لا يدعمه.

هل يمكن تسجيل دخول عدّة أشخاص بنفس الخادم عبر SSH؟ نعم، وهو السلوك الصحيح. أعطِ كل شخص مستخدمه الخاص ومفتاحه العام في authorized_keys الخاص بحسابه. هكذا تتعقّب من فعل ماذا، وتُلغي وصول أحدهم بحذف مفتاحه دون التأثير على الباقين.

لماذا لا تظهر أحرف كلمة المرور وأنا أكتبها؟ هذا سلوك أمني متعمّد في لينكس: لا تظهر النجوم ولا الأحرف حتى لا يرى أحد طول كلمة مرورك. اكتبها بثقة واضغط Enter — هي تُسجَّل فعليًا رغم أن الشاشة فارغة.

ما الفرق بين scp وsftp وrsync؟ الثلاثة تنقل ملفات عبر SSH. scp أبسط لنسخة سريعة لمرّة واحدة. sftp جلسة تفاعلية تتصفّح فيها وتنقل يدويًا. rsync الأذكى للمزامنة والنسخ الاحتياطي لأنه ينقل الفروق فقط ويستأنف، فيوفّر وقتًا كبيرًا في التحديثات المتكرّرة.

هل SSH مجاني؟ نعم. OpenSSH — التطبيق الأكثر استخدامًا للعميل والخادم — مفتوح المصدر ومجاني تمامًا، ومُضمّن في كل توزيعات لينكس وماك وويندوز 10/11. لا تكاليف ترخيص على الإطلاق.

كيف أُبقي جلسة SSH تعمل بعد إغلاق جهازي؟ الجلسة نفسها تنتهي بإغلاق جهازك، لكن يمكنك تشغيل العمليات الطويلة داخل tmux أو screen على الخادم؛ فتستمرّ في الخلفية حتى لو انقطع اتصالك، وتعود إليها لاحقًا بأمر tmux attach. هذا ضروري للتحديثات والنسخ الاحتياطي وأي مهمّة لا يجب أن تتوقّف.

هل يمكن استخدام SSH للأنفاق وإعادة توجيه المنافذ؟ نعم، وهي ميزة قوية. يمكن لـSSH إنشاء "أنفاق" مُشفّرة لإعادة توجيه منفذ من جهازك إلى خدمة على الخادم (مثل الوصول لقاعدة بيانات داخلية بأمان دون فتحها للإنترنت). هذا موضوع متقدّم، لكنه يوضّح أن SSH أكثر من مجرّد سطر أوامر بعيد.

الخلاصة

SSH هو مفتاحك الحرفي والمجازي للتحكّم الكامل في خادمك. تعلّمت كيف يعمل (تشفير، بصمة host key، مصادقة)، وكيف تتصل بـssh user@ip، ولماذا مفاتيح SSH أأمن بكثير من كلمات المرور وكيف تولّدها وتنسخها، وأهمّ أوامر لينكس بعد الدخول، وطرق نقل الملفات بـscp وsftp وrsync، وكيف تُؤمّن SSH بتعطيل root وكلمة المرور وتركيب Fail2ban، وكيف تحلّ أكثر الأخطاء شيوعًا. ابدأ اليوم بتوليد مفتاح ed25519 وتثبيته على خادمك، ثم عطّل كلمة المرور بعد التأكّد — فهذه الخطوة وحدها تنقلك من خادم معرّض للتخمين إلى خادم محصّن.

تحتاج موارد مخصّصة وتحكّمًا كاملًا؟

خطط VPS من wpressly بموارد مضمونة وصلاحية root، مُدارة وغير مُدارة، مع دعم عربي للإعداد والتأمين من اليوم الأول.

استعرض خطط VPS