مقدمة عن SSH

SSH (Secure Shell) هو بروتوكول شبكة يستخدم للاتصال الآمن بأجهزة كمبيوتر أخرى عبر شبكة غير آمنة. يوفر SSH قناة آمنة عبر شبكة غير آمنة في هندسة العميل/الخادم، وربط تطبيق العميل SSH مع خادم SSH.

نصيحة: دائماً استخدم SSH للاتصال بالخوادم البعيدة بدلاً من البروتوكولات غير الآمنة مثل Telnet. SSH يوفر تشفيراً للبيئات مما يحمي معلوماتك من التنصت.

التثبيت والإعداد

كيفية تثبيت وتكوين SSH على أنظمة التشغيل المختلفة:

Terminal
# على أنظمة Ubuntu/Debian
sudo apt update
sudo apt install openssh-server

# على أنظمة CentOS/RHEL/Fedora
sudo yum install openssh-server
# أو
sudo dnf install openssh-server

# على macOS (مثبت مسبقاً عادةً)
# إذا لم يكن مثبتاً:
brew install openssh

# تمكين وتشغيل خدمة SSH
sudo systemctl enable ssh
sudo systemctl start ssh

# التحقق من حالة الخدمة
sudo systemctl status ssh
ملاحظة: تأكد من تحديث نظامك بانتظام للحصول على أحدث إصلاحات الأمان لبروتوكول SSH.
الأوامر الأساسية
إدارة المفاتيح
أوامر متقدمة
تكوين SSH

أوامر SSH الأساسية

الأوامر الأساسية للاتصال وإدارة الجلسات عن بعد:

الأمر الوصف
ssh <username>@<host>الاتصال بخادم عن بعد
ssh <username>@<host> -p <port>الاتصال باستخدام منفذ غير افتراضي
ssh -i <keyfile> <user>@<host>الاتصال باستخدام مفتاح خاص
ssh -v <user>@<host>وضع verbose لعرض تفاصيل الاتصال
ssh -C <user>@<host>ضغط البيانات لتحسين الأداء على اتصالات بطيئة
exit أو logoutإنهاء جلسة SSH
scp <file> <user>@<host>:<path>نسخ ملف إلى خادم بعيد
scp <user>@<host>:<file> <path>نسخ ملف من خادم بعيد
sftp <user>@<host>فتح جلسة نقل ملفات تفاعلية آمنة

إدارة مفاتيح SSH

إنشاء وإدارة مفاتيح المصادقة لتحسين الأمان:

الأمر الوصف
ssh-keygenإنشاء زوج مفاتيح SSH جديدة
ssh-keygen -t rsa -b 4096إنشاء مفتاح RSA بقوة 4096 بت
ssh-keygen -t ed25519إنشاء مفتاح باستخدام خوارزمية Ed25519 الأكثر أماناً
ssh-copy-id <user>@<host>نسخ المفتاح العام إلى الخادم البعيد
ssh-add <keyfile>إضافة مفتاح إلى وكيل المصادقة SSH
ssh-add -lعرض المفاتيح المضافة إلى الوكيل
ssh-add -Dحذف جميع المفاتيح من الوكيل
eval $(ssh-agent)تشغيل وكيل المصادقة SSH
ssh -o PasswordAuthentication=no <user>@<host>فرض استخدام المصادقة بالمفتاح فقط
مثال: إنشاء مفتاح وإضافته إلى الخادم
Terminal
# إنشاء مفتاح جديد
ssh-keygen -t ed25519 -C "your_email@example.com"

# نسخ المفتاح إلى الخادم البعيد
ssh-copy-id -i ~/.ssh/id_ed25519.pub user@hostname

# الاختبار الاتصال بدون كلمة مرور
ssh user@hostname

أوامر SSH المتقدمة

تقنيات وأوامر متقدمة لتحسين سير العمل مع SSH:

الأمر الوصف
ssh -L <local_port>:<remote_host>:<remote_port> <user>@<host>إنشاء نفق محلي (Local Port Forwarding)
ssh -R <remote_port>:<local_host>:<local_port> <user>@<host>إنشاء نفق بعيد (Remote Port Forwarding)
ssh -D <port> <user>@<host>إنشاء وكيل SOCKS ديناميكي
ssh -t <host1> ssh <host2>القفز عبر مضيفين (SSH Jump)
ssh -J <user>@<jump_host> <user>@<target_host>استخدام مضيف قفزة (Jump Host)
ssh <host> '<command>'تنفيذ أمر على الخادم البعيد دون فتح جلسة تفاعلية
rsync -avz -e ssh <local_dir> <user>@<host>:<remote_dir>مزامنة الملفات باستخدام rsync عبر SSH
ssh -N -L <port>:<host>:<port> <user>@<host>إنشاء نفق بدون فتح shell
ssh -o ConnectTimeout=10 <user>@<host>ضبط وقت المهلة للمحاولة الاتصال

تكوين SSH

إعدادات وتكوينات ملف ~/.ssh/config لتبسيط اتصالات SSH:

التكوين الوصف
Host <alias>إنشاء اسم مختصر للخادم
HostName <hostname_or_ip>تحديد اسم المضيف أو IP
User <username>تحديد اسم المستخدم
Port <port_number>تحديد منفذ مخصص
IdentityFile <path_to_key>تحديد مسار المفتاح الخاص
ProxyJump <user>@<jump_host>تكوين مضيف قفزة
LocalForward <local_port> <remote_host>:<remote_port>تكوين نقل منفذ محلي
ServerAliveInterval 60إرسال إشارات حية كل 60 ثانية
Compression yesتمكين ضغط البيانات
مثال: تكوين ملف ~/.ssh/config
Terminal
# مثال على تكوين SSH
Host myserver
    HostName server.example.com
    User myuser
    Port 2222
    IdentityFile ~/.ssh/myserver_key

Host production
    HostName 192.168.1.100
    User admin
    ProxyJump jumpuser@jumphost.example.com:22

Host *
    ServerAliveInterval 60
    TCPKeepAlive yes
    Compression yes

أمثلة عملية شائعة

مثال: الاتصال بخادم باستخدام منفذ مخصص
Terminal
ssh username@example.com -p 2222
مثال: نسخ ملف إلى خادم بعيد
Terminal
scp -P 2222 myfile.txt username@example.com:/remote/directory/
مثال: تنفيذ أمر على خادم بعيد
Terminal
ssh username@example.com 'ls -la /var/www'
مثال: إنشاء نفق آمن لخدمة ويب
Terminal
ssh -L 8080:localhost:80 username@example.com

بعد تنفيذ هذا الأمر، يمكنك الوصول إلى خدمة الويب على example.com من خلال زيارة http://localhost:8080 في متصفحك.

نصائح أمان SSH

تعطيل تسجيل الدخول بكلمة المرور: لمنع هجمات القوة الغاشمة، عطل المصادقة بكلمة المرور واستخدم المفاتيح فقط عن طريق تعيين PasswordAuthentication no في /etc/ssh/sshd_config.
تغيير المنفذ الافتراضي: تغيير منفذ SSH الافتراضي (22) يقلل من هجمات المسح التلقائي. استخدم منفذاً أعلى من 1024 وتأكد من فتحه في جدار الحماية.
استخدم جدار حماية: قيد عناوين IP المسموح لها بالاتصال بخادم SSH باستخدام جدار الحماية. على Ubuntu، يمكن استخدام ufw لذلك.

قائمة مراجعة أمان SSH