لدي حاليًا Ubuntu Server 12.04 يعمل بنظام OpenSSH جنبًا إلى جنب مع Samba وبعض الخدمات الأخرى. في الوقت الحالي ، تم إعداد مصادقة المفتاح العام ، وأتساءل عما إذا كان من الممكن إعداد مصادقة ثنائية؟ لقد كنت أبحث في Google Authenticator الذي أستخدمه حاليًا مع حساب Gmail الخاص بي.

لقد وجدت وحدة PAM تبدو أنها ستكون متوافقة ولكن يبدو أنك مجبر على استخدام كلمة مرور والرمز الذي تم إنشاؤه.

أتساءل عما إذا كانت هناك طريقة لاستخدام تطبيق Google Authenticator (أو شيء مشابه) جنبًا إلى جنب مع المفتاح العام الخاص بي للمصادقة في خادم SSH الخاص بي؟

answer

أضافت Red Hat تصحيحًا إلى OpenSSH في RHEL (وبالتالي CentOS) 6.3 للمطالبة بآليات مصادقة متعددة ، لذا يمكنك القيام بشيء مثل هذا:

RequiredAuthentications2 publickey,keyboard-interactive

انظر ملاحظات الإصدار لمزيد من التفاصيل.

لسوء الحظ ، لا يبدو أن هذه الميزة موجودة في OpenSSH upstream ولا في Ubuntu 12.04 ، لذلك ما لم ترغب في العثور على التصحيح وإعادة تجميع OpenSSH ، فأنا أخشى أنك لم يحالفك الحظ.

كنت تبحث عن Duo Security

يمكنك استخدام كل من وحدة Google Authenticator PAM والمفاتيح العامة ، ولكن سيتم استخدام مفتاح واحد فقط في ذلك الوقت لمصادقة معينة. بمعنى ، إذا قام مستخدم بتسجيل الدخول باستخدام مفتاح عام مرخص ، فلن تكون هناك حاجة إلى رمز مميز.

أو لنقول ذلك بخلاف ذلك: الرموز المميزة مطلوبة فقط لمصادقة كلمة المرور ، وليس مفاتيح SSH.

لا يأتي هذا القيد من وحدة مصادقة Google بالمناسبة ، ولكن من SSH ، التي تنفذ فقط مصادقة ثنائية (عبر ChallengeResponseAuthentication) لـ PAM ، ولكنها لا تستدعي PAM عند توفير مفتاح عام صالح.

هذا السؤال من عام 2012. منذ ذلك الحين ، تغير SSH وتم تنفيذ بروتوكول SSH2.

في الإصدارات الأحدث من SSH (> = 6.2) ، يذكر man sshd_config:

AuthenticationMethods
       Specifies the authentication methods that must be successfully completed for a user to be
       granted access.  This option must be followed by one or more comma-separated lists of
       authentication method names.  Successful authentication requires completion of every method
       in at least one of these lists.

       For example, an argument of ``publickey,password publickey,keyboard-interactive'' would
       require the user to complete public key authentication, followed by either password or key-
       board interactive authentication.  Only methods that are next in one or more lists are
       offered at each stage, so for this example, it would not be possible to attempt password or
       keyboard-interactive authentication before public key.

       This option is only available for SSH protocol 2 and will yield a fatal error if enabled if
       protocol 1 is also enabled.  Note that each authentication method listed should also be
       explicitly enabled in the configuration.  The default is not to require multiple authentica-
       tion; successful completion of a single authentication method is sufficient.

تذكر هذه الصفحة http://lwn.net/Articles/544640/ أيضًا إمكانية استخدام مفتاح عام ومصادقة PAM في نفس الوقت.

أعلم أن هذا السؤال قديم بعض الشيء ، ولكن من أجل الأشخاص المستقبليين (بمن فيهم أنا) الذين يبحثون عن حل ، هناك أيضًا حديث عن استخدام خيار ForceCommand في ملف sshd_config لتشغيل برنامج نصي يقوم بعد ذلك بإجراء المصادقة. يوجد مثال على البرنامج النصي هنا يمكنك تعديله قليلاً حسب احتياجاتك ، على الرغم من أنه في هذا المثال يسميه من ملف author_keys بدلاً من جعله على مستوى النظام باستخدام ForceCommand الخاص بـ sshd_config.

احصل على مفتاح YubiKey واتبع هذا الدليل http://berrange.com/posts/2011/12/18/multi-factor-ssh-authentication-using-yubikey-and-ssh-public-keys-together/

AFAIK ، هذا هو أفضل طريقة لتطبيق Yubikey على خادمك للوصول إلى SSH. يمكّنك الدليل أعلاه من استخدام المفتاح العام + yubikey بينما إذا ذهبت مع الدليل الرسمي ( http://code.google.com/p/yubico-pam/wiki/YubikeyAndSSHViaPAM ) ، فإنه لا يعمل مع public- مفتاح.

تحياتي ، كبار الشخصيات

إذا قمت بتعيين عبارة مرور على مفتاحك الخاص ، فلديك بالفعل مصادقة ثنائية. من أجل تسجيل الدخول ، سيحتاج الأشخاص إلى:

  1. شيء لديك - مفتاحك الخاص
  2. شيء تعرفه - عبارة المرور الخاصة بمفتاحك الخاص