คอนเทนเนอร์ Linux สามารถใช้ไฟล์ authorized_keys นอกโฮมไดเร็กตอรี่ของฉันได้, แต่คอนเทนเนอร์แบบชั่วคราวไม่สามารถใช้งานได้ ทำไม?


10

ใน Ubuntu 12.10 ฉันได้สร้าง LXC ประเภท 'ubuntu' โดยใช้ lxc-create utility จากนั้นฉันสร้างคอนเทนเนอร์ชั่วคราวตามคอนเทนเนอร์นี้โดยใช้ยูทิลิตี lxc-start-ephemeral และฉันจำเป็นต้องเชื่อมต่อกับภาชนะที่ใช้รหัสผ่านที่ไม่ใช้ ssh อย่างไรก็ตามฉันต้องเก็บโฟลเดอร์ / home / ubuntu เก่า ๆ ไว้ดังนั้นฉันไม่สามารถใส่ไฟล์. ssh / authorized_keys ปกติไว้ในนั้นได้

ส่วน 'โฮมไดเร็กตอรี่ที่เข้ารหัส' ที่นี่จะบอกฉันถึงวิธีย้ายที่ได้รับอนุญาตจากคีย์โฮม หลังจากที่ฉันทำตามคำแนะนำเหล่านั้นจากภายในคอนเทนเนอร์พื้นฐานฉันสามารถ ssh ลงในคอนเทนเนอร์พื้นฐานโดยไม่ต้องให้รหัสผ่าน

อย่างไรก็ตามเมื่อฉันเปิดใช้คอนเทนเนอร์ชั่วคราวจากคอนเทนเนอร์พื้นฐานฉันไม่สามารถ ssh โดยไม่ต้องใช้รหัสผ่าน (Confusingly, ssh แบบไม่ใช้รหัสผ่านไปยังคอนเทนเนอร์ชั่วคราวจะทำงานได้เมื่อ authorized_keys อยู่ในตำแหน่งปกติใน /home/ubuntu/.ssh) ฉันจะแก้ไขได้อย่างไร

นี่คือสิ่งที่ ssh -v พูดเริ่มตั้งแต่เมื่อมันรับคีย์โฮสต์:

debug1: ssh_ecdsa_verify: signature correct
debug1: SSH2_MSG_NEWKEYS sent
debug1: expecting SSH2_MSG_NEWKEYS
debug1: SSH2_MSG_NEWKEYS received
debug1: Roaming not allowed by server
debug1: SSH2_MSG_SERVICE_REQUEST sent
debug1: SSH2_MSG_SERVICE_ACCEPT received
debug1: Authentications that can continue: publickey,password
debug1: Next authentication method: publickey
debug1: Offering RSA public key: /home/ubuntu/.ssh/id_rsa
debug1: Authentications that can continue: publickey,password
debug1: Trying private key: /home/ubuntu/.ssh/id_dsa
debug1: Trying private key: /home/ubuntu/.ssh/id_ecdsa
debug1: Next authentication method: password

นี่คือส่วนที่เกี่ยวข้องของ /var/log/auth.log บนคอนเทนเนอร์ชั่วคราว:

Apr 11 00:06:52 test-temp-SNeWevO sshd[306]: Authentication refused: bad ownership or modes for directory /
Apr 11 00:06:54 test-temp-SNeWevO sshd[306]: Accepted password for ubuntu from 10.0.3.1 port 59677 ssh2
Apr 11 00:06:54 test-temp-SNeWevO sshd[306]: pam_env(sshd:setcred): Unable to open env file: /etc/default/locale: No such file or directory
Apr 11 00:06:54 test-temp-SNeWevO sshd[306]: pam_unix(sshd:session): session opened for user ubuntu by (uid=0)

ฉันทำการทดสอบนี้กับอินสแตนซ์ขนาดเล็ก AWS ใหม่โดยใช้มาตรฐาน Ubuntu 12.10 AMI และสามารถให้คำแนะนำโดยละเอียดเกี่ยวกับวิธีการทำซ้ำได้หากช่วยได้


ปรับปรุง: ฉันคิดว่าปัญหาอาจเป็นระบบไฟล์แปลก ๆ ใช้ lxc-start-ephemeral ดังนั้นฉันจึงทำการเปลี่ยนแปลงบางอย่าง ฉันหยุด OVERLAY_DIR และ EPHEMERAL_BIND_DIR ก่อนจากการเป็น tmpfs ตอนนี้พวกเขาเป็นเพียงไดเรกทอรี ไม่ได้แก้ไข จากนั้นฉันเปลี่ยนระบบไฟล์รูทของคอนเทนเนอร์แบบชั่วคราวจากโอเวอร์เลย์ไปเป็นแบบเมาท์แบบง่าย ที่ไม่สามารถแก้ไขได้ น่าเสียดายที่นั่นไม่ได้แก้ปัญหาของฉันเพราะฉันต้องการโอเวอร์เลย์
อานันท์

คำตอบ:


1

นี่เป็นคำถามเก่า แต่ก็ยังเกิดขึ้นใน google ...

Authentication refused: bad ownership or modes for directory /

มีสาเหตุมาจากบริการ sshd ที่มีข้อกำหนดการอนุญาตที่เข้มงวดสำหรับไดเรกทอรีที่พบ authorized_keys ไม่แน่ใจว่าคุณจัดการวิธีการที่จะทำให้ไดเรกทอรีราก (/) สันนิษฐานสิ่งที่จะทำอย่างไรกับวิธีการกำหนดค่าภาชนะของคุณ

หากคุณไม่สามารถเปลี่ยนการอนุญาตของ / ซึ่งน่าจะเกิดขึ้นในกรณีนี้คุณสามารถตั้งค่าได้

StrictModes no

ใน sshd_config
หากคุณไม่มีผู้ใช้หลายรายที่เข้าถึงเซิร์ฟเวอร์การทำเช่นนี้มีผลกระทบต่อความปลอดภัยเล็กน้อย

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