Um contêiner Linux pode usar um arquivo allowed_keys fora do meu diretório pessoal, mas contêineres efêmeros baseados nele não podem. Por quê?

10

No Ubuntu 12.10, criei um LXC do tipo 'ubuntu' usando o utilitário lxc-create. Em seguida, crio contêineres efêmeros com base nesse contêiner usando o utilitário lxc-start-ephemeral, e preciso conectar-me aos que usam ssh sem senha. No entanto, preciso manter as pastas / home / ubuntu intactas, para não poder colocar o arquivo .ssh / allowed_keys usual lá.

A seção 'diretório inicial criptografado' aqui me diz como mover as teclas_estabelecidas do diretório inicial. Depois de seguir essas instruções de dentro do contêiner de base, posso ssh no contêiner de base sem fornecer uma senha.

No entanto, quando inicio um contêiner efêmero a partir do contêiner base, não consigo fazer o ssh sem uma senha. (Desconcertante, ssh sem senha para o recipiente efêmera faz trabalho quando authorized_keys está em seu lugar habitual no /home/ubuntu/.ssh.) Como posso corrigir isso?

Aqui está o que o ssh -v disse, começando quando aceita a chave do 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

Aqui estão as partes relevantes de /var/log/auth.log no contêiner 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)

Fiz esse teste em uma microinstância nova da AWS, com base na AMI padrão do Ubuntu 12.10, e posso fornecer instruções detalhadas sobre como reproduzi-lo, se isso ajudar.

Anand
fonte
Atualização: Eu pensei que o problema poderia ser o uso estranho dos sistemas de arquivos lxc-start-efhemeral, então fiz algumas alterações. Primeiro parei OVERLAY_DIR e EPHEMERAL_BIND_DIR de serem tmpfs, agora são apenas diretórios. Isso não consertou. Em seguida, mudei o sistema de arquivos raiz do contêiner efêmero de um overlayfs para uma montagem de ligação simples. Isso fez corrigi-lo. Infelizmente isso não resolve o meu problema, porque preciso dos overlayfs.
precisa

Respostas:

1

Esta é uma pergunta antiga, mas ainda aparece no google ...

Authentication refused: bad ownership or modes for directory /

é causado pelo fato de o serviço sshd ter requisitos rígidos de permissão para o diretório em que as chaves_computadas são encontradas, não sei como você conseguiu fazer com que o diretório raiz (/) presumivelmente tenha algo a ver com a maneira como você configura os contêineres.

Se você não pode alterar as permissões de /, o que parece provável neste caso, você pode definir

StrictModes no

no sshd_config.
Desde que você não tenha vários usuários acessando o servidor, isso terá pouco impacto na segurança.

teknopaul
fonte