الدليل العملي الشامل لـ SSH على أوبونتو

نظرة عامة

يتناول هذا الدليل المفاهيم الأساسية والاستخدامات الجوهرية لبروتوكول SSH (Secure Shell)، الأداة التي لا غنى عنها لإدارة خوادم لينكس والعمل عن بُعد. سنرشدك خطوة بخطوة عبر أوامر عملية في الطرفية، بدءاً من تثبيت حزمة العميل والاتصال الأساسي عن بُعد، مروراً بإنشاء أزواج مفاتيح SSH آمنة وإعداد المصادقة بدون كلمة مرور، وصولاً إلى تكوين ملف إعدادات SSH config وتقنيات إعادة توجيه المنافذ (Port Forwarding) المفيدة في بيئات العمل الحقيقية.

1. التحقق من عميل SSH والاتصال الأساسي عن بُعد

لمتابعة التطبيق العملي للاتصال عن بُعد عبر SSH، نقوم بتثبيت حزمة openssh-client وتحديثها إلى أحدث إصدار.

apt-get update -qq && apt-get install -y openssh-client

يتحقق الأمر ssh -V من معلومات إصدار عميل OpenSSH المثبت على النظام.
⚙️ [الخيارات الرئيسية]

-p : لتحديد رقم منفذ مخصص يستخدمه الخادم البعيد بدلاً من المنفذ الافتراضي 22.
-i : لتحديد مسار ملف المفتاح الخاص (Private Key) المستخدم للمصادقة بدلاً من كلمة المرور.
-v : لعرض رسائل تصحيح الأخطاء (Debug) للاطلاع بالتفصيل على مسار الاتصال وأسباب حدوث المشاكل.
-C : لتفعيل ضغط البيانات أثناء نقلها لتوفير سعة نطاق الشبكة (Bandwidth).
-o : لتمرير خيارات الإعداد المحددة عادةً في (~/.ssh/config) مباشرة من سطر الأوامر (مثل: ConnectTimeout).
-L : لضبط إعادة توجيه المنفذ المحلي (Local Port Forwarding) لتوجيه حركة المرور إلى خدمة في الشبكة البعيدة.
-R : لضبط إعادة توجيه المنفذ البعيد (Remote Port Forwarding) للسماح بالوصول من الخادم البعيد إلى خدمة محلية.

ssh -V

يحاول الأمر ssh -p 22 -o ConnectTimeout=5 testuser@127.0.0.1 الاتصال بالمضيف البعيد المحدد باستخدام المنفذ 22 مع مهلة اتصال قدرها 5 ثوانٍ.
يمنع هذا الإعداد الانتظار اللانهائي في حال بطء أو انقطاع الاتصال، ويتيح التحقق السريع من حالة الاتصال.

ssh -p 22 -o ConnectTimeout=5 testuser@127.0.0.1 || true

2. إنشاء زوج مفاتيح SSH وضبط الأذونات الآمنة

نقوم بتجهيز الدليل المخصص لحفظ ملفات مفاتيح SSH بأمان وقصر الوصول عليه للمالك فقط باستخدام الأمر mkdir -p ~/.ssh && chmod 700 ~/.ssh.

mkdir -p ~/.ssh && chmod 700 ~/.ssh

ينشئ الأمر ssh-keygen -t ed25519 -C 'lab-demo@ubuntu' -f ~/.ssh/id_ed25519 -N '' زوج مفاتيح SSH جديداً يعمل بدون كلمة مرور باستخدام خوارزمية Ed25519، وهي أحدث معايير التشفير.
تُظهر نتائج تنفيذ الأمر إنشاء المفتاح الخاص (id_ed25519)، والمفتاح العام (id_ed25519.pub)، وبصمة المفتاح الفريدة بنجاح.

ssh-keygen -t ed25519 -C ’lab-demo@ubuntu’ -f ~/.ssh/id_ed25519 -N ‘’

لتلبية متطلبات الأمان الصارمة لخادم SSH، نقوم بضبط أذونات الملفات عبر الأمر chmod 600 ~/.ssh/id_ed25519 && chmod 644 ~/.ssh/id_ed25519.pub، بحيث يتمكن المالك فقط من قراءة وكتابة المفتاح الخاص، بينما يتاح للجميع قراءة المفتاح العام.

chmod 600 ~/.ssh/id_ed25519 && chmod 644 ~/.ssh/id_ed25519.pub

يعرض الأمر ls -la ~/.ssh قائمة الملفات المنشأة داخل الدليل بالتفصيل مع حالة أذونات الأمان المطبقة عليها.
من خلال النتائج، يمكننا التحقق من تطبيق الأذونات المقصودة بشكل صحيح: الدليل .ssh يحمل drwx------ (700)، والمفتاح الخاص يحمل -rw------- (600)، والمفتاح العام يحمل -rw-r--r-- (644).

ls -la ~/.ssh

3. تسجيل المفتاح العام لتسجيل الدخول بدون كلمة مرور (ssh-copy-id)

نقوم بإنشاء الملف المخصص لحفظ المفاتيح العامة المستخدمة للمصادقة عند الاتصال عن بُعد وضبط أذونات الوصول ليتمكن المالك فقط من قراءته والكتابة إليه عبر الأمر touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys.

touch ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys

لإضافة محتوى المفتاح العام الذي أنشأناه إلى قائمة المفاتيح المصرح بها، ننفذ الأمر cat ~/.ssh/id_ed25519.pub >> ~/.ssh/authorized_keys.

cat ~/.ssh/id_ed25519.pub » ~/.ssh/authorized_keys

يستعلم الأمر ssh-keygen -l -f ~/.ssh/authorized_keys عن بصمة ملف المفاتيح المصرح بها للتحقق من إدراج المفتاح العام بشكل سليم.
تؤكد النتيجة تسجيل مفتاح Ed25519 العام بطول 256 بت مع التعليق التوضيحي المحدد أثناء الإنشاء (lab-demo@ubuntu) بشكل صحيح.

ssh-keygen -l -f ~/.ssh/authorized_keys

4. تبسيط أوامر الاتصال المعقدة باستخدام ملف إعدادات SSH Config

بدلاً من إدخال معلومات الاتصال الطويلة في كل مرة، نقوم بتعريف عنوان IP للمضيف البعيد واسم المستخدم ورقم المنفذ ومسار مفتاح المصادقة داخل الملف ~/.ssh/config للاتصال بسهولة عبر اسم مستعار (Alias).

cat « ‘EOF’ > ~/.ssh/config
Host dev-server
HostName 127.0.0.1
User testuser
Port 22
IdentityFile ~/.ssh/id_ed25519
EOF

لتجنب رفض عميل SSH لملفات الإعداد غير الآمنة برمجياً، نضبط أذونات الملف عبر الأمر chmod 600 ~/.ssh/config لتمكين المالك فقط من قراءته والكتابة إليه.

chmod 600 ~/.ssh/config

يعرض الأمر cat ~/.ssh/config محتويات ملف إعدادات عميل SSH للتأكد من حالة التكوين.
توضح المخرجات حفظ اسم المضيف وحساب المستخدم والمنفذ والمفتاح الخاص للمصادقة تحت الاسم المستعار dev-server تماماً كما أردنا.

cat ~/.ssh/config

5. رفع إنتاجية العمل عن بُعد عبر تنفيذ الأوامر المفردة ونفق SSH

يتحقق الأمر ssh -V من إصدار عميل OpenSSH المثبت حالياً على النظام.

ssh -V

يقوم الأمر ssh -o BatchMode=yes -o ConnectTimeout=2 testuser@127.0.0.1 'uname -a; df -h' || true بتنفيذ أوامر استعراض معلومات النظام والتحقق من مساحة القرص مباشرة على المضيف البعيد دون الدخول في جلسة طرفية تفاعلية، ثم يُرجع النتائج.
يتيح هذا التكوين تنفيذ أوامر مفردة دون انتظار إدخال كلمة المرور، مما يجعله مثالياً وآمناً لسكربتات الأتمتة والمهام الدورية (Batch Jobs).

ssh -o BatchMode=yes -o ConnectTimeout=2 testuser@127.0.0.1 ‘uname -a; df -h’ || true

ينشئ الأمر ssh -f -N -L 8080:localhost:80 -o ConnectTimeout=2 testuser@127.0.0.1 || true نفقاً مشفراً وآمناً في الخلفية دون تنفيذ أي أوامر بعيدة، مما يحقق إعادة توجيه المنفذ المحلي عن طريق ربط المنفذ 8080 على النظام المحلي بالمنفذ 80 على الخادم البعيد.
يسمح ذلك بالوصول الآمن عبر المنفذ المحلي إلى خدمات الويب أو قواعد البيانات الداخلية البعيدة التي لا يمكن الوصول إليها مباشرة من الخارج.

ssh -f -N -L 8080:localhost:80 -o ConnectTimeout=2 testuser@127.0.0.1 || true

تعرفنا في هذا الدليل خطوة بخطوة على بيئة أوبونتو، بدءاً من الاتصال الأساسي عبر SSH، والمصادقة الآمنة بمفاتيح التشفير دون الحاجة لكلمة مرور، وحتى الاستفادة العملية من تقنية إعادة توجيه المنافذ.
نأمل أن تستفيد من هذه المهارات في بناء بيئة أكثر أماناً وسلاسة لإدارة خوادمك عن بُعد.