العربية

مفاتيح SSH في ويندوز: ed25519 مع OpenSSH المدمج

3 min
استضافة VPS/VDS

زوج المفاتيح أكثر أمانًا بكثير من كلمة المرور: فالمفتاح الخاص لا يغادر حاسوبك أبدًا، ولا تستطيع الروبوتات التي تفحص المنفذ 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 كشبكة أمان.
PowerShell
ssh -V

🔐 إنشاء مفتاح ed25519

افتح PowerShell (عادي وليس بصلاحيات المسؤول) ونفّذ:

PowerShell
ssh-keygen -t ed25519 -C 'USER@my-pc'

اقبل المسار الافتراضي C:\Users\USER\.ssh\id_ed25519 وأدخل عبارة مرور. تشفّر هذه العبارة المفتاح الخاص على القرص، فيصبح الملف المسروق عديم الفائدة. يُنشأ ملفان: id_ed25519 (خاص، لا تشاركه أبدًا) وid_ed25519.pub (عام).

📤 نسخ المفتاح العام إلى الـ VPS

لا يحتوي ويندوز على ssh-copy-id، لذا ثبّت المفتاح يدويًا. اعرض المفتاح العام أولًا وانسخ السطر كاملًا:

PowerShell
Get-Content $env:USERPROFILE\.ssh\id_ed25519.pub

سجّل الدخول بكلمة المرور ثم أضف هذا السطر على الخادم (استبدل النص التجريبي بين علامتي الاقتباس المفردتين بمفتاحك الحقيقي):

Bash
ssh 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 بصلاحيات المسؤول:

PowerShell
Get-Service ssh-agent | Set-Service -StartupType Automatic Start-Service ssh-agent Get-Service ssh-agent

ثم في PowerShell عادي، حمّل مفتاحك مرة واحدة واعرض المفاتيح المحمّلة:

PowerShell
ssh-add $env:USERPROFILE\.ssh\id_ed25519 ssh-add -l

يحتفظ الوكيل بالمفتاح بعد إعادة التشغيل، فلن يُطلب منك مرة أخرى.

✅ اختبار الدخول بالمفتاح

اتصل مرة أخرى. يجب أن تحصل على طرفية دون أن يطلب الخادم كلمة مرور root:

PowerShell
ssh root@VPS_IP

لترى بالضبط أي طريقة تُستخدم، أضف -v وابحث عن Server accepts key وAuthenticated to ... using publickey:

PowerShell
ssh -v root@VPS_IP

لا تتابع قبل أن يعمل هذا، وأبقِ هذه الجلسة مفتوحة.

🚫 تعطيل المصادقة بكلمة المرور على الخادم

في Ubuntu وDebian قد يحتوي /etc/ssh/sshd_config.d/ أصلًا على ملف (مثل 50-cloud-init.conf) يفعّل كلمات المرور. يستخدم SSH أول قيمة يقرؤها، لذا أنشئ ملفًا يأتي قبله في الترتيب. نفّذ ما يلي بصلاحيات root على الـ VPS:

Bash
grep -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 شيئًا عندما تكون الصيغة سليمة.

من نافذة جديدة، تأكد أن كلمات المرور تُرفض الآن بينما يعمل مفتاحك:

PowerShell
ssh -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. تستطيع حسابات ويندوز الأخرى قراءة مفتاحك الخاص. اقصر الوصول على مستخدمك:

PowerShell
icacls $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 وكلمات المرور معطّلة. احتفظ بنسخة احتياطية من مفتاحك الخاص في مكان آمن.

ابقَ على اطلاع بأحدث العروض والخصومات والعروض الترويجية الخاصة.

عرض العروض الترويجية

نستخدم ملفات تعريف الارتباط

نستخدم كوكيز تحليلية لتحسين تجربتك. لا نبيع البيانات لأطراف ثالثة. المزيد في سياسة الخصوصية.