ไม่สามารถรับการรับรองความถูกต้องของคีย์สาธารณะ SSH เพื่อการทำงาน [ปิด]


41

เซิร์ฟเวอร์ของฉันใช้งาน CentOS 5.3 ฉันใช้ Mac กำลังทำงาน Leopard อยู่ ฉันไม่รู้ว่าอันไหนรับผิดชอบเรื่องนี้:

ฉันสามารถเข้าสู่เซิร์ฟเวอร์ของฉันได้ดีผ่านการตรวจสอบรหัสผ่าน ฉันได้ทำตามขั้นตอนทั้งหมดสำหรับการตั้งค่า PKA (ตามที่อธิบายไว้ที่http://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-ssh-beyondshell.html ) แต่เมื่อ ฉันใช้ SSH มันปฏิเสธที่จะลองตรวจสอบ publickey การใช้คำสั่ง

ssh -vvv user@host

(ที่ -vvv cranks up verbosity ถึงระดับสูงสุด) ฉันได้รับผลลัพธ์ที่เกี่ยวข้องต่อไปนี้:

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred keyboard-interactive,password
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password

ตามด้วยพรอมต์สำหรับรหัสผ่านของฉัน ถ้าฉันพยายามบังคับปัญหาด้วย

ssh -vvv -o PreferredAuthentications=publickey user@host

ฉันเข้าใจ

debug2: key: /Users/me/.ssh/id_dsa (0x123456)
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred publickey
debug3: authmethod_lookup publickey
debug3: No more authentication methods to try.

ดังนั้นแม้ว่าเซิร์ฟเวอร์บอกว่ามันยอมรับวิธีการตรวจสอบ publickey และลูกค้า SSH ของฉันยืนยันในเรื่องนี้ (โปรดสังเกตการขาดงานที่ชัดเจนของบรรทัด "การเสนอกุญแจสาธารณะ:" ด้านบน) ข้อเสนอแนะใด ๆ

ssh 

เพียงใช้ "ssh -v" คุณไม่จำเป็นต้องใช้คำฟุ่มเฟือยมากขึ้นและรวมเอาท์พุททั้งหมดไม่ใช่แค่บรรทัดที่คุณคิดว่าสำคัญ
cstamas

คำถามนี้กำลังถูกปิดเพราะไม่สามารถตอบได้อีกต่อไปและดึงดูดคำตอบที่มีคุณภาพต่ำ
HopelessN00b

คำตอบ:


44

ตรวจสอบว่าเครื่อง Centos ของคุณมี:

RSAAuthentication yes
PubkeyAuthentication yes

ใน sshd_config

และตรวจสอบให้แน่ใจว่าคุณได้รับอนุญาตอย่างถูกต้องในไดเรกทอรี ~ / .ssh / ของเครื่อง centos

chmod 700 ~/.ssh/
chmod 600 ~/.ssh/*

ควรทำเคล็ดลับ


1
สิทธิ์และชื่อไฟล์ที่ถูกต้อง (บางครั้ง authorized_keys2 บางครั้งไม่มี 2) เป็นสิ่งสำคัญมาก!
brandstaetter

4
การอนุญาตของไฟล์authorized_keysเป็นคำใบ้ที่สำคัญมาก ขอบคุณ
Kane

7
คุณอาจต้องchmod go-w ~/ถ้ามันยังไม่ได้
tylerl

1
ตรวจสอบว่าบ้านของคุณบนเซิร์ฟเวอร์ระยะไกลมีสิทธิ์755(ตาม Jinyu Liu กล่าวถึงด้านล่าง)
Attila Fulop

1
ในระบบปฏิบัติการอื่นไฟล์การกำหนดค่า SSH อาจอยู่ภายใต้:/etc/ssh/ssh_config
Yoshua Wuyts

17

ฉันมีปัญหาที่คล้ายกัน - พีซีระยะไกลไม่สามารถใช้การรับรองความถูกต้องของรหัสสาธารณะเพื่อเข้าสู่เซิร์ฟเวอร์ CentOs 6 ปัญหาในกรณีของฉันคือ SELinux ที่เกี่ยวข้อง - ไดเรกทอรีบ้านของผู้ใช้ที่พยายามเข้าสู่ระบบมีข้อความถึงบริบทความปลอดภัย ฉันแก้ไขปัญหานี้โดยใช้restoreconเครื่องมือดังนี้:

restorecon -Rv /home

2
ขอบคุณแกเร็ ธ ! "restorecon -Rv /root/.ssh" ทำอุบายอย่างดี
tbroberg

เพื่ออธิบายเพิ่มเติม: คำสั่งนี้จะบอก SELinux เพื่อตั้งค่าแท็ก SELinux สำหรับแฟ้มภายใต้สิ่งที่พวกเขามักจะอยู่ในรูปแบบไดเรกทอรีสำหรับ/home /home
rakslice

หากคุณเข้าสู่ระบบในฐานะ root ควรเป็นrestorecon -Rv /root
youfu

13

1- ตรวจสอบ / etc / ssh / sshd_config ของคุณให้แน่ใจว่าคุณมี

RSAAuthentication ใช่
PubkeyAuthentication ใช่

2- ตรวจสอบล็อกที่ปลอดภัยจากเครื่องระยะไกลค้นหาบันทึกข้อผิดพลาดรายละเอียด sshd daemon เช่นใน Ubuntu ของฉัน

# grep 'sshd' / var / log / secure | grep 'การรับรองความถูกต้องถูกปฏิเสธ' | หาง -5
4 ส.ค. 06:20:22 xxx sshd [16860]: การรับรองความถูกต้องถูกปฏิเสธ: ความเป็นเจ้าของหรือโหมดที่ไม่ดีสำหรับไดเรกทอรี / home / xxx
4 ส.ค. 06:20:22 xxx sshd [16860]: การรับรองความถูกต้องถูกปฏิเสธ: ความเป็นเจ้าของหรือโหมดที่ไม่ดีสำหรับไดเรกทอรี / home / xxx
4 ส.ค. 06:21:21 xxx sshd [17028]: การรับรองความถูกต้องถูกปฏิเสธ: ความเป็นเจ้าของหรือโหมดที่ไม่ดีสำหรับไดเรกทอรี / home / xxx
4 ส.ค. 06:21:21 xxx sshd [17028]: การรับรองความถูกต้องถูกปฏิเสธ: ความเป็นเจ้าของหรือโหมดที่ไม่ดีสำหรับไดเรกทอรี / home / xxx
4 ส.ค. 06:27:39 xxx sshd [20362]: การรับรองความถูกต้องถูกปฏิเสธ: ความเป็นเจ้าของหรือโหมดที่ไม่ดีสำหรับไดเรกทอรี / home / xxx

จากนั้นตรวจสอบความเป็นเจ้าของและโหมดสำหรับไดเรกทอรี / home / xxx บางทีคุณอาจต้องเปิดใช้งาน

chmod 755 / home / xxx

1
ตรวจสอบล็อกไฟล์ของระบบเป็นคำแนะนำที่สำคัญมาก
Kane

1
ไดเรกทอรีบ้านของ 755 ช่วยฉันได้ - ต้องการแน่นอน!
Ben

11

ตรวจสอบอีกครั้งว่าการอนุญาตของคุณถูกต้องและโครงสร้างไฟล์ (การสะกดโดยเฉพาะ) นั้นถูกต้องสำหรับเครื่องโลคอลและรีโมท URL ที่คุณอ้างถึงระบุไว้ทั้งหมด แต่ควรตรวจสอบสิ่งที่คุณมี โดยปกติการอนุญาตจะทำให้เกิดข้อผิดพลาดที่เกี่ยวข้อง

คุณได้ตรวจสอบว่ากล่อง sshd_config บน CentOS 5.3 ของคุณถูกตั้งค่าให้อนุญาต PubkeyAuthentication หรือ RSAAuthentication หรือไม่

ตรวจสอบบันทึกเซิร์ฟเวอร์ SSH บนระบบ CentOS ซึ่งอาจให้ข้อมูลเพิ่มเติม ฉันไม่แน่ใจว่า CentOS ทำการตรวจสอบคีย์ ssh ที่ขึ้นบัญชีดำหรือไม่ แต่ฉันเคยเห็นการปฏิเสธของ ssh publickey ที่ค่อนข้างเงียบไปจนถึงเอาต์พุต -vvv ไป แต่บันทึกค่อนข้างชัดเจนว่าเกิดอะไรขึ้น


7

เข้าใจแล้ว! ปรากฎว่าเป็นปัญหาด้านลูกค้า (ฉันคิดว่าปัญหาด้านเซิร์ฟเวอร์ใด ๆ จะให้ผลลัพธ์การดีบักที่มีประโยชน์มากกว่า) สำหรับเหตุผลที่ฉันไม่รู้จักบน Mac ของฉันไฟล์ / etc / ssh_config มีบรรทัด

PubkeyAuthentication = no

ฉันแสดงความคิดเห็นว่าหนึ่งบรรทัดและตอนนี้ทุกอย่างทำงานได้ดี


4

นอกจากโหมดของไฟล์ / ไดเรกทอรีตรวจสอบให้แน่ใจว่าเจ้าของถูกต้อง! ผู้ใช้จะต้องเป็นเจ้าของโฮมไดเร็กทอรีของตนเอง, .ssh /, และไฟล์ในนั้น

ฉันต้องวิ่งหนีchown -R $user:$user /home/$userความล้มเหลวของ ssh


+1, ในหนึ่งในระบบของฉันการอนุญาตใน. ssh นั้นถูกต้อง แต่มีคนทำไดเรกทอรีหลักของบัญชี 777
GargantuChet

2

ตรวจสอบด้วยว่ามันสามารถจ่ายกุญแจได้อัตโนมัติหรือไม่ให้ใช้ -i path / to / key ถ้าไม่ใช่หรือเพื่อทดสอบ


2

ฟังดูเหมือนปัญหาการตั้งค่าสำหรับฉัน เช่นเดียวกับ Daniel แนะนำว่ามีสองสิ่งที่ต้องตรวจสอบ:

  1. ปุ่ม SSH $HOME/.ssh/authorized_keysสามารถอ่านได้ และ
  2. SSHd ได้รับการกำหนดค่าให้อนุญาตการเข้าสู่ระบบกุญแจสาธารณะ

2

ตรวจสอบชื่อผู้ใช้ด้วยว่าคุณกำลังพยายามเข้าสู่ระบบโดยค่าเริ่มต้นมันเป็นชื่อผู้ใช้ของคุณในเครื่องท้องถิ่น


1

ผลลัพธ์ของไคลเอนต์ตามที่ssh -vจะเปิดเผยว่ามีปัญหาในขั้นตอนหนึ่งในโพรโทคอล แต่เมื่อเกิดจากสิ่งที่อยู่บนเซิร์ฟเวอร์ไคลเอนต์จะไม่ทราบสาเหตุ ตรวจสอบไฟล์บันทึกของเซิร์ฟเวอร์เพื่อดูว่ามีอะไรผิดปกติ คุณอาจต้องrootมีสิทธิ์ในการทำเช่นนั้น ยกตัวอย่างเช่นการsshdกำหนดค่าให้เข้าสู่ระบบการ syslog /var/log/secureคุณอาจพบข้อความใน เหมือนคนเหล่านี้:

Authentication refused: bad ownership or modes for directory /home/you/.ssh
Authentication refused: bad ownership or modes for file /home/you/.ssh/authorized_keys

เหตุผลในกรณีนี้เป็น (โง่) เริ่มต้นของdefault 0002นั่นหมายถึงเขียนการเข้าถึงสำหรับกลุ่ม (Groupname = ชื่อผู้ใช้ แต่ยังคงอยู่) SSH daemon จะไม่เชื่อถือไฟล์ที่ผู้อื่นสามารถดัดแปลงได้โดยผู้ใช้ที่ดีกว่าผู้ใช้ ( rootแน่นอนและแน่นอน) chmodคุณสามารถแก้ปัญหาโดยใช้

chmod 700 ~/.ssh # solve the issue
chmod 720 ~/.ssh # reproduce the issue
# or similar for a file

1

ฉันเพิ่งติดกับปัญหาเดียวกันในการเข้าถึงด้วย fedora core 16 ถึงเซนต์ 5.5

บันทึกและ verbose ดูเหมือนกันทุกประการ

ปัญหาคือรหัสสาธารณะมีข้อมูลปลอมสร้างใหม่และโพสต์ไว้ใน sshd_server คุณ sshd_client กำลังส่งข้อมูลคีย์ แต่ไม่ได้รับการยอมรับจากเซิร์ฟเวอร์ (อยู่ตรงกับคีย์ใด ๆ ใน authorized_keys)


-2

อีกคนกัดโดยสิ่งนี้ หลังจากการค้นหาเป็นเวลานานมันกลับกลายเป็นว่าฉันกำลังป้อน ssh สาธารณะอย่างชัดเจน (ด้วยตัวเลือก -i) แทนการใช้คีย์ส่วนตัว Doh!

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.