ssh-copy-id - สิทธิ์ถูกปฏิเสธ (publickey) [ปิด]


30

ฉันต้องการตั้งค่า ssh tunnel ไปยังเซิร์ฟเวอร์ mysql ซึ่งอยู่ในคอมพิวเตอร์ที่มีเครื่องเสมือน อุโมงค์จะต้องทำงานหากเครื่องเริ่มต้นใหม่

สมมุติว่า A คือคอมพิวเตอร์ที่มีซอฟต์แวร์ linux B - เครื่องเสมือนในคอมพิวเตอร์ A.

MySQL อยู่ใน B

C - เป็นเครื่องเสมือนจริงในคอมพิวเตอร์ A ซึ่งต้องการเชื่อมต่อกับ MySQL ใน B

ตอนนี้โดยบทความนี้: http://www.thegeekstuff.com/2008/11/3-steps-to-perform-ssh-login-without-password-using-ssh-keygen-ssh-copy-id/

ฉันพยายามคัดลอกกุญแจสาธารณะไปยังเซิร์ฟเวอร์ระยะไกล ฉันเดาว่าฉันต้องคัดลอกไปยังคอมพิวเตอร์ A

ssh-copy-id -i id_rsa.pub.bak [user]@[IP of A] -p [port of A]
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

ตอนนี้ฉันพยายามป้อนข้อความรหัสผ่านของไฟล์ id_rsa.pub.bak มันปฏิเสธ

จากนั้นฉันเห็นว่ามันใช้รหัสใน /home/ [ชื่อผู้ใช้] /.ssh/id_rsa ซึ่งแตกต่างจากรหัสสาธารณะที่ฉันพยายามคัดลอกฉันหมายถึงแน่นอนว่ารหัสส่วนตัวนั้นแตกต่างกัน แต่ฉันหมายถึงฉันคัดลอกกุญแจสาธารณะของอีกใบ รหัสส่วนตัว ดังนั้นฉันจึงลองใช้ข้อความรหัสผ่านของมัน ยังปฏิเสธ

ฉันจะดีบักทำไมข้อความรหัสผ่านถูกปฏิเสธได้อย่างไร

ปรับปรุง

จากความคิดเห็นฉันสร้างไฟล์สาธารณะใหม่ชื่อ id_rsa.pub ซึ่งทุกอย่างอยู่ในบรรทัดเดียวเดี๋ยวนี้

และเรียกใช้และยังคงได้รับข้อผิดพลาด

ssh-copy-id -i id_rsa.pub [host and port] -vvv
Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

ปรับปรุง

ตรวจสอบการอนุญาตในโฟลเดอร์. ssh และไฟล์ authorized_keys ในคอมพิวเตอร์ A ซึ่งเป็น 700 และ 600 ดังนั้นตามความคิดเห็นที่บอกว่าดี

ปรับปรุง

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

sudo /etc/init.d/ssh restart

จากนั้นลองอีกครั้งในเครื่อง C เพื่อคัดลอกไปยังเครื่อง A

ssh-copy-id -i id_rsa.pub [user@host] -p [port] -v

และยังคงเหมือนเดิม:

Enter passphrase for key '/home/[user]/.ssh/id_rsa':
Permission denied (publickey).

หากฉันไปคัดลอกคีย์ด้วยตนเองไปที่ authorized_keys ฉันจะเห็นว่ารหัสสาธารณะนั้นมีอยู่แล้วเหมือนกันกับที่ฉันต้องการคัดลอก ฉันถามเพื่อนร่วมงานของฉันเขาบอกว่าเขาไม่ได้คัดลอก ดังนั้นฉันจึงไม่เข้าใจว่ามันจะอยู่ที่นั่นได้อย่างไร

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

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


id_rsaคุณมีไฟล์ใดบ้างที่เริ่มต้นด้วย ผมจะคาดหวังที่จะล้มเหลวด้วยข้อผิดพลาดในแบบที่คุณเรียกมันว่าเป็นมันคาดว่าไฟล์ที่ลงท้ายด้วยssh-copy-id .pubเป็นของคุณปลายด้วยก็อาจจะใช้.bak id_rsa.pub.bak.pub
nlu

@nlu - ฉันมี id_rsa ซึ่งฉันคัดลอกโดยการลากและวางไฟล์โดยใช้ notepad ftp explorer นอกจากนี้ยังมี id_rsa.bak ซึ่งฉันสร้างด้วยเนื้อหานาโนและวางด้วยเมาส์จาก notepad ++ แต่ดูเหมือนว่ามันจะสร้างข้อความเดียวกัน แต่ก็มีคอลัมน์ 2 คอลัมน์ และฉันก็มี id_rsa.pub.bak ซึ่งทำด้วยนาโน จริงๆแล้วมันมี 3 บรรทัด แต่ดั้งเดิมมีทั้งหมดในหนึ่งบรรทัด ไม่รู้ว่ามันเป็นเรื่องสำคัญ แต่อย่างที่เราเห็นฉันไม่ได้รับข้อความแสดงข้อผิดพลาดเกี่ยวกับชื่อไฟล์
Darius.V

1
มันทำ ดูที่นี่สำหรับตัวอย่าง: snailbook.com/faq/publickey-userauth.auto.html ("ถ้าคุณใช้โปรแกรมแก้ไขข้อความโปรดระวังว่ามันจะไม่แบ่งบรรทัดในไฟล์นี้")
nlu

คำถามถูกปิดเพราะพวกเขาคิดว่ามันไม่ใช่ระบบในสภาพแวดล้อมทางธุรกิจ แต่ฉันกำลังแก้ไขปัญหาสภาพแวดล้อมทางธุรกิจ
Darius.V

คำตอบ:


25

คุณต้องลงชื่อเข้าใช้เพื่อคัดลอกคีย์ของคุณคุณไม่มีสิทธิ์เข้าถึงเครื่องระยะไกล (ปิดการใช้งานคีย์และรหัสผ่านไม่ถูกต้อง):

เปิดใช้งานการพิสูจน์ตัวตน passwd อีกครั้งใน / etc / ssh / sshd_config:

PasswordAuthentication yes

จากนั้นเริ่มบริการ:

service sshd restart

คัดลอกกุญแจสาธารณะของคุณ:

ssh-copy-id -i ~/.ssh/id_rsa.pub USER@HOST -p PORT
[Enter user password]

ลองเข้าสู่ระบบอีกครั้งไม่จำเป็นต้องใช้รหัสผ่าน

จากนั้นปิดการใช้งานการตรวจสอบรหัสผ่าน


ถ้าฉันตั้ง PasswordAuth เป็น yes ในเซิร์ฟเวอร์ที่ฉันต้องการเข้าสู่ระบบและฉันสามารถเชื่อมต่อกับ putty โดยใช้รหัสผ่าน แต่ ssh-copy-id ยังคงไม่ถามรหัสผ่านและเพียงแค่เขียนปฏิเสธสิทธิ์ (publickey) ?
Darius.V

เฮ้ฉันอยากจะบอกว่าขอบคุณ !!! คุณบันทึกวันของฉัน !!! ขอบคุณมาก!!!
尤川豪

ขอบคุณ @Nabil สิ่งนี้สามารถใช้งานได้กับ Ubuntu 18.04 เช่นกัน เป็นข้อควรระวังสำหรับผู้อ่านในอนาคต: แก้ไข / etc / ssh / sshd_config ตามคำแนะนำและไม่ใช่ ssh_config โดยการควบคุม (เช่นเดียวกับที่ฉันทำ!) นอกจากนี้ ssh-copy-id USER @ HOST ก็เพียงพอแล้ว
Snidhi Sofpro

12

Permission denied (publickey) เซิร์ฟเวอร์ SSH ระยะไกลบอกว่า "ฉันยอมรับเฉพาะกุญแจสาธารณะเป็นวิธีการตรวจสอบสิทธิ์หายไป"

นั่นคือความท้าทายหลักของคุณ: เข้าสู่ระบบระยะไกล เมื่อคุณทำได้คุณสามารถอัปโหลดรหัสของคุณได้:

  • ใช้ssh-copy-id- มันจะช่วยให้คุณสามารถระบุคีย์ที่แตกต่างหากคุณอยู่ในกระบวนการของการแทนที่เดิมของคุณ
  • แก้ไขผู้ใช้ระยะไกล~/.ssh/authorized_keysเพื่อต่อท้ายคีย์ของคุณด้วยตนเอง

5

พบปัญหาในที่สุด

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

วิธีแก้ปัญหาแบบนี้คือเวลานี้ - ถ้าคุณต้องการเข้าสู่ระบบโดยไม่มีข้อความรหัสผ่าน - ตรวจสอบว่าคีย์ส่วนตัวของคุณไม่มีข้อความรหัสผ่านจริงๆหรือไม่

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