ssh ไม่อนุญาตให้ใช้การตรวจสอบกุญแจสาธารณะอีกต่อไป


22

เครื่องของฉันหยุดรับการรับรองความถูกต้องของรหัสสาธารณะที่เข้ามา ฉันมีเดสก์ท็อป Ubuntu 11.04 ที่ฉัน ssh จากเครื่อง windows ฉันใช้สีโป๊วกับความงาม ฉันสามารถเชื่อมต่อได้ แต่ใช้การพิสูจน์ตัวตนด้วยรหัสผ่านแบบโต้ตอบไม่ใช่ด้วยคีย์ rsa ของฉันที่ฉันได้ตั้งค่าไว้

ฉันได้ตรวจสอบแล้วว่ากุญแจอยู่ในรายการ ~ / .ssh / authorized_keys ฉันจะแก้ไขสิ่งนี้และตรวจสอบอะไรได้บ้าง


2
ให้ตรวจสอบว่าทั้งสาม~, ~/.sshและ~/.ssh/authorized_keysมีความสามารถเขียนได้โดยคุณเท่านั้น (โดยเฉพาะอย่างยิ่งไม่ได้รับอนุญาตจากกลุ่มเขียน) มองหา/var/log/auth.logรายการบันทึกที่สร้างขึ้นในเวลาที่พยายามเข้าสู่ระบบของคุณ คัดลอกและวางลงในคำถามของคุณ (แก้ไขชื่อเพื่อความเป็นส่วนตัวหากคุณต้องการ) ตรวจสอบว่าปัญหาอยู่ที่ฝั่งเซิร์ฟเวอร์หรือไม่: คัดลอกรหัสส่วนตัวไปยังเครื่อง Linux (คุณจะต้องแปลงไฟล์กุญแจส่วนตัวของ PuTTY เป็นรูปแบบ OpenSSH) และดูว่าssh localhostทำงานได้หรือไม่
Gilles 'หยุดความชั่วร้าย'

ไดเรกทอรีบ้านของฉันเขียนได้ด้วยเหตุผลบางอย่าง ที่แก้ไขมัน ใส่ไว้เป็นคำตอบเพื่อให้ฉันสามารถยอมรับได้
Andrew Redd

คำตอบ:


28

หากการรับรองความถูกต้องของรหัสสาธารณะไม่ทำงาน: ตรวจสอบให้แน่ใจว่าในด้านเซิร์ฟเวอร์ไดเรกทอรีหลักของคุณ ( ~) ~/.sshไดเรกทอรีและ~/.ssh/authorized_keysไฟล์ล้วนเขียนได้โดยเจ้าของเท่านั้น โดยเฉพาะอย่างยิ่งไม่มีกลุ่มใดที่สามารถเขียนได้ (แม้ว่าผู้ใช้จะอยู่คนเดียวในกลุ่ม) chmod 755หรือchmod 700จะ ok chmod 770ไม่ได้

สิ่งที่ต้องตรวจสอบเมื่อมีสิ่งผิดปกติ:

  • เรียกใช้ssh -vvvเพื่อดูผลลัพธ์การดีบักจำนวนมาก หากคุณโพสต์คำถามที่ถามว่าทำไมคุณไม่สามารถเชื่อมต่อกับ ssh ให้รวมเอาท์พุทนี้ (คุณอาจต้องการลบชื่อโฮสต์และชื่อผู้ใช้)
  • /var/log/auth.logหากคุณสามารถตรวจสอบบันทึกเซิร์ฟเวอร์ใน
  • หากการตรวจสอบคีย์สาธารณะไม่ทำงานให้ตรวจสอบการอนุญาตอีกครั้งโดยเฉพาะกลุ่มบิต (ดูด้านบน)


1
คำตอบที่ดี! ฉันลืม homedir ของฉัน: o
RobAu

หากคุณใช้รุ่นล่าสุดของ ssh (หรือ sshd) คีย์ DSA จะไม่ได้รับการสนับสนุนตามค่าเริ่มต้นเนื่องจากปัญหาด้านความปลอดภัย การแก้ไขที่แท้จริงเพียงอย่างเดียวคือการอัพเกรดเป็น RSA หรือปุ่มที่ดีกว่า
Mikko Rantalainen

ฉันเปลี่ยนการอนุญาตของโฟลเดอร์บ้านของฉันและอะไร ฉันถูกล็อคออกจาก SSH! ฉันเปลี่ยนปุ่ม ssh ไม่เซิร์ฟเวอร์ยังคงปฏิเสธการเชื่อมต่อ! ฉันเป็นบ้าพยายามหาทางแก้ปัญหาและด้วยคำตอบของคุณสำหรับchmod 700ในโฟลเดอร์บ้านของฉัน ssh เริ่มทำงาน !!!!!!! ขอบคุณ! หากการเชื่อมต่อเทอร์มินัลของฉันลดลงในขณะที่พยายามค้นหาวิธีแก้ปัญหาฉันจะถูกล็อกทั้งหมดจากเซิร์ฟเวอร์ ดังนั้นระวังอย่าเล่นด้วยสิทธิ์โฟลเดอร์บ้านของคุณ! (ผมเพิ่งเปลี่ยนสิทธิ์ของโฟลเดอร์บ้านของฉันโฟลเดอร์ไม่ .ssh แต่ยังคงล็อกออกจาก SSH)
Tarik

9

ฉันวิ่งเข้าไปในสิ่งเดียวกันและในที่สุดก็พบว่ามันเป็นเพราะฉันเข้ารหัสไดเรกทอรีบ้านของฉัน SSH ไม่สามารถอ่านไฟล์ authorized_keys จนกว่าคุณจะเข้าสู่ระบบดังนั้นโดยพื้นฐานแล้วมันจะบังคับให้คุณตรวจสอบรหัสผ่านก่อน ดูหัวข้อเกี่ยวกับโฮมไดเร็กตอรี่ที่เข้ารหัสบนลิงค์ต่อไปนี้:

https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Encrypted_Home_Directory


5

หากคุณตรวจสอบการอนุญาตในไดเรกทอรีและมี "." หลังจากนั้นคุณอาจเปิดใช้งาน selinux ซึ่งจะยุ่งกับการแลกเปลี่ยนคีย์และเริ่มต้นการระบุรหัสผ่านด้วยตนเอง

คุณสามารถปิดการใช้งาน SELinux เพื่อแก้ไขปัญหาโดยทำตามคำแนะนำที่นี่: http://www.centos.org/docs/5/html/5.1/Deployment_Guide/sec-sel-enable-disable-enforcement.htmlหรือเพียงแค่แก้ไข / etc / selinux / config และเปลี่ยนจาก "บังคับ" เป็น "ปิดการใช้งาน"

หวังว่านี่จะช่วยได้


ฉันเปิดใช้งาน selinux แล้ว แต่การปิดใช้งานดูเหมือนจะไม่สามารถแก้ไขได้ เคล็ดลับสำหรับฉันคืออะไรchmod 600 ~/.ssh/authorized_keys- ไฟล์นี้เขียนได้เป็นกลุ่ม (ผ่านpyrosoft.co.uk/blog/2013/01/12/… )
David Carboni

สิ่งนี้ช่วยฉัน! ขอขอบคุณ!
907th

คุณควรจะสามารถรับการรับรองความถูกต้อง SSH ทำงานกับ SELinux โดยการตั้งค่าบริบท SELinux ที่ถูกต้อง การกู้คืนบริบทที่ระบบกำหนดในโฮมไดเร็กตอรี่ของคุณ ( restorecon ~ -R) เป็นจุดเริ่มต้นที่ดี
Josh Kelley

4

ฉันจะให้แน่ใจว่าคุณมีการตั้งค่าของคุณใน / etc / ssh / sshd_config ถูกต้อง

เพื่อบังคับให้ใช้ PKI เท่านั้นและไม่อนุญาตให้ใช้รหัสผ่านค้นหาบรรทัด

#PasswordAuthentication yes 

ในไฟล์ของคุณยกเลิกการใส่เครื่องหมายข้อคิดเห็นและตั้งค่าเป็น

PasswordAuthenticate no

ฉันจะอ่านถึงความสมดุลของการตั้งค่าเพื่อให้แน่ใจว่าเหมาะสม โดยเฉพาะอย่างยิ่งพยายามให้แน่ใจว่าคุณใช้คีย์ RSA เนื่องจาก DSA รู้ว่าถูกบุกรุก


11
คุณกำลังอธิบายวิธีปิดการใช้งานการตรวจสอบรหัสผ่าน สิ่งนี้จะไม่ช่วยในการตรวจสอบสิทธิ์กุญแจสาธารณะ (ลองใช้กุญแจสาธารณะก่อน) อังเดร: อย่าปิดการใช้งานการตรวจสอบรหัสผ่านจนกว่าคุณจะแน่ใจว่าการรับรองความถูกต้องของรหัสสาธารณะทำงานได้!
Gilles 'หยุดความชั่วร้าย'

2

สาเหตุหนึ่งที่เป็นไปได้ของปัญหาคือคุณมีคีย์ DSA แต่ตอนนี้ SSH (ชัดเจน) เป็นค่าเริ่มต้นที่ต้องใช้คีย์ RSA ฉันพบปัญหาเมื่ออัปเกรดเป็น 16.04 คุณสามารถดูเพิ่มเติมที่นี่แต่คำตอบสั้น ๆ คือเพิ่มต่อไปนี้เพื่อ~/.ssh/config:

PubkeyAcceptedKeyTypes ssh-dss

1

ฉันแก้ไขปัญหานี้โดยยกเลิกการแสดงความคิดเห็น "รหัสผ่านการยืนยันตัวตนใช่" ใน / etc / ssh / sshd_config


1

เนื่องจากความต้องการการแก้ไขปัญหาการสื่อสารระหว่างสองเครื่องที่แตกต่างกันฉันจึงมีไพรเวทคีย์สอง~/.sshตัวที่ฝั่งไคลเอ็นต์

แทนที่จะกำหนดค่าแต่ละโฮสต์เซิร์ฟเวอร์ด้วยไพรเวตคีย์~/.ssh/identityตามที่ฉันควรทำฉันมีคีย์รอง (และในกรณีนี้ผิด) คีย์ที่กำหนดค่าสำหรับโฮสต์ทั้งหมด:

Host *
IdentityFile ~/.ssh/identity_b

การแก้ไขการ~/.ssh/identityแก้ไขปัญหา:

Host a
IdentityFile ~/.ssh/identity_a
Host b
IdentityFile ~/.ssh/identity_b

0

ฉันเพิ่งมีปัญหาเดียวกัน แต่เปลี่ยนสิทธิ์ด้วยchmodไม่ช่วยเนื่องจากมันปรากฏว่าฉันไม่ได้เป็นเจ้าของ~/.ssh/authorized_keysไฟล์ คุณสามารถเปลี่ยนความเป็นเจ้าของ.sshไดเรกทอรีด้วย:

sudo chown -R "$USER" ~/.ssh

-1

ยังไงก็เถอะมันก็ใช้ได้กับฉัน:

root @ kaiser: ~ # vim / etc / ssh / sshd_config

เปลี่ยนบรรทัดนี้จากใช่เป็นไม่ใช่ 28 StrictModes no

ลองอีกครั้ง

sysadmin @ suselinux1: ~> con sysadmin kaiser ยินดีต้อนรับสู่ Ubuntu 12.04.1 LTS (GNU / Linux 3.2.0-25-generic i686)

ลงชื่อเข้าใช้ครั้งสุดท้าย: ศุกร์ 9 พ.ย. 15:40:11 2012 จาก 10.1.3.25 sysadmin @ kaiser: ~ $ date วันที่ 9 พฤศจิกายน 17:53:11 CST 2012 sysadmin @ kaiser: ~ $


3
การทำบางสิ่งโดยไม่ทราบว่ามันทำอะไรและทำไมมันถึงทำงานได้เป็นที่ยอมรับ แต่การแนะนำแบบเดียวกันนั้นไม่ดีและยุติธรรมถ้าหากมันเกี่ยวข้องกับระบบรักษาความปลอดภัย
Mahesh

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