- 1 1. المقدمة
- 2 2. الإعداد الأساسي لـ SSH
- 3 الخلاصة
- 4 3. تعزيز أمان SSH
- 5 الخلاصة
- 6 4. إعدادات SSH المتقدمة
- 7 الخلاصة
- 8 5. استكشاف أخطاء SSH وإصلاحها
- 9 الخلاصة
- 10 6. الأسئلة الشائعة (FAQ)
- 10.1 6.1 كيف أحل مشكلة انقطاع اتصال SSH بعد فترة من الزمن؟
- 10.2 6.2 ماذا أفعل إذا نسيت كلمة مرور المستخدم ولا أستطيع الدخول عبر SSH؟
- 10.3 6.3 كيف أستخدم SSH في Windows؟
- 10.4 6.4 كيف أضبط SSH على Ubuntu WSL (Windows Subsystem for Linux)؟
- 10.5 6.5 ما هي أفضل تدابير الأمان الإضافية بعد إعداد SSH؟
- 10.6 6.6 كيف أراقب سجلات SSH بشكل فوري؟
- 10.7 6.7 كيف أجعل الاتصال عبر SSH أكثر سهولة؟
- 11 الخلاصة
- 12 مقالات ذات صلة
1. المقدمة
إعداد SSH في Ubuntu أمر بالغ الأهمية لإدارة الخوادم عن بُعد. SSH (الصدفة الآمنة) هو بروتوكول يوفر اتصالاً مشفراً وآمناً، ويُستخدم على نطاق واسع للوصول إلى الخوادم عن بُعد، وتنفيذ الأوامر، ونقل الملفات بأمان.
في هذه المقالة، سنشرح بالتفصيل كيفية إعداد SSH في Ubuntu بدءًا من خطوات التثبيت الأساسية وحتى تدابير الأمان المتقدمة.
1.1 لماذا تقوم بإعداد SSH على Ubuntu؟
1.1.1 ما هو SSH؟
SSH (الصدفة الآمنة) هو بروتوكول يتيح الاتصالات الآمنة عبر الشبكة. يُستخدم SSH عادةً لتسجيل الدخول عن بُعد إلى الخوادم، نقل الملفات، وإنشاء نفق آمن (port forwarding). على عكس Telnet أو FTP، يتم تشفير جميع البيانات المنقولة عبر SSH، مما يوفر مستوى عالٍ من الأمان.
1.1.2 متى تحتاج إلى SSH في Ubuntu؟
هناك عدة سيناريوهات تحتاج فيها إلى إدارة Ubuntu عن بُعد:
- إدارة الخوادم السحابية: عند استخدام خدمات سحابية مثل AWS أو GCP أو Vultr، تحتاج إلى SSH للاتصال بالخادم وإدارته عن بُعد.
- التحكم عن بُعد عبر الشبكة المحلية: يمكنك الوصول إلى خوادم الشركة أو أجهزة التطوير عن طريق SSH للعمل عن بُعد.
- إدارة أجهزة IoT: مثل التحكم عن بُعد في أجهزة Raspberry Pi أو أجهزة مدمجة أخرى باستخدام SSH.
في الإعداد الافتراضي لـ Ubuntu، يكون خادم SSH غير مفعل. لذلك ستحتاج إلى تثبيته وتكوينه يدويًا.
2. الإعداد الأساسي لـ SSH
لاستخدام SSH في Ubuntu، يجب تثبيت خادم SSH (OpenSSH) وتكوينه بشكل صحيح. في هذا القسم، سنشرح خطوات التثبيت، إعدادات SSH الأساسية، تكوين جدار الحماية، وطريقة الاتصال.
2.1 تثبيت وتشغيل OpenSSH
2.1.1 ما هو OpenSSH؟
OpenSSH هو برنامج مفتوح المصدر يُطبق بروتوكول SSH. بالإضافة إلى الاتصال الآمن عن بُعد، يوفر ميزات نقل الملفات الآمن (SCP و SFTP) وتوجيه المنافذ (port forwarding).
2.1.2 تثبيت OpenSSH
في Ubuntu، خادم SSH غير مثبت افتراضيًا. لتثبيته، نفّذ الأمر التالي:
sudo apt update && sudo apt install -y openssh-serverسيقوم هذا الأمر بتحديث قائمة الحزم وتثبيت خادم OpenSSH.
2.1.3 بدء وتشغيل SSH تلقائياً
بعد الانتهاء من التثبيت، قم بتشغيل خدمة SSH وتمكينها لتعمل تلقائيًا مع بدء النظام:
sudo systemctl enable --now sshباستخدام خيار enable سيتم تشغيل خدمة SSH تلقائيًا عند كل إعادة تشغيل للنظام.
2.1.4 التحقق من عمل SSH
للتحقق من أن خادم SSH يعمل بشكل صحيح، استخدم الأمر التالي:
systemctl status sshإذا ظهرت نتيجة مشابهة للآتي، فهذا يعني أن الخدمة تعمل:
● ssh.service - OpenBSD Secure Shell server
Loaded: loaded (/lib/systemd/system/ssh.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2025-02-28 12:00:00 UTC; 5min agoإذا ظهرت حالة inactive (dead) أو failed يمكنك تشغيل الخدمة يدويًا:
sudo systemctl start ssh2.2 إعداد جدار الحماية (UFW)
يُوفر Ubuntu جدار حماية سهل الإعداد يُسمى ufw (جدار الحماية المبسط). ستحتاج إلى إعداد UFW للسماح باتصالات SSH.
2.2.1 التحقق من حالة UFW
تحقق من حالة جدار الحماية باستخدام:
sudo ufw statusمثال إذا كان UFW معطل:
Status: inactiveمثال إذا كان UFW مفعل:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere2.2.2 السماح باتصال SSH
للسماح بمنفذ SSH الافتراضي 22، استخدم:
sudo ufw allow sshأو لتحديد المنفذ يدويًا:
sudo ufw allow 22/tcp2.2.3 تفعيل UFW
إذا كان UFW غير مفعل، فعّله بالأمر:
sudo ufw enableقبل التفعيل، تأكد من أن SSH مسموح به حتى لا تفقد الاتصال عن بُعد.
2.2.4 التحقق من الإعدادات
للتحقق من إعدادات الجدار الناري:
sudo ufw status verboseمثال على الإخراج:
Status: active
To Action From
-- ------ ----
22/tcp ALLOW Anywhere
22/tcp (v6) ALLOW Anywhere (v6)إذا كان المنفذ 22 مسموحًا، فهذا يعني أن SSH متاح.
2.3 كيفية الاتصال بخادم SSH
بعد التأكد من أن خادم SSH يعمل، يمكنك الاتصال من الحاسوب العميل.
2.3.1 الاتصال من Linux أو macOS
افتح الطرفية ونفّذ الأمر التالي:
ssh اسم_المستخدم@عنوان_IP_الخادممثال:
ssh user@192.168.1.100عند الاتصال لأول مرة، قد يظهر التحذير التالي:
The authenticity of host '192.168.1.100 (192.168.1.100)' can't be established.
ECDSA key fingerprint is SHA256:xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.
Are you sure you want to continue connecting (yes/no)?اكتب yes واضغط Enter لإكمال الاتصال.
2.3.2 الاتصال من Windows
في Windows، يمكنك استخدام PowerShell أو PuTTY للاتصال بخادم SSH.
باستخدام PowerShell
بدءًا من Windows 10، يتوفر عميل SSH مدمج في PowerShell. استخدم الأمر التالي:
ssh اسم_المستخدم@عنوان_IP_الخادمباستخدام PuTTY
- نزّل وثبّت البرنامج الرسمي PuTTY.
- افتح PuTTY وأدخل عنوان IP للخادم في
Host Name (or IP address) - عيّن
Connection typeإلىSSHواضغطOpen - أدخل اسم المستخدم وكلمة المرور للاتصال
الخلاصة
في هذا القسم، شرحنا خطوات الإعداد الأساسية لـ SSH في Ubuntu:
- كيفية تثبيت وتشغيل OpenSSH
- إعداد الجدار الناري للسماح بالاتصال عبر SSH
- طرق الاتصال من أنظمة Linux/macOS و Windows
3. تعزيز أمان SSH
SSH هو أداة قوية للاتصال عن بُعد، ولكن ترك الإعدادات الافتراضية قد يؤدي إلى مخاطر أمنية. غالباً ما يستهدف المهاجمون خوادم SSH عبر هجمات القوة الغاشمة أو مسح المنافذ. لذلك، من الضروري تنفيذ إعدادات أمان قوية لتأمين بيئة SSH الخاصة بك.
3.1 حظر تسجيل الدخول كمستخدم root
في بعض إعدادات Ubuntu الافتراضية، قد يكون تسجيل الدخول كمستخدم root مفعلًا، وهذا يمثل خطراً أمنياً كبيراً لأن حساب root يمتلك صلاحيات كاملة. من الأفضل تعطيل تسجيل الدخول المباشر بالـ root واستخدام حساب مستخدم عادي مع صلاحيات sudo.
3.1.1 خطوات الإعداد
- حرّر ملف إعدادات SSH
/etc/ssh/sshd_config:
sudo nano /etc/ssh/sshd_config- ابحث عن السطر
PermitRootLoginوقم بتغييره إلىno:
PermitRootLogin no- احفظ الملف وأعد تشغيل خدمة SSH:
sudo systemctl restart ssh- تحقق من التغيير بالأمر التالي:
sudo grep PermitRootLogin /etc/ssh/sshd_configإذا كانت النتيجة PermitRootLogin no، فقد تم تطبيق الإعداد بنجاح.
3.2 تعطيل المصادقة بكلمة المرور واستخدام مفاتيح SSH
المصادقة باستخدام المفاتيح العامة/الخاصة أكثر أمانًا من كلمات المرور، وتقلل من فرص النجاح لهجمات القوة الغاشمة.
3.2.1 إنشاء مفتاح SSH
أنشئ مفتاح SSH على الحاسوب المحلي:
ssh-keygen -t rsa -b 4096 -f ~/.ssh/id_rsa- المفتاح الخاص (
id_rsa): احتفظ به في جهازك، لا تشاركه مع أي شخص. - المفتاح العام (
id_rsa.pub): يُرفع إلى الخادم.
3.2.2 نقل المفتاح العام إلى الخادم
استخدم الأمر التالي لنقل المفتاح العام إلى خادم Ubuntu:
ssh-copy-id اسم_المستخدم@عنوان_IP_الخادم3.2.3 تعطيل المصادقة بكلمة المرور
حرّر ملف إعداد SSH:
sudo nano /etc/ssh/sshd_configابحث عن السطر التالي وعدله إلى:
PasswordAuthentication noأعد تشغيل خدمة SSH لتطبيق الإعداد:
sudo systemctl restart ssh3.3 السماح بالوصول عبر SSH لمستخدمين محددين فقط
يمكنك تحديد من يُسمح لهم بالاتصال بخادم SSH عبر إضافة السطر التالي في sshd_config:
AllowUsers user1 user2ثم أعد تشغيل الخدمة:
sudo systemctl restart ssh3.4 تغيير منفذ SSH الافتراضي
المنفذ 22 هو الهدف الرئيسي للهجمات. تغيير المنفذ يضيف طبقة أمان إضافية:
sudo nano /etc/ssh/sshd_configPort 2200sudo systemctl restart sshولا تنس السماح بالمنفذ الجديد في UFW:
sudo ufw allow 2200/tcp3.5 منع هجمات القوة الغاشمة باستخدام Fail2Ban
Fail2Ban يقوم بمراقبة محاولات تسجيل الدخول الفاشلة وحظر عناوين الـ IP المشبوهة تلقائيًا.
3.5.1 تثبيت Fail2Ban
sudo apt install fail2ban -y3.5.2 إعداد الملف jail.local
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local[sshd]
enabled = true
port = 2200
maxretry = 3
findtime = 600
bantime = 36003.5.3 إعادة تشغيل الخدمة
sudo systemctl restart fail2ban3.5.4 التحقق من قائمة الحظر
sudo fail2ban-client status sshdالخلاصة
شرحنا في هذا القسم كيفية تقوية أمان SSH:
- تعطيل تسجيل الدخول بالـ root
- إلغاء المصادقة بكلمة المرور وتفعيل المفاتيح العامة/الخاصة
- تحديد المستخدمين المسموح لهم بالوصول
- تغيير منفذ SSH الافتراضي
- تثبيت Fail2Ban لمنع الهجمات التلقائية
تطبيق هذه الخطوات سيزيد من أمان اتصالك عن طريق SSH.
4. إعدادات SSH المتقدمة
بعد تطبيق الإعدادات الأساسية وتعزيز الأمان، يمكنك الانتقال إلى إعدادات أكثر تقدمًا لتحسين الأداء والأمان:
4.1 استخدام ssh.socket في Ubuntu 22.10 وما بعده
بدءًا من Ubuntu 22.10، قد تتم إدارة SSH عن طريق ssh.socket بدلاً من ssh.service. يعمل هذا على تشغيل SSH عند الطلب ويوفر موارد النظام.
4.1.1 التحقق من حالة ssh.socket
sudo systemctl status ssh.socketمثال إذا كان مفعل:
● ssh.socket - OpenSSH Server Socket
Loaded: loaded (/lib/systemd/system/ssh.socket; enabled; vendor preset: enabled)
Active: active (listening) since Fri 2025-02-28 12:00:00 UTC4.1.2 تفعيل أو تعطيل ssh.socket
sudo systemctl enable --now ssh.socketلإعادة التبديل إلى ssh.service التقليدي:
sudo systemctl disable --now ssh.socket
sudo systemctl enable --now ssh.service4.2 نفق SSH (توجيه المنفذ)
يمكنك استخدام نفق SSH لنقل البيانات بأمان بين الخادم والجهاز المحلي دون كشفها عبر الإنترنت.
4.2.1 توجيه المنفذ المحلي (Local Port Forwarding)
مثال: الوصول الآمن لقاعدة بيانات MySQL على الخادم من الجهاز المحلي:
ssh -L 3306:localhost:3306 اسم_المستخدم@عنوان_IP_الخادم4.2.2 التوجيه العكسي (Reverse Port Forwarding)
مثال: نشر خادم الويب المحلي عبر منفذ 8080 في الخادم البعيد:
ssh -R 8080:localhost:80 اسم_المستخدم@عنوان_IP_الخادم4.2.3 التوجيه الديناميكي (SOCKS Proxy)
يمكنك استخدام SSH كوكيل (Proxy) لتصفح الإنترنت بشكل مجهول:
ssh -D 1080 اسم_المستخدم@عنوان_IP_الخادم4.3 استقبال SSH على عدة منافذ
- حرّر ملف
/etc/ssh/sshd_config
Port 22
Port 2200- أعد تشغيل خدمة SSH
sudo systemctl restart ssh- اسمح بالمنفذ الجديد في UFW
sudo ufw allow 2200/tcp4.4 السماح بالاتصال من عناوين IP محددة فقط
لزيادة الأمان، يمكنك تقييد الوصول إلى SSH ليكون فقط من عناوين IP معينة.
4.4.1 إعداد /etc/hosts.allow
sudo nano /etc/hosts.allowsshd: 192.168.1.1004.4.2 إعداد /etc/hosts.deny
sudo nano /etc/hosts.denysshd: ALLبهذا، يُسمح فقط للـ IP المحدد بالوصول، ويتم رفض باقي العناوين.
الخلاصة
تعلمت في هذا القسم كيفية ضبط إعدادات SSH المتقدمة في Ubuntu:
- إدارة ssh.socket في الإصدارات الحديثة من Ubuntu
- استخدام توجيه المنفذ (SSH Tunnel) للاتصال الآمن
- استقبال SSH عبر منافذ متعددة
- السماح بالوصول فقط من عناوين IP معينة
هذه الإعدادات ترفع مستوى الأمان والكفاءة في إدارة الخوادم عبر SSH.
5. استكشاف أخطاء SSH وإصلاحها
حتى مع الإعداد الصحيح، قد تواجه مشكلات عند محاولة الاتصال عبر SSH. في هذا القسم سنستعرض أكثر المشاكل شيوعًا وكيفية حلها خطوة بخطوة.
5.1 في حال عدم القدرة على الاتصال بـ SSH
إذا ظهرت رسائل مثل Connection refused أو Timeout عند محاولة الاتصال، هناك عدة أسباب محتملة:
5.1.1 خدمة SSH غير نشطة
تحقق من حالة خدمة SSH بالأمر:
sudo systemctl status sshالحل:
- إذا كانت الحالة
inactive (dead)أوfailed، أعد تشغيل الخدمة:
sudo systemctl restart ssh- لضمان التشغيل التلقائي بعد إعادة التشغيل:
sudo systemctl enable ssh5.1.2 المنفذ غير مفتوح بالشكل الصحيح
إذا تم تغيير منفذ SSH، عليك تحديده عند الاتصال:
ssh -p 2200 اسم_المستخدم@عنوان_IP_الخادمللتحقق من المنافذ المفتوحة:
sudo netstat -tulnp | grep sshأو:
ss -tulnp | grep ssh5.1.3 تحقق من إعدادات الجدار الناري (UFW)
sudo ufw statusإذا لم يكن SSH مسموحًا:
sudo ufw allow 22/tcpإذا كنت تستخدم منفذًا مختلفًا، أضف المنفذ الصحيح:
sudo ufw allow 2200/tcp5.2 إذا ظهرت أخطاء في المصادقة
5.2.1 اسم المستخدم أو كلمة المرور غير صحيحة
تأكد من كتابة اسم المستخدم الصحيح:
ssh اسم_المستخدم@عنوان_IP_الخادم5.2.2 إعدادات المصادقة بالمفتاح العام غير صحيحة
تحقق من وجود المفتاح في ~/.ssh/authorized_keys على الخادم:
cat ~/.ssh/authorized_keysوتأكد أنه يطابق المفتاح العام على جهازك المحلي ~/.ssh/id_rsa.pub.
5.2.3 صلاحيات مجلد .ssh غير صحيحة
chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keysأيضًا تحقق من صلاحيات مجلد المستخدم:
chmod 755 /home/اسم_المستخدم5.3 إذا كان اتصال SSH غير مستقر أو ينقطع بسرعة
5.3.1 ضبط ClientAliveInterval على الخادم
حرر ملف /etc/ssh/sshd_config وأضف:
ClientAliveInterval 60
ClientAliveCountMax 3ثم أعد تشغيل SSH:
sudo systemctl restart ssh5.3.2 ضبط إعدادات العميل المحلي
يمكنك إضافة الإعداد التالي إلى ~/.ssh/config على جهازك:
Host *
ServerAliveInterval 60
ServerAliveCountMax 35.4 التحقق من سجلات SSH (Logs)
5.4.1 عرض السجل بشكل فوري (Real-time)
sudo journalctl -u ssh -f5.4.2 البحث في السجلات القديمة
sudo cat /var/log/auth.log | grep sshsudo grep "Failed password" /var/log/auth.logالخلاصة
في هذا القسم تعلمت كيفية استكشاف مشكلات SSH وحلها:
- التحقق من حالة خدمة SSH
- التحقق من فتح المنفذ الصحيح
- فحص إعدادات الجدار الناري
- تدقيق إعدادات المصادقة بالمفتاح العام
- حل مشكلات الوقت والقطع التلقائي
- الاستفادة من سجلات SSH لتشخيص المشاكل
غالبية مشاكل SSH يمكن حلها بمراجعة الإعدادات الأساسية والشبكة.
6. الأسئلة الشائعة (FAQ)
هنا تجد أجوبة لأكثر الأسئلة شيوعًا حول إعداد واستخدام SSH في Ubuntu.
6.1 كيف أحل مشكلة انقطاع اتصال SSH بعد فترة من الزمن؟
6.1.1 ضبط إعدادات الخادم
ClientAliveInterval 60
ClientAliveCountMax 3بعد التعديل أعد تشغيل الخدمة:
sudo systemctl restart ssh6.1.2 ضبط إعدادات العميل المحلي
Host *
ServerAliveInterval 60
ServerAliveCountMax 36.2 ماذا أفعل إذا نسيت كلمة مرور المستخدم ولا أستطيع الدخول عبر SSH؟
6.2.1 إذا كان لديك وصول فعلي للخادم
- شغّل النظام في وضع المستخدم الأحادي (Single User Mode) من قائمة GRUB
- أعد تعيين كلمة المرور:
passwd اسم_المستخدم- أعد تشغيل الجهاز
6.2.2 إذا لم يكن لديك وصول فعلي (VPS/Cloud)
- استخدم ميزة الكونسول في مزود الخدمة السحابية (Cloud Console)
- يمكنك أيضًا تفعيل تسجيل الدخول عبر المفتاح العام
6.3 كيف أستخدم SSH في Windows؟
6.3.1 باستخدام PowerShell
ssh اسم_المستخدم@عنوان_IP_الخادم6.3.2 باستخدام PuTTY
- نزّل وثبّت PuTTY
- أدخل عنوان IP في
Host Name (or IP address) - حدد
SSHواضغطOpen - أدخل اسم المستخدم وكلمة المرور للاتصال
6.4 كيف أضبط SSH على Ubuntu WSL (Windows Subsystem for Linux)؟
6.4.1 تثبيت خادم SSH
sudo apt update && sudo apt install openssh-server6.4.2 تغيير إعدادات المصادقة
PasswordAuthentication yesابدأ الخدمة يدويًا:
sudo service ssh start6.5 ما هي أفضل تدابير الأمان الإضافية بعد إعداد SSH؟
6.5.1 تثبيت Fail2Ban
sudo apt install fail2ban -y[sshd]
enabled = true
port = 22
maxretry = 3
findtime = 600
bantime = 3600sudo systemctl restart fail2ban6.5.2 تغيير منفذ SSH
Port 2200sudo ufw allow 2200/tcp6.6 كيف أراقب سجلات SSH بشكل فوري؟
sudo journalctl -u ssh -fsudo cat /var/log/auth.log | grep ssh6.7 كيف أجعل الاتصال عبر SSH أكثر سهولة؟
6.7.1 استخدام ملف .ssh/config للإعداد السريع
Host myserver
HostName 192.168.1.100
User user
Port 2200
IdentityFile ~/.ssh/id_rsaبعد ذلك يمكنك الاتصال بالأمر:
ssh myserver6.7.2 استخدام ssh-agent لحفظ عبارة المرور للمفتاح
eval $(ssh-agent -s)
ssh-add ~/.ssh/id_rsaالخلاصة
في هذا القسم جمعنا أهم الأسئلة المتكررة حول SSH مع حلول عملية، لتسهيل إدارة خوادم Ubuntu بأمان وسهولة أكبر.
- حلول انقطاع الاتصال (Timeout)
- استعادة كلمة المرور
- استخدام SSH في Windows وWSL
- تعزيز الأمان بإجراءات إضافية
- مراقبة السجلات
- تسريع الاتصال باستخدام .ssh/config و ssh-agent
باتباعك لهذه النصائح، يمكنك إنشاء بيئة SSH آمنة وموثوقة لإدارة الخوادم عن بُعد.
مقالات ذات صلة
1. مقدمة يسمح لك استخدام SSH في Ubuntu بالوصول إلى الخوادم وأجهزة الكمبيوتر والتحكم فيها عن بُعد بأمان. يشرح هذا المقال[…]


