النقل الآمن للملفات وإدارة الاتصال عن بُعد (SSH, SCP, SFTP)
يا هلا بالمهندسين! اليوم بنتكلم عن أساسيات أي مهندس أنظمة لينكس أو ديف أوبس: كيف تنقل ملفاتك بأمان وتدير خوادمك عن بُعد. الموضوع بسيط ومباشر، لكن معرفته ضرورية جداً.
SSH: السلاح السري للتحكم عن بُعد
الـ SSH، أو Secure Shell، هو بوابتك لكل خادم لينكس. بيوفر لك قناة اتصال مشفرة وآمنة عشان تنفذ أوامر، وتعدل ملفات، وتراقب السيرفرات كأنك جالس قدامها. الأهم هو الأمان، كل شيء بيتم تشفيره.
كيف تتصل؟
أبسط طريقة هي باستخدام اسم المستخدم وعنوان الـ IP أو اسم النطاق:
ssh username@your_server_ip_or_domain
بعدها بيطلب منك كلمة المرور. لو أول مرة تتصل، بيسألك إذا كنت متأكد من الاتصال، اكتب yes.
ملاحظة: لو عندك بورت SSH مخصص (مو 22)، بتستخدم
ssh -p port_number username@your_server_ip.
المفتاح هو الأمان: المصادقة بالمفاتيح (Key-based Authentication)
استخدام المفاتيح أفضل وأكثر أماناً من كلمات المرور. بتولد زوج من المفاتيح (عام وخاص)، بتحط المفتاح العام على السيرفر، وتستخدم المفتاح الخاص من جهازك. كذا ما تحتاج تدخل كلمة مرور كل مرة.
1. توليد المفتاح:
ssh-keygen -t rsa -b 4096
بيطلب منك تحفظ المفتاح فين وتدخل passphrase (كلمة مرور للمفتاح الخاص، أنصحك تستخدمها).
2. نسخ المفتاح العام للسيرفر:
ssh-copy-id username@your_server_ip_or_domain
لو ما اشتغل ssh-copy-id، ممكن تنسخ المفتاح يدوياً:
cat ~/.ssh/id_rsa.pub | ssh username@your_server_ip_or_domain "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"
بعدها، جرب تتصل. ما راح يطلب منك كلمة مرور (إلا لو حطيت passphrase للمفتاح الخاص).
ملف إعدادات SSH (~/.ssh/config)
هذا الملف كنز! بيخليك تختصر أوامر الاتصال الطويلة وتحدد إعدادات لكل سيرفر. افتح الملف أو أنشئه لو مو موجود:
nano ~/.ssh/config
مثال لإعدادات سيرفر:
Host my_web_server
HostName your_server_ip_or_domain
User username
Port 2222
IdentityFile ~/.ssh/id_rsa_web_server
ForwardAgent yes
الآن، عشان تتصل، بس اكتب:
ssh my_web_server
أسهل بكثير، صح؟
SCP: النقل السريع والآمن للملفات
الـ SCP، أو Secure Copy Protocol، بيستخدم الـ SSH عشان ينقل الملفات بين جهازك والسيرفرات بأمان. هو بسيط وسريع ومباشر.
نسخ ملف من جهازك للسيرفر:
scp /path/to/local/file.txt username@your_server_ip:/path/to/remote/directory/
مثال: scp my_script.sh user@192.168.1.100:/home/user/scripts/
نسخ ملف من السيرفر لجهازك:
scp username@your_server_ip:/path/to/remote/file.txt /path/to/local/directory/
مثال: scp user@192.168.1.100:/var/log/nginx/access.log ~/logs/
نسخ مجلد كامل (بشكل متكرر):
استخدم خيار -r (recursive):
scp -r /path/to/local/directory/ username@your_server_ip:/path/to/remote/directory/
أو من السيرفر لجهازك:
scp -r username@your_server_ip:/path/to/remote/directory/ /path/to/local/directory/
نصيحة: لو بتستخدم الـ SSH config، تقدر تستخدم الاسم المستعار:
scp my_script.sh my_web_server:/home/user/scripts/
SFTP: أكثر تفاعلية من SCP
الـ SFTP، أو SSH File Transfer Protocol، بيوفر لك واجهة تفاعلية شبيهة بـ FTP لكنها آمنة ومشفرة بالكامل عبر SSH. مناسب لما تحتاج تتصفح الملفات وتتنقل بين المجلدات قبل ما تنقلها.
كيف تتصل؟
sftp username@your_server_ip_or_domain
بعد الاتصال، بتشوف واجهة أوامر خاصة بـ SFTP.
أوامر SFTP الشائعة:
ls: لعرض محتويات المجلد الحالي على السيرفر.pwd: لعرض المسار الحالي على السيرفر.cd directory_name: للتنقل بين المجلدات على السيرفر.lpwd: لعرض المسار الحالي على جهازك المحلي.lcd directory_name: للتنقل بين المجلدات على جهازك المحلي.get remote_file: لتحميل ملف من السيرفر لجهازك.put local_file: لرفع ملف من جهازك للسيرفر.mget *.log: لتحميل عدة ملفات (مثلاً كل ملفات.log).mput *.conf: لرفع عدة ملفات.helpأو?: لعرض قائمة بالأوامر المتاحة.exitأوbye: للخروج من جلسة SFTP.
مثال لجلسة SFTP:
sftp user@my_web_server
sftp> ls
sftp> cd /var/www/html
sftp> get index.html
sftp> lcd ~/Downloads
sftp> put new_image.jpg
sftp> bye
نصائح وإرشادات أمنية
- عطل المصادقة بكلمة المرور: بعد ما تتأكد إن المصادقة بالمفاتيح شغالة تمام، عطل المصادقة بكلمة المرور في إعدادات SSH على السيرفر (
/etc/ssh/sshd_config). ابحث عنPasswordAuthentication yesوخليهاno، ثم أعد تشغيل خدمة SSH. - استخدم Passphrase قوية: لمفاتيح SSH الخاصة بك. هذا بيوفر طبقة أمان إضافية لو حد قدر يوصل لمفتاحك الخاص.
- غير منفذ SSH الافتراضي (22): هذا بيقلل من هجمات الاختراق التلقائية (brute-force attacks) اللي تستهدف المنفذ 22.
- حدد المستخدمين المسموح لهم: استخدم
AllowUsersأوAllowGroupsفيsshd_configلتحديد من يمكنه الاتصال عبر SSH. - حافظ على تحديث أنظمتك: دائماً تأكد إن السيرفرات وأنظمة التشغيل محدثة لآخر إصدار لسد أي ثغرات أمنية.
وبكذا، تكون عندك الأدوات الأساسية لنقل الملفات بأمان وإدارة سيرفراتك عن بُعد بكل احترافية. طبق اللي تعلمته، وإذا عندك أسئلة، أنا موجود!