SSH Public Key - ไม่มีวิธีการตรวจสอบที่รองรับ (เซิร์ฟเวอร์ส่งรหัสสาธารณะ)


80

ฉันมีการตั้งค่าเซิร์ฟเวอร์ 12.10 ในเครื่องเสมือนโดยมีการตั้งค่าเครือข่ายเป็นบริดจ์ (โดยพื้นฐานแล้วจะเห็นว่าเป็นคอมพิวเตอร์ที่เชื่อมต่อกับสวิตช์ของฉัน)

ฉันติดตั้ง opensshd ผ่านapt-getและสามารถเชื่อมต่อกับเซิร์ฟเวอร์โดยใช้ putty ด้วยชื่อผู้ใช้และรหัสผ่านของฉัน

ฉันตั้งค่าเกี่ยวกับการพยายามให้มันใช้การพิสูจน์ตัวตนของคีย์สาธารณะ / ส่วนตัว ฉันทำต่อไปนี้:

  1. สร้างคีย์โดยใช้ PuttyGen
  2. ย้ายกุญแจสาธารณะไปที่/etc/ssh/myusername/authorized_keys(ฉันกำลังใช้ไดเรกทอรีบ้านที่เข้ารหัส)
  3. ตั้งค่าsshd_configเช่น:

    PubkeyAuthentication yes
    AuthorizedKeysFile /etc/ssh/%u/authorized_keys
    StrictModes no
    PasswordAuthentication no
    UsePAM yes
    

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

ถ้าฉันทำงานsshdในโหมด debug ฉันเห็น:

PAM: initializing for "username"
PAM: setting PAM_RHOST to "192.168.1.7"
PAM: setting PAM_TTY to "ssh"
userauth-request for user username service ssh-connection method publickey [preauth]
attempt 1 failures 0 [preauth]
test whether pkalg/pkblob are acceptable [preauth[
Checking blacklist file /usr/share/ssh/blacklist.RSA-1023
Checking blacklist file /etc/ssh/blacklist.RSA-1023
temporarily_use_uid: 1000/1000 (e=0/0)
trying public key file /etc/ssh/username/authorized_keys
fd4 clearing O_NONBLOCK
restore_uid: 0/0
Failed publickey for username from 192.168.1.7 port 14343 ssh2
Received disconnect from 192.168.1.7: 14: No supported authentication methods available [preauth]
do_cleanup [preauth]
monitor_read_log: child log fd closed
do_cleanup
PAM: cleanup

เหตุใดสิ่งนี้จึงเกิดขึ้นและฉันจะแก้ไขได้อย่างไร


ในกรณีของฉันฉันมีสองกรณีของ AWS หนึ่งในนั้นทำงานได้อย่างไร้ที่ติส่วนอีกอันทำงานเมื่อเชื่อมต่อผ่าน Intellij Idea แต่ไม่ใช่จาก Putty แต่ทำงานในตอนเริ่มต้น ดังนั้นในกรณีของฉันมันจะต้องมีอะไรบางอย่างเกี่ยวกับ
สีโป๊ว

คำตอบ:


70

แก้ไขปัญหา:

ดูเหมือนว่ามีปัญหากับไฟล์กุญแจสาธารณะของฉัน PuttyGen จะสร้างไฟล์กุญแจสาธารณะที่มีลักษณะดังนี้:

---- BEGIN SSH2 PUBLIC KEY ----
Comment: "rsa-key-20121022"
AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwu
a6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOH
tr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/u
vObrJe8=
---- END SSH2 PUBLIC KEY ----

อย่างไรก็ตามสิ่งนี้จะไม่ทำงานดังนั้นสิ่งที่คุณต้องทำคือเปิดคีย์ใน PuttyGen แล้วคัดลอกจากที่นั่น (ผลลัพธ์นี้จะทำให้คีย์อยู่ในรูปแบบที่ถูกต้องและใน 1 บรรทัด):

ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022

วางสิ่งนี้ลงไปauthorized_keysแล้วจึงควรใช้งานได้


1
ฉันเปิดauthorized_keysใน vi และลบตัวแบ่งบรรทัดทั้งหมดและใช้งานได้
ลุค

1
ไฟล์กุญแจสาธารณะอยู่ที่ไหน? ฉันแค่ใช้ผงสำหรับอุดรู
Syler

1
ฉันทำทุกสิ่งข้างต้นแล้ว แต่ยังคงเซิร์ฟเวอร์กำลังส่งไม่มีวิธีการตรวจสอบสิทธิ์ที่รองรับ (เซิร์ฟเวอร์ส่งรหัสสาธารณะ)
Al-Alamin

คุณรู้ได้อย่างไรว่าสิ่งนี้ไม่ทำงาน / คุณพบรูปแบบที่คาดหวังไว้ที่ไหน
ไมเคิล

ที่ฉันต้องการวางอย่างถูกต้องเมื่อคุณพูดว่า "วางสิ่งนี้ลงใน authorized_keys จากนั้นควรทำงาน" @ F21
Mahender Reddy Yasa

19
  1. แก้ไข/etc/ssh/sshd_configไฟล์
  2. เปลี่ยนPasswordAuthenticationและการ ChallengeResponseAuthenticationyes

3a /etc/init.d/ssh restartSSH เริ่มต้นใหม่
หรือ
3b ดีกว่าที่คุณใช้service sshd restart


แน่นอนนี่เป็นความคิดเห็นที่เป็นประโยชน์ถ้าคุณมีปัญหาในการเชื่อมต่อโปรแกรม Vie FTP
CNU

นั่นเหมาะกับฉัน!
Asinox

8
วัตถุประสงค์ทั้งการตรวจสอบผ่านทางไฟล์สำคัญคือการหลีกเลี่ยงการตรวจสอบรหัสผ่านดังนั้นจริงคุณควรตั้งเพื่อPasswordAuthentication no
Pere

มันเป็นคำตอบเดียวที่ช่วยฉัน ฉันไม่ต้องการการรับรองความถูกต้องของคีย์สาธารณะ / ส่วนตัว แต่ฉันได้รับข้อความแปลก ๆ
Serge Rogatch

ขอบคุณเกี่ยวกับChallengeResponseAuthenticationมันแก้ปัญหาให้ฉันใน Debian 10.0
realtebo

10

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

สิ่งที่ฉันได้พบว่ามีโอกาสน้อยที่สุดที่จะทำลายคือการสะท้อนสตริงทั้งหมดและเปลี่ยนเส้นทางเอาต์พุตไปยังไฟล์ คลิกขวาใน PuTTY เพื่อวางสตริงคีย์ไปที่ commandline มันทำงานออกมาเช่นนี้ (พร้อมตัวอย่างที่ระบุด้านบน):

echo [right-click-to-paste-here] > /etc/ssh/username/authorized_keys

คุณจะจบลงด้วยสิ่งนี้:

echo ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAhGF6GIuMY8FJ1+CNApnSY1N2YSlkYz72Yvwua6N1nFpBklz1+dsIMg4rcTLcF34M/tW5Yz+NUDAw2AEbxQ32FPgw7sAOIXktkYOHtr7mmimiTjkoSCrJh1kqalPSpi8rglT/Bp67Ql2SZwvUFfMzHISryR0EZC4rXP/uvObrJe8= rsa-key-20121022 > /etc/ssh/username/authorized_keys

ข้อดีอีกประการของวิธีนี้คือคุณสามารถเพิ่มหลาย ๆ คีย์ด้วยวิธีนี้โดยใช้ >> เพื่อต่อท้ายแทน> เพื่อเขียนทับเช่น:

echo ssh-rsa AAAAB3<...snip...>rJe8= rsa-key-20121022 >> /etc/ssh/username

หวังว่าจะช่วยใครซักคน


สิ่งนี้ใช้ไม่ได้กับคีย์ 4096 บิต ... มันเกินขีด จำกัด เทอร์มินัลสำหรับตัวละครที่ฉันคิดว่า
Freedo

1
อาจหรือไม่ควรลบออกจากประวัติทุบตีของคุณในภายหลัง
Jason Powers Murray

@JasonPowersMurray: มันเป็นกุญแจสาธารณะ ระบบการเข้ารหัสคีย์สาธารณะถูกออกแบบมาเพื่อพักรักษาความปลอดภัยเมื่อคีย์มีการเผยแพร่จึงตกลงที่จะเข้าสู่ระบบกุญแจสาธารณะในประวัติศาสตร์ทุบตีและที่อื่น ๆ
เดวิดแครี

9

เราใช้คีย์ประเภทที่ถูกต้องอยู่แล้ว (ppk แทนที่จะเป็น pem) ..

ในกรณีของเรามันเป็นปัญหากับการอนุญาตไฟล์สำหรับ authorized_keys ในโฟลเดอร์ผู้ใช้เซิร์ฟเวอร์ มันจะต้องเป็น -rw-r - r-- ... มันเป็น -rw-rw-r--

ssh พิถีพิถันมากเกี่ยวกับ perms ไฟล์


ขอบคุณที่ชี้นำฉันไปในทิศทางที่ถูกต้อง ในกรณีของเราทั้งเจ้าของและการอนุญาตผิด
Zsolti

วิธีการเปลี่ยนการอนุญาตไฟล์ในขณะที่เราไม่สามารถเข้าถึงผ่าน ssh ได้? วิธีอื่นทำเช่นนั้น?
jit

1
ฉันก็เป็นเจ้าของกลุ่มและปัญหาการอนุญาต ดังที่แสดงไว้ที่นี่ ( stackoverflow.com/a/36808935/384670 ) การอนุญาตที่ฉันต้องใช้คือ 600 สำหรับไฟล์และ 700 สำหรับไดเรกทอรี ฉันเปลี่ยนเจ้าของและกลุ่มเป็นผู้ใช้ที่ไม่ใช่รูทคนนี้ด้วย
M Katz

5

การแก้ไข:

  1. คุณต้องดาวน์โหลด puttyGEN และสร้างกุญแจสาธารณะและกุญแจส่วนตัว
  2. ฉันได้กำหนดรหัสผ่านให้กับคีย์ส่วนตัวของฉันแล้ว
  3. จากนั้นกำหนดค่าคีย์ส่วนตัวในผงสำหรับอุดรู Putty-> SSH-> Auth-> ค้นหาข้อมูลส่วนตัวของคุณ
  4. ให้แน่ใจว่าคุณมีเส้นทางเดียวกันสำหรับคีย์ส่วนตัวและสาธารณะ
  5. คุณต้องกำหนดค่าพับลิกคีย์บนเซิร์ฟเวอร์ (ในกรณีของฉันฉันได้พูดคุยกับคนที่แต่งตัวประหลาดเซิร์ฟเวอร์และถามว่าเขาสามารถเพิ่มกุญแจสาธารณะของฉันไปยังเซิร์ฟเวอร์) คุณต้องใช้รหัสสาธารณะในด้านอื่น ๆ (เซิร์ฟเวอร์) การเชื่อมต่อ

2
"ตรวจสอบว่าคุณมีเส้นทางเดียวกันสำหรับคีย์ส่วนตัวและคีย์สาธารณะ" ที่ไม่เกี่ยวข้องกับมัน คุณไม่ต้องติดตั้งกุญแจสาธารณะของคุณถัดจากไพรเวตส่วนตัวของคุณ ..
3790897

5

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

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