لقد قمت للتو بإعداد خادم Debian جديد. لقد عطلت SSH الجذر ومصادقة كلمة المرور ، لذا يجب عليك استخدام ملف مفتاح.

بالنسبة لمستخدمي الأساسي ، يعمل كل شيء تمامًا كما هو متوقع. لقد استخدمت ssh-keygen -t dsaوحصلت لنفسي على مفتاح عام وخاص. ضع أحدهما في المفاتيح المصرح بها ، وضع الآخر في ملف pem محليًا.

أردت إنشاء مستخدم يمكنني نشر الأشياء معه ، لذلك قمت بنفس العملية بشكل أساسي. قمت adduserبتحريره ، وإنشاء .sshمجلد ، وتشغيل ssh-keygen -t dsa(جربت أيضًا RSA) ، ووضع المفاتيح في مواقعها المناسبة.

لا حظ. أنا أتلقى Permission denied (publickey)خطأ. عندما أستخدم نفس مفاتيح الحساب الذي يعمل ، نفس الخطأ. عندما أقوم بتمكين مصادقة كلمة المرور ، يمكنني تسجيل الدخول عبر SSH باستخدام كلمة المرور.

كيف يمكنني تصحيح هذا؟

تعديل

إخراج Verbose ssh (loyer.pem هو المفتاح المناسب):

debug2: key: /Users/eli/.ec2/deployer.pem (0x100126830)
debug2: key: /Users/eli/.ec2/deployer.pem (0x100126b30)
debug2: key: /Users/eli/.ec2/deployer.pem (0x0)
debug1: Authentications that can continue: publickey
debug3: start over, passed a different list publickey
debug3: preferred publickey,keyboard-interactive,password
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Offering public key: /Users/eli/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: eli.pem
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: /Users/eli/.ec2/deployer.pem
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Offering public key: /Users/eli/.ec2/deployer.pem
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug1: Trying private key: /Users/eli/.ec2/deployer.pem
debug1: read PEM private key done: type DSA
debug3: sign_and_send_pubkey
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey
debug2: we did not send a packet, disable method
debug1: No more authentication methods to try.
Permission denied (publickey).
answer

جزأين: أولاً ، قم بتشغيل تصحيح الأخطاء على خادم ssh الخاص بك. تحرير /etc/ssh/sshd_configوزيادة LogLevel إلى DEBUG. ثم اجبر خادم ssh على إعادة تحميل التكوين به killall -HUP <sshd pid>.

سيؤدي ذلك إلى قيام الخادم بإضافة المزيد من التفاصيل إلى ملفات السجل /var/log/secureو / أو ملفات /var/log/authالسجل الخاصة بك .

ثانيًا (في الواقع لا يمكنك تجربة هذا أولاً) ، قم بزيادة مستوى تصحيح الأخطاء من جانب العميل. ssh في المربع مع

$ ssh -vvv hostname

وسيؤدي ذلك إلى طباعة المزيد من المعلومات حول مكان فشل العملية.

إذا قمت برفع مستوى التصحيح على خادم ssh الخاص بك ، فلا تنس إعادة تشغيله مرة أخرى عند الانتهاء.

هل راجعت الأذونات على الملفات الرئيسية؟ و .ssh/id_dsaيجب أن يكون ملف 600 والمملوكة من قبل المستخدم. اركض ssh -v [email protected]لترى ما إذا كانت هذه هي المشكلة.

إذا كان الدليل الرئيسي للمستخدم ، أو دليل .ssh ضمن الدليل الرئيسي للمستخدم ، أو ملف Author_keys الخاص بالمستخدم قابلاً للكتابة بواسطة أي شخص آخر غير المستخدم (سواء كانت مجموعة أو غيرها) ، فستفشل مصادقة المفتاح تمامًا لأن ملف .ssh / author_keys لا يمكنه ذلك. يعد موثوقًا به (حيث يمكن لمستخدم آخر استبداله أو تعديله وبالتالي تسجيل الدخول باسم هذا المستخدم).

محاولة:

chmod go-w ~USER ~USER/.ssh ~USER/.ssh/authorized_keys

ومعرفة ما إذا كان ذلك يزيل مشكلتك.

chown -R username. /home/username/.ssh

chmod 700 /home/username/.ssh

chmod 400 /home/username/.ssh/id_dsa /home/username/.ssh/id_dsa.pub

chmod 600 /home/username/.ssh/authorized_keys

فيما يلي بعض النصائح بناءً على المشكلات التي واجهتها أثناء محاولتي تشغيل ssh عبر مصادقة Pubkey ، أي ssh rsa:

بالإضافة إلى النصائح المذكورة أعلاه (الأذونات ، -vvv): - في الخادم الوجهة ، تحقق من معلومات الحساب عبر اسم المستخدم passwd -S أو اسم المستخدم passwd -s. سيبدو الناتج مثل [username] [stat] [pwchg] [min] [max] [warn]. إذا كان العمود [stat] يقول LK ، فأنت بحاجة إلى فتح حساب passwd -u username. إذا كان تاريخ [pwchg] أقدم من [الحد الأقصى] من الأيام ، فأنت بحاجة إلى تغيير الحد الأقصى للأيام أو تغيير كلمة المرور على اسم المستخدم عبر passwd -x 999 أو اسم المستخدم passwd

مثال:

# uname -n
myserver

# pwd
/export/home/santac
# ls -l .ssh
-rw-------   1 santac   users        796 Jul  8 00:27 authorized_keys
# cat .ssh/authorized_keys
ssh-rsa AAABBBCCCboogaboogaAAABBBCCCidonthinkyougetthatthisisbogusbutwhattheheck== [email protected]
# date
Wed Jul  8 00:55:10 GMT 2015
# passwd -S santac
santac    LK    03/05/14     7   60     10
(note stat is LK or locked)
# passwd -u santac
# passwd -S santac
santac    PS    03/05/14     7   60     10
(note [pwchg] date is older than 60 days)
# passwd santac
Enter New Password:
Confirm New Password:
# passwd -S santac
santac    PS    07/08/15     7   60     10
(all good now)

FROM THE OTHER SERVER:
# uname -n
otherserv
# pwd
/export/home/santac
# ls -l .ssh
-rw-------   1 santa   users       1675 Jul  6 20:23 id_rsa
-rw-------   1 santa   users        394 Jul  6 20:23 id_rsa.pub
# cat .ssh/id_rsa.pub
ssh-rsa AAABBBCCCboogaboogaAAABBBCCCidonthinkyougetthatthisisbogusbutwhattheheck== [email protected]

LOOKS GOOD...