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 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.10 | IP أو اسم نطاق الخادم |
ملاحظة: المنفذ 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 من الصفر.
الرسم أعلاه يلخّص تدفّق إعداد خادم جديد: تتصل أولًا، تُنشئ مستخدمًا غير 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
| الخيار | المثال | الوظيفة |
|---|---|---|
Host | Host myserver | الاسم المختصر الذي تكتبه |
HostName | 203.0.113.10 | عنوان الخادم الفعلي |
User | deploy | اسم المستخدم الافتراضي |
Port | 2222 | المنفذ |
IdentityFile | ~/.ssh/id_ed25519 | المفتاح الخاص المستخدَم لهذا الخادم |
ServerAliveInterval | 60 | إرسال نبضة كل 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 | القيمة الموصى بها | الأثر |
|---|---|---|
PermitRootLogin | no | يمنع دخول root مباشرة |
PasswordAuthentication | no | يُلغي تخمين كلمات المرور |
PubkeyAuthentication | yes | يفعّل مصادقة المفاتيح |
AllowUsers | deploy | يحصر الدخول بمستخدمين محدّدين |
Port | 2222 | يقلّل ضجيج الهجمات الآلية |
MaxAuthTries | 3 | يحدّ محاولات المصادقة لكل اتصال |
LoginGraceTime | 30 | يقطع الاتصالات المعلّقة بسرعة |
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 مباشرة. كل الأوامر في هذا الدليل تعمل دون أي تثبيت إضافي.
ويندوز
عندك خياران ممتازان:
-
OpenSSH المدمج في PowerShell: ويندوز 10/11 يأتيان بعميل OpenSSH جاهز. افتح PowerShell واكتب أوامر
sshوscpوssh-keygenتمامًا كما في لينكس. هذا الخيار الأبسط والموصى به اليوم. -
PuTTY: برنامج رسومي عريق. تُدخل فيه عنوان الخادم والمنفذ ضمن واجهة نوافذ. للمفاتيح يستخدم PuTTY صيغة
.ppkخاصة تُولّدها أداة PuTTYgen، وتنقل الملفات بأداةpscpالمرافقة.
| النظام | العميل الافتراضي | كيف تبدأ |
|---|---|---|
| لينكس | OpenSSH مدمج | طرفية → ssh user@ip |
| ماك | OpenSSH مدمج | Terminal → ssh user@ip |
| ويندوز 10/11 | OpenSSH في PowerShell | PowerShell → 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