การรับรองความถูกต้องด้วยคีย์ใน Ruby ผ่าน ssh: ไม่สามารถแยกวิเคราะห์ PKey: ไม่มีบรรทัดเริ่มต้น

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

 ERROR -- net.ssh.authentication.key_manager[2b02154b7610]: could not load private key file `/home/me/.ssh/id_rsa.pub': ArgumentError (Could not parse PKey: no start line)

รหัสของฉัน:

Net::SSH.start(ip_item, "root", host_key: "ssh-rsa", keys: ["~/.ssh/id_rsa.pub"], verbose: :debug) do |ssh|

นั่นเป็นข้อผิดพลาดหรือไม่? ทำไมมันถึงบอกว่า "ส่วนตัว"?

กุญแจมีอยู่จริง

ฉันสามารถเชื่อมต่อกับเซิร์ฟเวอร์ผ่านทางเทอร์มินัลได้โดยไม่ต้องใช้รหัสผ่าน และมันจะถูกเพิ่มเข้าไปในรายการโฮสต์ที่รู้จักของเซิร์ฟเวอร์อย่างถูกต้องเนื่องจากฉันสามารถเชื่อมต่อได้

นอกจากนี้ cat ~/.ssh/authorized_keys บนเซิร์ฟเวอร์ยังแสดงรหัสสาธารณะของฉัน


person Community    schedule 29.06.2016    source แหล่งที่มา


คำตอบ (2)


คุณต้องระบุเส้นทางไปยังคีย์ส่วนตัวเมื่อเชื่อมต่อกับโฮสต์ ไม่ใช่คีย์สาธารณะ

person Frederick Cheung    schedule 29.06.2016
comment
แต่มันพูดถึงเรื่องนั้นที่ไหนในเอกสาร? - person ; 29.06.2016
comment
rubydoc.info/github/net-ssh/net-ssh/ Net/SSH บอกว่าคีย์ =› อาร์เรย์ของชื่อไฟล์ของคีย์ส่วนตัวที่จะใช้สำหรับการตรวจสอบสิทธิ์คีย์สาธารณะและโฮสต์ - person Frederick Cheung; 29.06.2016
comment
หรือคุณต้องแน่ใจว่า ssh-agent กำลังทำงานอยู่หากมีรหัสผ่านอยู่บนคีย์ =\ - person ; 11.06.2019

ลองเปลี่ยน "~/.ssh/id_rsa.pub" เป็น "~/.ssh/id_rsa" ในโค้ดของคุณ มันควรจะช่วยได้

person Ivan Olshansky    schedule 17.10.2018