Контейнер Linux может использовать файл author_keys вне моего домашнего каталога, но временные контейнеры на его основе не могут. Почему?

10

В Ubuntu 12.10 я создал LXC типа 'ubuntu' с помощью утилиты lxc-create. Затем я создаю временные контейнеры на основе этого контейнера с помощью утилиты lxc-start-ephemeral, и мне нужно подключиться к тем, кто использует ssh без пароля. Однако мне нужно сохранить их папки / home / ubuntu нетронутыми, поэтому я не могу поместить туда обычный файл .ssh / authorized_keys.

В разделе «Зашифрованный домашний каталог» здесь рассказывается, как переместить author_keys из домашнего каталога. После того, как я следую этим инструкциям внутри базового контейнера, я могу войти в базовый контейнер без указания пароля.

Однако, когда я запускаю эфемерный контейнер из базового контейнера, я не могу войти без пароля. (Смутно, 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, теперь они просто каталоги. Это не исправило это. Затем я изменил корневую файловую систему эфемерного контейнера с overlayfs на простое подключение. Это все исправило. К сожалению, это не решает мою проблему, потому что мне нужны оверлеи.
Ананд

Ответы:

1

Это старый вопрос, но он все еще возникает в Google ...

Authentication refused: bad ownership or modes for directory /

вызвано тем, что служба sshd имеет строгие требования к разрешениям для каталога, в котором находится author_keys, не зная, как вам удалось сделать этот корневой каталог (/), вероятно, как-то похожим на способ конфигурирования контейнеров.

Если вы не можете изменить права доступа к /, что кажется вероятным в этом случае, вы можете установить

StrictModes no

в sshd_config.
Если у вас нет нескольких пользователей, обращающихся к серверу, это мало повлияет на безопасность.

teknopaul
источник