ฉันมีเซิร์ฟเวอร์ Ubuntu ที่ทำงานในคลาวด์ ฉันสร้างผู้ใช้ ( git
) ในโฟลเดอร์/home/git
ฉันได้สร้าง.ssh/
dir และauthorized_keys
ไฟล์
แต่เมื่อฉันใส่รหัสสาธารณะ SSH ของฉันลงในauthorized_keys
เซิร์ฟเวอร์เซิร์ฟเวอร์จะถามรหัสผ่านต่อไป
ฉันทำผิดอะไร?
ฉันมีเซิร์ฟเวอร์ Ubuntu ที่ทำงานในคลาวด์ ฉันสร้างผู้ใช้ ( git
) ในโฟลเดอร์/home/git
ฉันได้สร้าง.ssh/
dir และauthorized_keys
ไฟล์
แต่เมื่อฉันใส่รหัสสาธารณะ SSH ของฉันลงในauthorized_keys
เซิร์ฟเวอร์เซิร์ฟเวอร์จะถามรหัสผ่านต่อไป
ฉันทำผิดอะไร?
คำตอบ:
ทางฝั่งเซิร์ฟเวอร์ ssh daemon จะเข้าสู่ระบบข้อผิดพลาด/var/log/auth.log
ดังนั้นให้ตรวจสอบไฟล์นั้นเพื่อดูว่ามีรายงานอะไรบ้าง
จากฝั่งไคลเอ็นต์เมื่อสร้างการเชื่อมต่อคุณสามารถเพิ่มการ-v
ตั้งค่าสถานะ (หรือ-vv
หรือ-vvv
) เพื่อเพิ่มการใช้คำฟุ่มเฟื่อย คุณอาจระบุปัญหาของคุณได้ด้วยวิธีนี้
นี่คือสิ่งอื่น ๆ ที่ต้องตรวจสอบ
/home/git/.ssh/authorized_keys
git
/home/git/.ssh/authorized_keys
มีโหมด 600 ( -rw-------
)ตรวจสอบ/etc/ssh/sshd_config
ไฟล์ด้วย
PubkeyAuthentication
ควรตั้งเป็น yes
AuthorizedKeysFile
คำสั่งที่กำหนดเส้นทางที่คีย์ที่ได้รับอนุญาตควรจะอยู่ %h/.ssh/authorized_keys
ตรวจสอบให้แน่ใจก็ออกความเห็นหรือเริ่มต้นของ/var/log/auth.log
ไฟล์ มีวิธีเปิดใช้หรือไม่
sudo service ssh restart
นอกจากนี้ตรวจสอบให้แน่ใจว่าไดเรกทอรีบ้านผู้ใช้ของคุณ (ในกรณีของคุณ / home / git) เขียนได้โดยคุณเท่านั้น ฉันมีปัญหานี้เพียงครั้งเดียวเพราะไดเรกทอรีบ้านของฉันเขียนได้เป็นกลุ่ม /var/log/auth.log พูดใน: "รับรองความถูกต้องปฏิเสธ: ความเป็นเจ้าของหรือโหมดที่ไม่ดีสำหรับไดเรกทอรี / home / chuck" (นี่คือเพื่อให้แน่ใจว่าจะไม่ใช้ไฟล์ authorized_keys ที่บุคคลอื่นที่ไม่ใช่คุณยุ่งกับ!)
มีหลายวิธีในการแก้ไขปัญหานี้: คุณสามารถกำหนดค่าsshd
(ฝั่งเซิร์ฟเวอร์) หรือssh
(ฝั่งไคลเอ็นต์) ไม่ให้ใช้การพิสูจน์ตัวตนด้วยรหัสผ่าน การปิดใช้งานการรับรองความถูกต้องด้วยรหัสผ่านบนเซิร์ฟเวอร์ทำให้เซิร์ฟเวอร์ของคุณปลอดภัยมากขึ้น แต่คุณจะมีปัญหาหากคุณทำรหัสของคุณหาย
ในการสร้างssh
(ฝั่งไคลเอ็นต์) โดยใช้การพิสูจน์ตัวตน pubkey ให้เพิ่มตัวเลือกบางอย่างลงในssh
คำสั่ง:
ssh -o PubkeyAuthentication=yes -o PasswordAuthentication=no -X git@server
หากใช้งานได้คุณสามารถตั้งค่าPasswordAuthentication=no
ตัวเลือกได้อย่างถาวรใน ssh client config file ทั้ง/etc/ssh/ssh_config
ระบบหรือ~/.ssh/config
เฉพาะผู้ใช้ (ตามรายละเอียดดูman ssh_config
)
/etc/ssh/ssh_config
) บนระบบ Debian / Ubuntu แล้วต้องการ PubkeyAuthentication
และลองก่อนว่าคุณจะเห็นเมื่อเรียกใช้ssh
ในโหมด verbose
คุณใช้ ~ / .ssh / config บนเครื่องของคุณหรือไม่? ฉันพบปัญหานี้เมื่อฉันใช้คำสั่ง IdentityFile ในไฟล์ปรับแต่งแล้วชี้ไปที่คีย์สาธารณะ ตัวอย่างเช่น:
Host Cloud
Hostname cloud.theclouds.com
User git
IdentityFile ~/.ssh/config/mykey # This is correct
# IdentityFile ~/.ssh/config/mykey.pub # This is incorrect
หากโฟลเดอร์หลักของคุณถูกเข้ารหัสauthorized_keys
ไฟล์ของคุณจะไม่สามารถอ่านได้ก่อนเข้าสู่ระบบ คุณต้องย้ายมันออกไปนอกบ้าน
นี่คือคำอธิบายและวิธีการทำ: https://help.ubuntu.com/community/SSH/OpenSSH/Keys#Troubleshooting
สิ่งที่ต้องตรวจสอบอีกอย่างคือว่ามีการคืนค่าขนส่งพิเศษในกุญแจสาธารณะของคุณหรือไม่ ฉันทำตามคำแนะนำด้านบนเพื่อตรวจสอบ /var/log/auth.log และเห็นข้อผิดพลาดเมื่ออ่านคีย์ กุญแจยาวประมาณสองบรรทัดแทนที่จะเป็นสี่บรรทัด มีการรับคืนรถพิเศษฝังอยู่ในคีย์
เมื่อใช้เอดิเตอร์ vi ให้ใช้ shift-j เพื่อเข้าร่วมบรรทัดและลบพื้นที่พิเศษในสตริงคีย์
sshd_config
ผมสามการตรวจสอบสิทธิ์และ กระแทกหัวของฉันกับผนังเป็นเวลาครึ่งชั่วโมง นี่เป็นความผิดพลาดของฉัน! อย่างใดฉันได้กลายเป็นนิสัยของการสิ้นสุดไฟล์ทั้งหมดที่ฉันแก้ไขด้วย linebreak พิเศษ แม้ว่าจะมีหนึ่งคีย์และการรับคืนในตอนท้ายแต่ก็เพียงพอที่จะทำให้การอนุมัติเสียหาย
หากคุณมีไพรเวตคีย์หลายตัวให้ใช้สวิตช์ -v บนคำสั่งการเชื่อมต่อ ssh ของคุณเพื่อตรวจสอบเพื่อดูว่าคีย์หลักอื่นของคุณเป็น uesd เพื่อพยายามเชื่อมต่อหรือไม่ หากไม่ใช่ให้บอกไคลเอ็นต์ ssh เพื่อใช้กับคำสั่งต่อไปนี้:
ssh-add path/to/private/key
คุณยังสามารถเพิ่มกุญแจของคุณไปยังตัวแทน SSH:
u@pc:~$ ssh-agent bash
u@pc:~$ ssh-add ~/.ssh/id_rsa
Enter passphrase for /home/u/.ssh/id_rsa: # ENTER YOUR PASSWORD
Identity added: /home/u/.ssh/id_rsa (/home/u/.ssh/id_rsa)
อาจเป็นได้ว่าคุณกำลังโทร
sudo git clone gituser@domain:repo.git
ที่ผู้ใช้ราก SSH คีย์ยังไม่ได้รับการเพิ่มauthorized_keys
ของgituser
บนเครื่องที่ใช้ Ubuntu 18.04.02 LTS คำแนะนำในการตั้งค่าการอนุญาต~/.ssh
ถึง 600 ไม่ได้ผลสำหรับฉัน ฉันต้องตั้งค่าการอนุญาตเป็น 700 จากนั้นก็ทำงานได้ดี
ฉันมีสิทธิ์การใช้งานไฟล์. ssh / directory และ authorized_keys ถูกต้อง แต่พบปัญหา "การขอรหัสผ่าน" เนื่องจากปัญหาอื่นที่เกิดขึ้นด้วยตนเอง
ฉันใช้ไฮไลต์ที่อิงกับเมาส์และคัดลอก / วางเพื่อคัดลอกข้อมูลจาก id_rsa.pub ในพื้นที่ของฉันลงในไฟล์ authorized_keys บนเซิร์ฟเวอร์ การคัดลอกข้อมูลนี้ประสบความสำเร็จในบรรทัดเดียว แต่มีช่องว่างที่ไม่ต้องการที่จุดสิ้นสุดของบรรทัดที่มองเห็นซึ่งมองเห็นได้ยากเมื่อแก้ไขไฟล์ด้วย vi เมื่อฉันลบช่องว่างที่ไม่ต้องการเหล่านี้ฉันก็สามารถทำได้ดี
ดังนั้นสิ่งที่เกิดขึ้นสำหรับฉันคือฉันมี VM 2 เครื่องเพื่อเข้าถึงจากเครื่องท้องถิ่นของฉัน (2 คีย์ id_rsa.pub และ id_rsa2.pub) ฉันรู้ว่าการเชื่อมต่อ ssh ของฉันใช้ id_rsa.pub เป็นค่าเริ่มต้นสำหรับการเชื่อมต่อ ssh user@xx.xx.xx.xx ใด ๆ ฉันแก้ไขปัญหาของฉันโดยเพิ่มไฟล์กำหนดค่าและระบุข้อมูลประจำตัวที่จะใช้สำหรับโฮสต์ทุกตัวดังนี้:
vi ~/.ssh/config
Add both hostnames and their identity file as follows:
Host server1.nixcraft.com
IdentityFile ~/Users/.ssh/id_rsa1
Host server2.nixcraft.com
IdentityFile /backup/home/aymen/.ssh/id_rsa2