Un contenitore Linux può usare un file authorized_keys fuori dalla mia directory home, ma i contenitori effimeri basati su di esso non possono. Perché?


10

In Ubuntu 12.10, ho creato un LXC di tipo 'ubuntu' usando l'utility lxc-create. Quindi creo contenitori effimeri basati su questo contenitore usando l'utilità lxc-start-effimera e devo collegarmi a quelli che usano ssh senza password. Tuttavia, devo mantenere le loro cartelle / home / ubuntu intatte, quindi non posso inserire il solito file .ssh / authorized_keys.

La sezione "home directory crittografata" qui mi spiega come spostare le chiavi autorizzate fuori dalla home directory. Dopo aver seguito queste istruzioni dall'interno del contenitore di base, posso accedere a ssh nel contenitore di base senza fornire una password.

Tuttavia, quando lancio un contenitore effimero dal contenitore di base, non posso accedere senza una password. (Confusamente, ssh senza password al contenitore effimera fa lavoro quando authorized_keys è al suo solito posto in /home/ubuntu/.ssh.) Come posso risolvere questo problema?

Ecco cosa ha detto ssh -v, a partire da quando accetta la chiave 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

Ecco le parti rilevanti di /var/log/auth.log sul contenitore effimero:

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)

Ho fatto questo test su una nuova microistanza AWS basata sullo standard Ubuntu 12.10 AMI e posso fornire istruzioni dettagliate su come riprodurlo se ciò aiuta.


Aggiornamento: ho pensato che il problema potesse essere lo strano filesystem che usa lxc-start-effimero, quindi ho apportato alcune modifiche. Ho prima impedito a OVERLAY_DIR e EPHEMERAL_BIND_DIR di essere tmpfs, ora sono solo directory. Non è stato risolto. Ho quindi cambiato il filesystem di root del contenitore effimero da un overlayfs a un semplice mount di bind. Questo l' ha risolto. Sfortunatamente questo non risolve il mio problema, perché ho bisogno degli overlayfs.
Anand,

Risposte:


1

Questa è una vecchia domanda ma si presenta ancora in Google ...

Authentication refused: bad ownership or modes for directory /

è causato dal servizio sshd che ha severi requisiti di autorizzazione per la directory in cui si trova authorized_keys, non sono sicuro di come sei riuscito a fare che la directory root (/) presumibilmente abbia qualcosa a che fare con il modo in cui configuri i contenitori.

Se non è possibile modificare le autorizzazioni di /, il che sembra probabile in questo caso, è possibile impostare

StrictModes no

in sshd_config.
A condizione che non si disponga di più utenti che accedono al server, ciò ha un impatto minimo sulla sicurezza.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.