Kontener Linuksa może korzystać z pliku autoryzowanego_klucza poza moim katalogiem domowym, ale pojemniki efemeryczne oparte na nim nie mogą. Dlaczego?

10

W Ubuntu 12.10 stworzyłem LXC typu „ubuntu” za pomocą narzędzia lxc-create. Następnie tworzę efemeryczne kontenery na podstawie tego kontenera za pomocą narzędzia lxc-start-efemeryczne i muszę się połączyć z tymi, które używają ssh bez hasła. Muszę jednak zachować czyste foldery / home / ubuntu, więc nie mogę tam umieścić zwykłego pliku .ssh / author_keys.

Sekcja „zaszyfrowany katalog domowy” tutaj mówi mi, jak przenieść klucze autoryzowane z katalogu domowego. Po wykonaniu tych instrukcji z wnętrza kontenera podstawowego mogę ssh do kontenera podstawowego bez podawania hasła.

Jednak gdy uruchamiam efemeryczny pojemnik z kontenera podstawowego, nie mogę ssh wejść bez hasła. (Confusingly, bez podawania haseł ssh do efemerycznego pojemnika czyni pracę podczas authorized_keys jest w swoim zwykłym miejscu w /home/ubuntu/.ssh.) Jak mogę rozwiązać ten problem?

Oto, co powiedział ssh -v, zaczynając od momentu przyjęcia klucza hosta:

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

Oto odpowiednie części pliku /var/log/auth.log w efemerycznym kontenerze:

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)

Zrobiłem ten test na świeżej mikro instancji AWS opartej na standardowym Ubuntu 12.10 AMI i mogę dostarczyć szczegółowych instrukcji, jak go odtworzyć, jeśli to pomoże.

Anand
źródło
Aktualizacja: Myślałem, że problemem mogą być dziwne zastosowania systemów plików lxc-start-efemeryczne, więc wprowadziłem pewne zmiany. Najpierw powstrzymałem OVERLAY_DIR i EPHEMERAL_BIND_DIR od bycia tmpfs, teraz są to tylko katalogi. To nie naprawiło tego. Następnie zmieniłem główny system plików efemerycznego kontenera z nakładki na proste podłączenie wiązania. Że zrobił to naprawić. Niestety to nie rozwiązuje mojego problemu, ponieważ potrzebuję nakładek.
Anand

Odpowiedzi:

1

To stare pytanie, ale wciąż pojawia się w Google ...

Authentication refused: bad ownership or modes for directory /

jest spowodowany tym, że usługa sshd ma ścisłe wymagania dotyczące uprawnień do katalogu, w którym znaleziono klucze autoryzowane, nie jestem pewien, jak udało się sprawić, aby katalog główny (/) prawdopodobnie miał coś wspólnego ze sposobem konfigurowania kontenerów.

Jeśli nie możesz zmienić uprawnień /, co wydaje się prawdopodobne w tym przypadku, możesz ustawić

StrictModes no

w sshd_config.
Pod warunkiem, że nie masz wielu użytkowników uzyskujących dostęp do serwera, wykonanie tej czynności ma niewielki wpływ na bezpieczeństwo.

teknopaul
źródło