إذا أبلغ تطبيق Terminal في macOS عن رسالة "UNPROTECTED PRIVATE KEY FILE" أو أفاد بأن مفتاح SSH الخاص بك يسهل الوصول إليه بشكل زائد، فقم بتقييد الوصول إلى المفتاح الخاص وتحقق من دليل .ssh. افتح Terminal وقم بتشغيل chmod 600 على ملف المفتاح الذي تستخدمه بالفعل. يجعل هذا الملف قابلاً للقراءة والكتابة بواسطة حسابك فقط؛ إذ يتجاهل SSH ملفات المفاتيح الخاصة التي يمكن للمستخدمين الآخرين الوصول إليها. دليل OpenBSD ssh(1)‎

إصلاح أذونات المفتاح الخاص

حدد ملف المفتاح أولاً. تتضمن أسماء المفاتيح الخاصة الافتراضية الشائعة لـ SSH كلاً من id_ed25519 و id_rsa، ولكن قد يكون لديك اسم أو مسار مختلف. تشير اللاحقة .pub إلى مفتاح عام؛ لا تطبق هذا الإصلاح على ذلك الملف بدلاً من المفتاح الخاص.

بالنسبة لمفتاح Ed25519 الافتراضي، أدخل:

chmod 600 "$HOME/.ssh/id_ed25519"

بالنسبة لمفتاح آخر، استبدل id_ed25519 باسم الملف الفعلي. يؤدي وضع المسار بين علامتي اقتباس إلى منع التعامل مع المسافات والأحرف الخاصة الأخرى الخاصة ببيئة الأوامر (shell) كتعليمات برمجية. إذا كان المفتاح موجوداً في مكان آخر، فاستخدم مساره الكامل داخل علامتي الاقتباس. تمنح القيمة 600 أذونات القراءة والكتابة للمالك وتزيل إمكانية الوصول للمجموعة والمستخدمين الآخرين. دليل OpenBSD chmod(1)‎

يمكنك فحص النمط الناتج باستخدام ls -l "$HOME/.ssh/id_ed25519". يبدأ العرض النموذجي بـ -rw-------؛ تُظهر أحرف الأذونات الثلاثة الأولى بعد نوع الملف وصول المالك، وتُظهر المجموعات المتبقية عدم وجود وصول للمجموعة أو الآخرين. يجب أيضاً أن يكون مالك الملف هو حسابك نفسه. إذا كان ملكاً لمستخدم آخر، فقد يفشل أمر chmod أو قد يظل عميل SSH غير قادر على استخدامه. تحقق من الملكية باستخدام ls -l؛ وتجنب تغيير الملكية بشكل أعمى، لا سيما باستخدام sudo، لأن الإصلاح الصحيح يعتمد على سبب ملكية الملف لشخص آخر.

التحقق من دليل .ssh

يوصي دليل SSH بأن يكون ~/.ssh/ قابلاً للقراءة والكتابة والبحث من قِبل مالكه، ولا يمكن للآخرين الوصول إليه. إذا أبلغ SSH عن مشكلة في أذونات الدليل نفسه، فقم بتشغيل:

chmod 700 "$HOME/.ssh"

يؤدي هذا إلى إزالة وصول المجموعة والآخرين مع السماح لحسابك بالوصول الكامل إلى الدليل. إذا كان المفتاح مخزناً في مجلد مختلف، فتحقق من كل دليل في مساره: يحتاج الحساب إلى إذن البحث (التنفيذ) للوصول إلى الملف. لا تقم بتشغيل chmod بشكل متكرر وتكراري (recursively) عبر دليلك الرئيسي بالكامل أو مجلد .ssh كإصلاح أولي؛ فقد يؤدي ذلك إلى تغيير الأذونات على ملفات لا علاقة لها بالأمر وتتطلب أذونات مختلفة. دليل OpenBSD ssh(1)‎

التأكد من أن SSH يستخدم هذا المفتاح

قد يبدو أن المفتاح المصحح لا يعمل إذا كان SSH يبحث في مكان آخر أو يقدم هوية مختلفة. استخدم الخيار -i لتحديد مفتاح لاتصال معين. استبدل الحساب والمضيف النموذجيين بحسابك الخاص:

ssh -i "$HOME/.ssh/id_ed25519" user@example.com

يحدد الخيار -i ملف الهوية المستخدم لمصادقة المفتاح العام. دليل OpenBSD ssh(1)‎ للحصول على سجل اتصال أكثر تفصيلاً، أضف -v:

ssh -v -i "$HOME/.ssh/id_ed25519" user@example.com

إذا كنت تدير عدة مضيفين، يمكنك تعيين IdentityFile في ~/.ssh/config؛ حيث تحدد كتلة Host إعدادات الاتصال المطبقة. قد يحاول العميل أيضاً تجربة المفاتيح المقدمة بواسطة ssh-agent. يمكن للخيار IdentitiesOnly yes أن يقصر الهويات المعروضة على ملفات الهوية المكونة عندما يكون لدى الوكيل (agent) العديد من المفاتيح المحملة. دليل OpenBSD ssh_config(5)‎

معرفة الحالات التي يكون فيها الخطأ من مصدر آخر

يختلف تحذير أذونات المفتاح الخاص المحلي عن رسالة Permission denied (publickey). يمكن أن تعني الأخيرة أن الخادم لا يتعرف على المفتاح العام المطابق، أو أن اسم المستخدم غير صحيح، أو أن SSH يحاول استخدام هوية أخرى. يجب أن يكون المفتاح العام المقابل لمفتاحك الخاص مصرحاً به للحساب على المضيف البعيد؛ وتغيير الأذونات المحلية لا يؤدي إلى تثبيت ذلك المفتاح العام على الخادم. دليل OpenBSD ssh(1)‎

إذا أرجع أمر chmod رسالة "Operation not permitted"، فتحقق مما إذا كنت تمتلك الملف وما إذا كان المسار يشير إلى المفتاح الذي تريده. تجنب جعل المفتاح الخاص قابلاً للقراءة على نطاق واسع لإسكات التحذير: فتقييد SSH يحمي بيانات الاعتماد، وإزالته قد تؤدي إلى رفض العميل للمفتاح. بمجرد أن يحصل المفتاح الخاص ودليله على الأذونات المناسبة، أعد المحاولة باستخدام -v واتبع المخرجات التشخيصية للتمييز بين مشكلة الملف المحلي ومشكلة المصادقة أو مشكلة من جانب الخادم.

المصادر