[RHEL8.X] แก้ปัญหา SSH / SFTP พบ sign_and_send_pubkey no mutual signature supported

ช่วงนี้ผมได้ไป Implement HW ที่ SITE นึงด้วย RedHat 8X ครับ พบปัญหาว่าตัว FTP Server ของลูกค้าไม่ได้สักทีครับ ติด ERROR

sign_and_send_pubkey no mutual signature supported

ทบทวนกันก่อนว่าทำอะไรบ้าง

  • Generate Private / Public Key เพื่อใช้สำหรับ SSH และ SFTP เพื่อทดสอบ
  • การทดสอบ
    • ทดสอบเชื่อมระหว่าง RedHat 8.X สามารถใช้งานได้
    • เมื่อส่ง Public Key ไปใช้ FTP Server ของลูกค้า ปรากฏว่าเจอ Error sign_and_send_pubkey no mutual signature supported
  • ทดสอบเพิ่มเติม
    • ทดสอบเชื่อมระหว่าง RedHat 8.X กับ RedHat 7.X สามารถใช้งานได้
    • ทดสอบติดตั้ง serv-u บน Windows Server ตามลูกค้าก็ใช้งานได้นะ
    • หมายเหตุ : serv-u เจ้าของเดียวกับ Solar Wind ที่มีข่าวหลุดๆกันแหละครับ

หนทางสุดท้ายลองพ่น Log ออกมาครับ

  • ตัว ssh ที option -vvv เอาไว้ใช้ให้ระบบมันพ่น debug log ออกมาครับ โดยการใช้งานไม่ได้ยากครับ ทดสอบทำได้เลย ยกตัวอย่าง เช่น
[invsbch@invsuatapp01 ~]$ ssh -vvv invsfile@10.22.160.30
  • สิ่งที่ผมทำดู Log จากเครื่องที่ใช้งาน Key กับเครื่องที่ใช้งาน Key ไม่ได้ และนำ Log มาเทียบกันครับ
  • ผลที่ได้เราจะพบว่า
    • เครื่องที่ใช้งาน Key ได้ มีอัลกอริทึม ECDSA
    • แต่เครื่องที่ใช้งานไม่ได้ ยังใช้อัลกอริทึม RSA โดยมีการกำหนด Key EXchange (kex) คือ diffie-hellman-group14-sha1
  • RSA VS ECDSA มันต่างกันอย่างไร
    • RSA เป็นการเข้ารหัส โดยใช้หลักของจำนวนเฉพาะ เป็นแนวคิดแรกๆที่ริเริ่มมาเลยครับ
    • ECDSA เป็นการเข้ารหัส โดยใช้หลักการ Elliptic Curve ซึ่งมีข้อดี คือ
      • ใช้พื้นที่น้อยกว่า แต่ได้ความแข็งแกร่งเทียบกับ key มาจาก RSA ครับ
      • เมื่อใช้พื้นที่น้อย นั้นแสดงว่าใช้พลังของ CPU ในการประมวลผลน้อยด้วยครับ
      • ถ่วงเวลาจากการถอดรหัสได้ช้ากว่า RSA (ที่ใช่คำว่าถ่วงเวลา เพราะ Security มันไม่มีอะไรที่ปลอดภัยตลอดครับ)
      • พวก Crypto Currency อย่าง Bit Coin / Ethereum ใช้ Algorithm นี้ด้วยนะครับ

ECDSA มันดีแบบนี้แล้ว เราก็ถูกสิ

  • ก็ไม่เชิงครับ เพราะ ถ้าเราจะไปบังคับให้เครื่องลูกค้า Upgrade OS หรือ Software ใหม่ๆ มันมีค่าใช้จ่ายตามมาด้วยครับ
  • ทางแก้ง่ายๆ ยอม Config เฉพาะ User@Host ใช้ยอมใช้ KEX เก่าไปก่อนครับ

แก้ไขปัญหา

  • สร้างไฟล์ ~.ssh/config
  • กำหนด Config เฉพาะ User@Host ใช้ยอมใช้ KEX เก่าไปก่อนครับ
Host 10.2X.YY.ZZZ
   User TEST_APP
   IdentityFile ~/.sgh/id rsa
   KexAlgorithms diffie-hellman-group14-shal
   PubkeyAcceptedKeyTypes +ssh-rsa
  • จากนั้นลองทดสอบ SSH หรือ SFTP ครับ (บางที่อาจจะ SSH ไม่ได้ อย่าง เช่น Windows Server รุ่นเก่าๆ เป็นต้นครับ

Reference (เขียน Blog ตอนนี้ได้ความรู้เยอะมากครับ)


Discover more from naiwaen@DebuggingSoft

Subscribe to get the latest posts to your email.