زوج المفاتيح أكثر أمانًا بكثير من كلمة المرور: فالمفتاح الخاص لا يغادر حاسوبك أبدًا، ولا تستطيع الروبوتات التي تفحص المنفذ 22 تخمينه. يتضمّن ويندوز 10 و11 أداة OpenSSH أصلًا، لذا ستنشئ مفتاحًا وتثبّته على VPS Linux Infrawire وتُبقيه محمّلًا في خدمة ssh-agent في ويندوز، وأخيرًا تعطّل الدخول بكلمة المرور.
📋 المتطلبات
- ويندوز 10 أو 11 مع عميل OpenSSH (تحقق بالأمر
ssh -Vفي PowerShell). - خادم VPS لينكس (Ubuntu 24.04 أو Debian 12 أو AlmaLinux 9 أو Rocky 9) ما زال بإمكانك الدخول إليه بكلمة المرور: من مساحة العميل الخاصة بك تجد عنوان IP وكلمة مرور root الخاصة بالـ VPS.
- نحو عشر دقائق، وجلسة SSH ثانية أو وحدة تحكم الـ VPS كشبكة أمان.
PowerShellssh -V
🔐 إنشاء مفتاح ed25519
افتح PowerShell (عادي وليس بصلاحيات المسؤول) ونفّذ:
PowerShellssh-keygen -t ed25519 -C 'USER@my-pc'
اقبل المسار الافتراضي C:\Users\USER\.ssh\id_ed25519 وأدخل عبارة مرور. تشفّر هذه العبارة المفتاح الخاص على القرص، فيصبح الملف المسروق عديم الفائدة. يُنشأ ملفان: id_ed25519 (خاص، لا تشاركه أبدًا) وid_ed25519.pub (عام).
📤 نسخ المفتاح العام إلى الـ VPS
لا يحتوي ويندوز على ssh-copy-id، لذا ثبّت المفتاح يدويًا. اعرض المفتاح العام أولًا وانسخ السطر كاملًا:
PowerShellGet-Content $env:USERPROFILE\.ssh\id_ed25519.pub
سجّل الدخول بكلمة المرور ثم أضف هذا السطر على الخادم (استبدل النص التجريبي بين علامتي الاقتباس المفردتين بمفتاحك الحقيقي):
Bashssh root@VPS_IP mkdir -p ~/.ssh && chmod 700 ~/.ssh echo 'ssh-ed25519 AAAA...your-key... USER@my-pc' >> ~/.ssh/authorized_keys sed -i 's/\r$//' ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys
يزيل سطر sed أي نهاية سطر خاصة بويندوز قد تجعل المفتاح غير مقروء. لا تستخدم أنابيب PowerShell مع ssh في هذه المهمة، لأن Windows PowerShell 5.1 قد يضيف رموز إرجاع الحمل إلى البيانات.
🧰 تفعيل ssh-agent في ويندوز
بدون وكيل ستضطر إلى كتابة عبارة المرور في كل دخول. خدمة ssh-agent مثبّتة لكنها معطّلة أو يدوية البدء افتراضيًا. في PowerShell بصلاحيات المسؤول:
PowerShellGet-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent
ثم في PowerShell عادي، حمّل مفتاحك مرة واحدة واعرض المفاتيح المحمّلة:
PowerShellssh-add $env:USERPROFILE\.ssh\id_ed25519 ssh-add -l
يحتفظ الوكيل بالمفتاح بعد إعادة التشغيل، فلن يُطلب منك مرة أخرى.
✅ اختبار الدخول بالمفتاح
اتصل مرة أخرى. يجب أن تحصل على طرفية دون أن يطلب الخادم كلمة مرور root:
PowerShellssh root@VPS_IP
لترى بالضبط أي طريقة تُستخدم، أضف -v وابحث عن Server accepts key وAuthenticated to ... using publickey:
PowerShellssh -v root@VPS_IP
لا تتابع قبل أن يعمل هذا، وأبقِ هذه الجلسة مفتوحة.
🚫 تعطيل المصادقة بكلمة المرور على الخادم
في Ubuntu وDebian قد يحتوي /etc/ssh/sshd_config.d/ أصلًا على ملف (مثل 50-cloud-init.conf) يفعّل كلمات المرور. يستخدم SSH أول قيمة يقرؤها، لذا أنشئ ملفًا يأتي قبله في الترتيب. نفّذ ما يلي بصلاحيات root على الـ VPS:
Bashgrep -ri 'PasswordAuthentication' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/ cat > /etc/ssh/sshd_config.d/10-keys-only.conf <<'EOF' PasswordAuthentication no KbdInteractiveAuthentication no PubkeyAuthentication yes PermitRootLogin prohibit-password EOF sshd -t && systemctl reload ssh
في AlmaLinux/Rocky تُسمّى الخدمة sshd: استخدم systemctl reload sshd. تأكد أن ملف sshd_config الرئيسي يحتوي قرب بدايته على السطر Include /etc/ssh/sshd_config.d/*.conf (وهذا هو الافتراضي). لا يطبع sshd -t شيئًا عندما تكون الصيغة سليمة.
من نافذة جديدة، تأكد أن كلمات المرور تُرفض الآن بينما يعمل مفتاحك:
PowerShellssh -o PubkeyAuthentication=no root@VPS_IP
الرد المتوقع هو Permission denied (publickey).
🛠️ استكشاف الأخطاء
Permission denied (publickey). المفتاح ليس في authorized_keys الخاص بالحساب الصحيح، أو لُصق على عدة أسطر، أو أن الأذونات خاطئة. على الخادم نفّذ chmod 700 ~/.ssh وchmod 600 ~/.ssh/authorized_keys وتحقق أن السطر يبدأ بـ ssh-ed25519.
WARNING: UNPROTECTED PRIVATE KEY FILE. تستطيع حسابات ويندوز الأخرى قراءة مفتاحك الخاص. اقصر الوصول على مستخدمك:
PowerShellicacls $env:USERPROFILE\.ssh\id_ed25519 /inheritance:r /grant:r "${env:USERNAME}:F"
Error connecting to agent: No such file or directory. خدمة ssh-agent غير مشغّلة؛ شغّلها كما هو موضح أعلاه.
انقطع وصولك بعد التعديل. استخدم وحدة تحكم الـ VPS من مساحة العميل، واحذف /etc/ssh/sshd_config.d/10-keys-only.conf، ونفّذ sshd -t ثم أعد تحميل خدمة SSH.
🚀 أصبح حاسوب ويندوز لديك يدخل إلى الـ VPS بمفتاح ed25519 وكلمات المرور معطّلة. احتفظ بنسخة احتياطية من مفتاحك الخاص في مكان آمن.