Szukałem metody ograniczenia dostępu do prywatnego repozytorium Debiana i możliwości uwierzytelnienia się w nim w sposób nieinteraktywny (tj. Przy użyciu skryptu)
Najbardziej przydatny artykuł, jaki znalazłem, jeśli faktycznie pochodzi ze strony administracyjnej Debiana, ale bezpieczna metoda używa ssh i kluczy publicznych / prywatnych. Działa świetnie, ale klucz publiczny każdego hosta musi znajdować się w pliku zdalnego kluczy autoryzowanych, aby pomyślnie się uwierzytelnić. Nie mówi nic o podaniu hasła do ssh: //, ale przypuszczam, że powinno to być możliwe.
Czy próbowałeś innych alternatyw (np. Ftps)?
Z góry dziękuję
Odpowiedzi:
Jeśli zawsze uruchamiasz
apt-get
ręcznie na swoich serwerach (bez automatycznychapt-get
poleceń uruchamianych przez crons), możesz rozważyć użycie przekazywania agentów ssh . Pozwala to uniknąć konieczności zarządzania jednym kluczem publicznym / prywatnym na każdym zarządzanym serwerze i jest to prawdopodobnie bezpieczniejsze niż pozostawienie kluczy prywatnych na każdym serwerze.Konfiguracja początkowa - połącz się z serwerami, którymi chcesz zarządzać, i dodaj coś takiego do
/etc/apt/sources.list
tego (w tym przykładzie założono, że chcesz połączyć swoje serwery zmanager
kontem):utwórz parę kluczy prywatnych / publicznych na własnym komputerze,
johndoe
na przykład za pomocą swojego loginu (pod warunkiem, że twój komputer działa na debian: jeśli nie, możesz to zrobić z serwera debian dedykowanego do zarządzania):skopiuj swój klucz publiczny na serwer repozytorium w
/home/manager/.ssh/authorized_keys
:Raz na sesję zarządzania
uruchom agenta ssh na swoim komputerze, wpisując:
dodaj swój klucz do agenta (będzie to wymagało twojego hasła):
Zarządzanie serwerem
połącz się z serwerem, którym chcesz zarządzać
ssh -A
(-A
aktywuje przekazywanie agentów):przełącz się na root (jeśli chcesz użyć
sudo
, musisz skonfigurować,/etc/sudoers
bo inaczejsudo
przerwie przekazywanie agentów, przeczytaj to ):powinieneś być teraz w stanie połączyć się z kontem menedżera repozytorium za pomocą ssh bez ponownego wpisywania hasła, dzięki przekazaniu agenta. Dlatego
apt-get
powinien działać dobrze:Kończenie sesji zarządzania
Po zakończeniu zarządzania serwerami usuń klucze z agenta:
Zalety
ssh-ask
, aby zaakceptować / odrzucić każdą próbę użycia klucza.źródło
Jednym ze sposobów jest umożliwienie dostępu do repozytorium określonemu zestawowi adresów IP. Działa to bardzo dobrze w przypadku sieci LAN i VPN.
Prosty i wydajny.
źródło
Rozwiązanie ssh + klucze publiczne / prywatne nie jest takie złe:
ssh-keygen
, a następniessh-copy-id [email protected]
edytuj
/etc/apt/sources.list
i dodaj coś takiego:To prawda, że wymaga umieszczenia klucza publicznego każdego serwera w
~/.ssh/authorized_keys
pliku na serwerze, ale nie jest to takie skomplikowane (patrz wyżej) i daje kontrolę nad tym, które serwery są dozwolone lub nie w danym momencie (możesz usunąć klucz w w dowolnym momencieauthorized_keys
).źródło
Możesz skonfigurować dostęp https do swojego repozytorium, zabezpieczony loginem / hasłem (podstawowe uwierzytelnianie). Problem polega na tym, że musisz wprowadzić loginu / hasło w postaci jawnego tekstu
/etc/apt/sources.list
(uwaga: istnieje łatka, która pozwala na wprowadzenie loginu / hasła/root/.netrc
).źródło
Link w twoim pytaniu pokazuje wiele metod. Chcesz numer 2, https + podstawowe uwierzytelnianie.
źródło