على جهاز Mac، افتح Terminal وشغّل ssh-add -l. يسرد هذا بصمات الأصابع والتعليقات الخاصة بالهويات المتاحة عبر وكيل SSH المتصل بجلسة Terminal تلك؛ ولا يعرض بيانات المفتاح الخاص. إذا لم يكن لدى الوكيل أي هويات، فسيقوم الأمر بالإبلاغ عن ذلك. تعامل مع هذا كفحص لاتصال الوكيل الحالي، وليس جردًا كاملاً للمفاتيح المخزنة على جهاز Mac الخاص بك.
سرد الهويات في الوكيل الحالي
في Terminal، أدخل:
ssh-add -l
يسرد الخيار -l بصمات الأصابع للهويات التي يمثلها الوكيل. تنسيق بصمة الإصبع الافتراضي في OpenSSH هو SHA-256. تتضمن كل نتيجة عادةً حجم المفتاح، وبصمة الإصبع، وتعليق المفتاح، والخوارزمية؛ قد يساعد التعليق في التعرف على المفتاح، ولكنه نص يوفره المستخدم ولا يعد دليلاً على الحساب أو الخادم الذي سيقبله. دليل ssh-add(1) لـ OpenSSH
يطلب هذا الأمر عرض قائمة فقط، ولا يضيف أو يزيل أي هويات. تجنب استخدام ssh-add -D وssh-add -d أثناء الفحص: حيث تؤدي هذه الخيارات إلى إزالة الهويات. تجنب أيضًا ssh-add -L إذا كان هدفك هو الكشف عن أقل قدر ممكن من المعلومات. يطبع هذا الخيار معلمات المفتاح العام للهويات الموجودة في الوكيل. المفتاح العام ليس مفتاحًا خاصًا، ولكنه يحتوي على معلومات تعريفية أكثر من بصمة الإصبع. دليل ssh-add(1) لـ OpenSSH
فهم القائمة الفارغة أو خطأ الاتصال
إذا أشار الناتج إلى أن الوكيل لا يحتوي على هويات، فهذا يعني أن الوكيل الذي وصل إليه تطبيق Terminal هذا ليس لديه ما يبلّغ عنه. هذا لا يثبت عدم وجود مفاتيح SSH على القرص، أو في جهاز مصادقة مادي (hardware authenticator)، أو في أي مكان آخر. كما أنه لا يثبت أن تطبيقًا آخر أو نافذة Terminal أخرى تستخدم نفس الوكيل. يعتمد OpenSSH على متغير البيئة SSH_AUTH_SOCK لتحديد موقع الوكيل، لذا يمكن توصيل الجلسات المنفصلة بشكل مختلف. دليل ssh-add(1) لـ OpenSSH
إذا ظهر لك بدلاً من ذلك خطأ مثل "Could not open a connection to your authentication agent"، فهذا يعني أن shell الحالية لم تتمكن من الاستعلام عن مقبس الوكيل (agent socket). لم يثبت هذا العرض ما إذا كانت هناك جلسة أخرى تحتوي على هويات. أعد تشغيل ssh-add -l في نافذة Terminal أو الـ shell التي تستخدمها لـ SSH؛ لا تبدأ وكيلاً جديداً لمجرد الفحص، لأن ذلك قد يمنح هذه الـ shell وكيلاً مختلفاً وفارغاً. إذا استمر فشل الأمر، فتحقق مما إذا كانت البيئة مهيأة لتوفير SSH_AUTH_SOCK باستخدام printf '%s\n' "$SSH_AUTH_SOCK". يعرض هذا مسار المقبس، وليس المفتاح، ولكنه لا يتحقق بحد ذاته من إمكانية استخدام المقبس.
التمييز بين الوكيل ومفاتيح macOS (Keychain)
تعد هوية SSH المحملة في الوكيل وعبارة المرور المخزنة في Keychain أمرين مختلفين. توثق Apple الخيار UseKeychain كخيار لتكوين SSH لتخزين عبارة مرور المفتاح، والخيار AddKeysToAgent كخيار يقوم بتحميل المفتاح في الوكيل عندما يستخدمه SSH. بالتالي، فإن وجود عبارة مرور في Keychain لا يعني في حد ذاته أن الهوية تظهر حالياً في ssh-add -l؛ إذ قد تتم إضافة الهوية إلى الوكيل لاحقاً، مثل أثناء إجراء اتصال SSH. ملاحظة Apple التقنية TN2449
إذا كنت بحاجة إلى فحص عناصر Keychain، فيمكن لتطبيق الوصول إلى سلسلة المفاتيح (Keychain Access) إظهار معلومات حول المفاتيح والشهادات المخزنة في سلسلة مفاتيح محددة. يعد هذا فحصاً منفصلاً عن سرد الوكيل النشط، ولا ينبغي استخدامه لاستنتاج الهويات التي يمكن لـ Terminal الحالي تقديمها حالياً. دعم Apple: عرض المعلومات المخزنة في سلسلة المفاتيح على الـ Mac
ما يمكن أن يخبرك به هذا الفحص
استخدم ssh-add -l عندما تحتاج إلى لقطة منخفضة الإفصاح عن الهويات المتاحة للوكيل لجلسة Terminal هذه. قارن بصمة الإصبع بسجل موثوق إذا كنت بحاجة إلى التعرف على مفتاح معين. لا يعرض هذا الكشف محتويات المفتاح الخاص، ولا يحدد كل مفتاح على الكمبيوتر، ولا يؤكد أن الخادم البعيد يخول مفتاحاً، ولا يضمن أن أمر SSH لاحقاً سيستخدم هوية مدرجة؛ حيث يؤثر تكوين SSH وسياق الاتصال أيضاً على المصادقة.
المصادر
ssh-add(1) - صفحات دليل OpenBSD — OpenBSD
الملاحظة التقنية TN2449: تحديثات OpenSSH في macOS 10.12.2 — Apple Developer
عرض المعلومات المخزنة في سلسلة المفاتيح على الـ Mac — دعم Apple