ssh-copy-id ไม่ทำงาน


17

ฉันกำลังพยายามตั้งค่าการเข้าสู่ระบบ SSH ที่ไม่มีรหัสผ่านบน CentOS 5.4:

  1. ฉันสร้างคีย์สาธารณะ RSA บนไคลเอนต์
  2. ssh-copy-id จากลูกค้าไปยังเซิร์ฟเวอร์
  3. ตรวจสอบแล้ว ~ / .ssh / authorized_keys มีรหัสลูกค้า

ไคลเอ็นต์ยังคงได้รับพร้อมต์สำหรับรหัสผ่าน ฉันพลาดอะไร?

ขอบคุณ

แก้ไข: เลือก ssh_config และการอนุญาตตามคำแนะนำ นี่คือข้อมูลการแก้ปัญหาจากลูกค้า:

debug2: key: /home/saguna/.ssh/identity ((nil))
debug2: key: /home/saguna/.ssh/id_rsa (0x2b31921be9a0)
debug2: key: /home/saguna/.ssh/id_dsa ((nil))
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug3: start over, passed a different list publickey,gssapi-with-mic,password
debug3: preferred gssapi-with-mic,publickey,keyboard-interactive,password
debug3: authmethod_lookup gssapi-with-mic
debug3: remaining preferred: publickey,keyboard-interactive,password
debug3: authmethod_is_enabled gssapi-with-mic
debug1: Next authentication method: gssapi-with-mic
debug3: Trying to reverse map address 192.168.1.75.
debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug1: Unspecified GSS failure.  Minor code may provide more information
Unknown code krb5 195

debug2: we did not send a packet, disable method
debug3: authmethod_lookup publickey
debug3: remaining preferred: keyboard-interactive,password
debug3: authmethod_is_enabled publickey
debug1: Next authentication method: publickey
debug1: Trying private key: /home/saguna/.ssh/identity
debug3: no such identity: /home/saguna/.ssh/identity
debug1: Offering public key: /home/saguna/.ssh/id_rsa
debug3: send_pubkey_test
debug2: we sent a publickey packet, wait for reply
debug1: Authentications that can continue: publickey,gssapi-with-mic,password
debug1: Trying private key: /home/saguna/.ssh/id_dsa
debug3: no such identity: /home/saguna/.ssh/id_dsa
debug2: we did not send a packet, disable method
debug3: authmethod_lookup password
debug3: remaining preferred: ,password
debug3: authmethod_is_enabled password
debug1: Next authentication method: password
saguna@192.168.1.75's password: 

ฉันได้สิ่งนี้ด้วย :(
Matt Joiner

คำตอบ:


17

9/10 ครั้งเป็นเพราะ ~ / .ssh / authorized_keys ไม่ได้อยู่ในโหมดที่ถูกต้อง

chmod 600 ~/.ssh/authorized_keys

2
FYI ฉันสร้างสคริปต์ขนาดเล็กที่github.com/centic9/generate-and-send-ssh-keyซึ่งทำตามขั้นตอนที่จำเป็นในครั้งเดียวและช่วยให้มั่นใจว่าสิทธิ์ของไฟล์ / ไดเรกทอรีทั้งหมดซึ่งทำให้ฉันปวดหัว ...
centic

5
หากสิ่งนี้ไม่ได้ผลสำหรับบางคนคุณควรดูคำตอบของ @ Gilles โดยเฉพาะอย่างยิ่งบ้านและ~/.sshไดเรกทอรีไม่สามารถเขียนได้โดยผู้อื่นนอกจากผู้ใช้
ostrokach

ฉันรู้ว่านี่เก่า แต่ขอบคุณล้านถึง @centic ฉันแน่ใจว่าการอนุญาตของฉันถูกต้อง แต่ไม่เคยใส่ใจที่จะตรวจสอบกับ $ HOME และ. ssh / ไดเรกทอรี
jdferreira

12

เช็กอิน / etc / ssh / sshd_config เพื่ออนุญาตการพิสูจน์ตัวตนด้วยคีย์ คุณควรมีสิ่งนี้อยู่ในนั้นและตรวจสอบให้แน่ใจว่าไม่มีการแสดงความคิดเห็นบรรทัด:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys

PS: อย่าลืมรีสตาร์ท sshd หลังจากคุณแก้ไขไฟล์ (/etc/init.d/sshd restart)


นอกจากคำตอบของ Patkos Csaba แล้วให้ตรวจสอบการอนุญาตของโฟลเดอร์ ~ / .ssh ในระยะไกล

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

ฉันได้รับ 'ไม่สามารถเปิดการเชื่อมต่อกับตัวแทนการตรวจสอบความถูกต้องของคุณ' เมื่อพยายาม ssh-add
Manticore

นี่ควรเป็นคำตอบที่เลือก
Francisco Tapia

บางทีคุณอาจไม่เข้าใจความคิดเห็น บรรทัดแสดงความคิดเห็นแสดงค่าเริ่มต้น คุณไม่จำเป็นต้องยกเลิกการใส่เครื่องหมายข้อคิดเห็นหากคุณต้องการค่าเริ่มต้น คุณจะต้องยกเลิกการใส่เครื่องหมายข้อคิดเห็นคุณสมบัติหากคุณต้องการแทนที่ค่าเริ่มต้น
clearlight

5

ฉันพบว่าในระบบของฉันปัญหาคือไดเรกทอรีผู้ใช้ (/ home / ชื่อผู้ใช้) มีการติดตั้งการอนุญาตที่ไม่ถูกต้อง มันเป็นdrwxr-x-w-และมันจำเป็นต้องเป็นdrwxr-xr-x(มีสิทธิ์เขียนเท่านั้นสำหรับเจ้าของ) ทางออกคือการใช้ chmod:

sudo chmod 0755 /home/username

1
ย่ะ! ทำงานให้ฉัน ssh แจ้งรหัสผ่านให้ฉันเพราะฉันไม่สามารถพล็อตเรื่องนั้นได้
clearlight

4

ฉันไม่ใช่ผู้เชี่ยวชาญที่นี่ แต่ก็เจอปัญหาเช่นนี้ด้วยนี่คือสองเซ็นต์ของฉันนอกเหนือจากคำแนะนำอื่น ๆ ทั้งหมด

บางครั้งssh-copy-idคัดลอกคีย์ผิดไปยังเซิร์ฟเวอร์ระยะไกล (อาจเกิดขึ้นหากคุณมีหลายคีย์และ / หรือใช้ชื่อที่ไม่ใช่ค่าเริ่มต้นสำหรับไฟล์คีย์) หรือตัวแทนการตรวจสอบความถูกต้องของคุณถูกกำหนดค่าผิด

นี่คือคำพูดจากหน้าคน :

หากได้รับตัวเลือก -i ไฟล์ข้อมูลประจำตัว (ค่าเริ่มต้นคือ ~ / .ssh / id_rsa.pub) จะถูกใช้โดยไม่คำนึงว่ามีคีย์ใด ๆ ใน ssh-agent ของคุณหรือไม่ มิฉะนั้นหากสิ่งนี้: ssh-add -L จัดเตรียมเอาต์พุตใด ๆ มันจะใช้สิ่งนั้นในการกำหนดค่าตามความชอบกับไฟล์ข้อมูลประจำตัว

ดังนั้นโดยทั่วไปคุณต้องการตรวจสอบว่า:

  • เอเจนต์การพิสูจน์ตัวตนระบบของคุณ (โดยปกติคือ ssh-agent) เห็นคีย์ที่คุณตั้งใจจะใช้ (ตรวจสอบssh-add -Lเอาต์พุต)
    • หากคุณไม่เห็นรหัสที่ต้องการให้เพิ่มโดยใช้ssh-add
  • ssh-copy-idคัดลอกคีย์เดียวกันกับเครื่องระยะไกล (เพียงเข้าสู่ระบบไปยังเซิร์ฟเวอร์ระยะไกลโดยใช้รหัสผ่านและตรวจสอบเนื้อหาของ~/.ssh/authorized_keys)
    • หากคุณไม่เห็นคีย์ที่ต้องการบนเซิร์ฟเวอร์ระยะไกลคุณสามารถบอกได้ว่าssh-copy-idจะคัดลอกคีย์ใด:ssh-copy-id -i ~/.ssh/some_public_key

หวังว่าจะช่วย


คุณจับมัน! ขุดผ่านปัญหาของฉัน ssh-copy-idคือ: DEFAULT_PUB_ID_FILE=$(ls -t ${HOME}/.ssh/id*.pub 2>/dev/null | grep -v -- '-cert.pub$' | head -n 1)ซึ่งจะเริ่มต้นที่ปุ่มตัวอักษรแรก - ในกรณีของฉันฉันมีid_boot2docker.pub(ซึ่งเห็นได้ชัดว่าเป็นชื่อเริ่มต้นสำหรับสิ่ง boot2docker ssh) ดูเหมือนว่ามีการใช้งาน ssh-copy-id ที่แตกต่างกันมากมาย ฉันมาจากbrew install ssh-copy-idซึ่งในทางกลับกันก็นำมาจาก openssh-portable หน้าคนของฉันพูดถึงพฤติกรรมนี้อย่างชัดเจน ...
คริสเตียน Ulbrich

3

ปัญหาที่พบบ่อยที่สุดคือการอนุญาตที่ไม่ถูกต้องในฝั่งเซิร์ฟเวอร์ ตรวจสอบว่าไม่มีโฮมไดเร็กตอรี่ของคุณ, ~/.sshและ~/.ssh/authorized_keysทุกคนสามารถเขียนได้ แต่คุณ (โดยเฉพาะพวกเขาจะต้องไม่สามารถเขียนเป็นกลุ่มได้)

หากนั่นไม่ใช่ปัญหาให้เรียกใช้ssh -vvv serverและดูมุมมองการสนทนาของลูกค้า โดยเฉพาะอย่างยิ่งตรวจสอบว่าไคลเอนต์พยายามคีย์กับเซิร์ฟเวอร์


ขอบคุณ!!! ผมไม่เข้าใจว่าทำไม แต่ไดเรกทอรีบ้านของคุณ , ~/.sshและ~/.ssh/authorized_keysไม่สามารถเขียนได้โดยทุกคน แต่คุณ
ostrokach


1

ฉันลองแก้ไขอื่น ๆ แต่พบว่าฉันต้องเปลี่ยนโฮมไดเร็กตอรี่เพื่อไม่ให้คนอื่นเขียนได้ ไดเรกทอรีบ้านคือ 777 ฉันเปลี่ยนเป็น 755 และใช้งานได้


1
ยินดีต้อนรับ @dulcana เขาพยายามตั้งค่าการล็อกอินแบบ passwrodless ssh การเปลี่ยนการอนุญาตเป็น 755 จะช่วยแก้ปัญหาได้อย่างไร
Francisco Tapia

@FranciscoTapia นั่นเป็นเพราะ sshd รับรองว่าผู้ใช้รายอื่นไม่สามารถสร้างไฟล์ authorized_keys ที่มีเจตนาร้ายได้ปฏิเสธการเข้าสู่ระบบโดยใช้คีย์ ssh ที่กลุ่มหรือคนอื่น ๆ สามารถเขียนไฟล์หรือผู้ปกครองคนใดก็ได้ คำตอบอื่น ๆ ได้กล่าวถึงนี้ด้วย
Ángel

0

ในกรณีของฉัน / etc / ssh / sshd_config มีพารามิเตอร์ต่อไปนี้:

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile  .ssh/authorized_keys2

แต่ ssh-copy-id สร้างไฟล์ที่มีชื่อ authorized_keys ดังนั้นฉันต้องแก้ไขรายการเป็นชื่อใหม่ ข้อมูลเพิ่มเติมเกี่ยวกับการเลิกใช้งาน


0

ในฐานะที่เป็นส่วนประกอบของคำตอบของ Omer Dagan สำหรับ CentOS 7 รุ่นใหม่ให้ใช้:

journalctl -f -u sshd

เพื่อดูบันทึก sshd ที่เซิร์ฟเวอร์


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