Un contenedor de Linux puede usar un archivo de claves autorizadas fuera de mi directorio de inicio, pero los contenedores efímeros basados ​​en él no pueden. ¿Por qué?

10

En Ubuntu 12.10, he creado un LXC de tipo 'ubuntu' usando la utilidad lxc-create. Luego creo contenedores efímeros basados ​​en este contenedor usando la utilidad lxc-start-efhemeral, y necesito conectarme a aquellos que usan ssh sin contraseña. Sin embargo, necesito mantener sus carpetas / home / ubuntu prístinas, por lo que no puedo poner el archivo habitual .ssh / certified_keys allí.

La sección 'directorio de inicio encriptado' aquí me dice cómo sacar autorizadas_claves del directorio de inicio. Después de seguir esas instrucciones desde el interior del contenedor base, puedo ingresar en el contenedor base sin dar una contraseña.

Sin embargo, cuando inicio un contenedor efímero desde el contenedor base, no puedo ingresar sin una contraseña. (Confusamente, ssh sin contraseña al contenedor efímera hace el trabajo cuando es authorized_keys en su lugar habitual en /home/ubuntu/.ssh.) ¿Cómo puedo solucionar este problema?

Esto es lo que dijo ssh -v, comenzando desde cuando acepta la clave de host:

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

Estas son las partes relevantes de /var/log/auth.log en el contenedor efímero:

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)

Hice esta prueba en una micro instancia de AWS nueva basada en el estándar Ubuntu 12.10 AMI, y puedo proporcionar instrucciones detalladas sobre cómo reproducirla si eso ayuda.

Anand
fuente
Actualización: pensé que el problema podría ser el extraño uso de los sistemas de archivos lxc-start-efímero, así que hice algunos cambios. Primero dejé de OVERLAY_DIR y EPHEMERAL_BIND_DIR de ser tmpfs, ahora son solo directorios. Eso no lo solucionó. Luego cambié el sistema de archivos raíz del contenedor efímero de overlayfs a un simple montaje de enlace. Eso lo solucionó. Desafortunadamente, eso no resuelve mi problema, porque necesito los overlayfs.
Anand

Respuestas:

1

Esta es una vieja pregunta pero aún aparece en google ...

Authentication refused: bad ownership or modes for directory /

es causado por el servicio sshd que tiene requisitos de permisos estrictos para el directorio en el que se encuentra autorizado_claves, no estoy seguro de cómo logró hacer que el directorio raíz (/) presumiblemente tenga algo que ver con la forma en que configura los contenedores.

Si no puede cambiar los permisos de /, lo que parece probable en este caso, puede establecer

StrictModes no

en sshd_config.
Siempre que no tenga múltiples usuarios accediendo al servidor, esto tiene poco impacto en la seguridad.

teknopaul
fuente