Un conteneur Linux peut utiliser un fichier authorized_keys en dehors de mon répertoire personnel, mais les conteneurs éphémères basés sur celui-ci ne le peuvent pas. Pourquoi?

10

Dans Ubuntu 12.10, j'ai créé un LXC de type «ubuntu» à l'aide de l'utilitaire lxc-create. Je crée ensuite des conteneurs éphémères basés sur ce conteneur à l'aide de l'utilitaire lxc-start-ephemeral, et je dois me connecter à ceux qui utilisent ssh sans mot de passe. Cependant, je dois garder leurs dossiers / home / ubuntu intacts, donc je ne peux pas y mettre le fichier .ssh / authorized_keys habituel.

La section «répertoire personnel chiffré» m'indique ici comment déplacer les clés autorisées hors du répertoire personnel. Après avoir suivi ces instructions depuis l'intérieur du conteneur de base, je peux accéder au conteneur de base sans donner de mot de passe.

Cependant, lorsque je lance un conteneur éphémère à partir du conteneur de base, je ne peux pas entrer sans mot de passe. (Embrouillant, ssh passwordless au conteneur éphémère ne travail quand authorized_keys est dans sa place habituelle /home/ubuntu/.ssh.) Comment puis - je résoudre ce problème?

Voici ce que ssh -v a dit, à partir du moment où il accepte la clé d'hôte:

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

Voici les parties pertinentes de /var/log/auth.log sur le conteneur éphémère:

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)

J'ai fait ce test sur une nouvelle micro-instance AWS basée sur la norme Ubuntu 12.10 AMI, et je peux fournir des instructions détaillées sur la façon de la reproduire si cela aide.

Anand
la source
Mise à jour: je pensais que le problème pourrait être les étranges systèmes de fichiers utilisés par lxc-start-ephemeral, j'ai donc apporté quelques modifications. J'ai d'abord arrêté OVERLAY_DIR et EPHEMERAL_BIND_DIR d'être des tmpfs, maintenant ce ne sont que des répertoires. Cela ne l'a pas corrigé. J'ai ensuite changé le système de fichiers racine du conteneur éphémère d'un overlayfs en un montage de liaison simple. Cela l' a réparé. Malheureusement, cela ne résout pas mon problème, car j'ai besoin des superpositions.
Anand

Réponses:

1

C'est une vieille question mais elle revient toujours dans google ...

Authentication refused: bad ownership or modes for directory /

est dû au fait que le service sshd a des exigences strictes en matière d'autorisations pour le répertoire dans lequel les clés autorisées sont trouvées, vous ne savez pas comment vous avez réussi à faire en sorte que le répertoire racine (/) soit probablement lié à la façon dont vous configurez les conteneurs.

Si vous ne pouvez pas modifier les autorisations de /, ce qui semble probable dans ce cas, vous pouvez définir

StrictModes no

dans sshd_config.
Si vous n'avez pas plusieurs utilisateurs accédant au serveur, cela a peu d'impact sur la sécurité.

teknopaul
la source