Mam instancję aplikacji działającej w chmurze na instancji Amazon EC2 i muszę połączyć ją z mojego lokalnego Ubuntu. Działa dobrze na jednym z lokalnych Ubuntu, a także na laptopie. Otrzymałem komunikat „Odmowa zezwolenia (publickey)” podczas próby uzyskania dostępu do SSH do EC2 na innym lokalnym Ubuntu. To dla mnie takie dziwne.
Myślę o problemach z ustawieniami zabezpieczeń w Amazon EC2, który ma ograniczony dostęp adresów IP do jednej instancji lub certyfikatu może wymagać regeneracji.
Czy ktoś zna rozwiązanie?
linux
ssh
amazon-ec2
Vorleak Chy
źródło
źródło
Odpowiedzi:
Pierwszą rzeczą do zrobienia w tej sytuacji jest skorzystanie z
-v
opcjissh
, aby zobaczyć, jakie typy uwierzytelnienia są wypróbowane i jaki jest wynik. Czy to pomaga oświecić sytuację?W aktualizacji swojego pytania wspominasz „na innym lokalnym Ubuntu”. Czy skopiowałeś klucz prywatny ssh na inny komputer?
źródło
ssh -i <keyfile> bitname@<ec2-address>
. Niestety ta-v
opcja nie pomogła mi znaleźć tego, ale nadal bardzo przydatne jest sprawdzenie!/var/log/auth.log
, czasem zobaczysz następujące komunikaty:Authentication refused: bad ownership or modes for file /var/lib/jenkins/.ssh/authorized_keys
lub coś innegoJak nie zostało to wyraźnie wspomniane, sshd jest domyślnie bardzo restrykcyjne w zakresie uprawnień do
authorized_keys
plików. Tak więc, jeśliauthorized_keys
jest zapisywalny dla każdego innego niż użytkownik lub może być zapisany przez kogoś innego niż użytkownik, odmówi uwierzytelnienia (chyba że sshd jest skonfigurowane zStrictModes no
)Rozumiem przez „można nadawać się do zapisu” jest to, że jeśli którykolwiek z katalogów nadrzędnych jest zapisywalny dla kogokolwiek innego niż użytkownik, użytkownicy uprawnieni do modyfikowania tych katalogów mogą zacząć modyfikować uprawnienia w taki sposób, aby mogli modyfikować / zastępować klucze autoryzowane.
Ponadto, jeśli
/home/username/.ssh
katalog nie jest własnością użytkownika, a zatem użytkownik nie ma uprawnień do odczytu klucza, możesz napotkać problemy:Pamiętaj, że Jane nie jest właścicielem
.ssh
pliku. Napraw to przezTego rodzaju problemy z uprawnieniami systemu plików nie pojawią się
ssh -v
, a nawet nie pojawią się w logach sshd (!), Dopóki nie ustawisz poziomu dziennika na DEBUG./etc/ssh/sshd_config
. ChceszLogLevel DEBUG
gdzieś tam czytać . Załaduj ponownie serwer SSH za pomocą mechanizmu dostarczonego przez dystrybucję. (service sshd reload
w RHEL / CentOS / Scientific.) Pełen wdzięku przeładowanie nie spowoduje porzucenia istniejących sesji./var/log/auth.log
na dystrybucjach opartych na Debianie;/var/log/secure
na RHEL / CentOS / Scientific.)Znacznie łatwiej jest ustalić, co się dzieje z wyjściem debugowania, które obejmuje błędy uprawnień systemu plików. Pamiętaj, aby po zakończeniu przywrócić zmianę
/etc/ssh/sshd_config
!źródło
Authentication refused: bad ownership or modes for directory
Otrzymałem ten błąd, ponieważ zapomniałem dodać
-l
opcję. Moja lokalna nazwa użytkownika nie była taka sama jak w systemie zdalnym.To nie odpowiada na twoje pytanie, ale przybyłem tutaj, szukając odpowiedzi na mój problem.
źródło
ssh host -l user
jest taki sam jakssh user@host
, prawda?Otrzymałem ten komunikat w nowej instancji opartej na Ubuntu AMI. Używałem opcji -i, aby dostarczyć PEM, ale nadal wyświetlało „Odmowa zezwolenia (publickey)”.
Mój problem polegał na tym, że nie używałem właściwego użytkownika. Uruchamiając ssh z Ubuntu @ ec2 ... działało to normalnie.
źródło
sudo
, dlatego nie działało.Jest coś łatwiejszego do odczytania niż
ssh -v
(moim zdaniem oczywiście)tail -f /var/log/auth.log
. To powinno być uruchomione na serwerze, z którym próbujesz się połączyć, podczas próby połączenia. Wyświetli błędy w postaci zwykłego tekstu.Pomogło mi to rozwiązać problem:
źródło
tail -f /var/log/secure
Sprawdź plik / etc / ssh / sshd_config . Tam znajdź wiersz, który mówi
Ta linia musi zostać zmodyfikowana, aby powiedzieć „tak” zamiast „nie”. Następnie uruchom ponownie serwer sshd.
źródło
/etc/ssh/sshd_config
- jeśli nie możemy nawet dostać się na serwer?sudo service sshd reload
Być może nie dotyczy aktualnego plakatu, ale może pomóc innym, którzy znajdą to podczas wyszukiwania odpowiedzi na podobne sytuacje. Zamiast zezwalać Amazonowi na generowanie pary kluczy ssh, zalecamy przesłanie własnego, standardowego, domyślnego publicznego klucza ssh do Amazon i określenie go podczas uruchamiania instancji EC2.
Pozwala to upuścić składnię typu „-i” w ssh, użyć rsync ze standardowymi opcjami, a także pozwala używać tego samego klucza ssh we wszystkich regionach EC2.
Napisałem artykuł o tym procesie tutaj:
źródło
O dziwo, moim problemem okazało się to, że serwer został zrestartowany i wydano mu nową nazwę DNS. Użyłem starej nazwy DNS. Wiem, że to brzmi głupio, ale zrozumienie tego zajęło mi trochę czasu.
źródło
Jeśli próbujesz połączyć się z telefonem CyanogenMod z uruchomionym Dropbear, powinieneś uruchomić następujące linie, aby upewnić się, że wszystko ma odpowiednie uprawnienia:
lub
i
To naprawiło to dla mnie, w przeciwnym razie nic nie może się połączyć.
źródło
Jeśli używasz CentOS 5, może chcesz ustawić
StrictModes no
w/etc/ssh/sshd_config
. Udostępniam katalog / home za pomocą NIS / NFS i poprawnie ustawiłem wszystkie uprawnienia, ale zawsze monitowało mnie o hasło. Po ustawieniuStrictModes no
problem zniknął!źródło
Odpowiedź Grega wyjaśnia, jak lepiej rozwiązywać problemy, ale faktyczny problem polega na tym, że po jednej stronie transakcji (kliencie) jest ustawiony klucz ssh, który próbuje uwierzytelnić klucz publiczny, a nie uwierzytelnienie oparte na haśle. Ponieważ nie masz odpowiedniego klucza publicznego w instancji EC2, to nie zadziała.
źródło
Miałem ten sam problem i po wypróbowaniu mnóstwa rozwiązań, które nie działały, otworzyłem port SSH w zaporze routera (panel sterowania zapory routera to bałagan, więc trudno powiedzieć, co się dzieje). W każdym razie to naprawiło :)
Super cholernie denerwujące, że błąd, który otrzymujesz, to odmowa zezwolenia, co sugeruje, że nawiązano połączenie, grr.
źródło
Miałem ten sam problem, mimo że podobno wykonałem wszystkie kroki, w tym
Jednak zacząłem swoją instancję w regionie us-west-1. Dlatego powyższe polecenie powinno również to określić.
Po tym poleceniu mogłem ssh do instancji. Spędziłem trochę czasu, zanim zdałem sobie sprawę z problemu i mam nadzieję, że ten post pomoże innym.
źródło
Jest to rzadki przypadek, ale jeśli masz włączony selinux i używasz nfs dla katalogu z uprawnionymi kluczami (np. Współdzielone katalogi domowe), musisz albo wyłączyć selinux (niezalecane ze względów bezpieczeństwa, ale możesz go tymczasowo wyłączyć aby sprawdzić, czy to powoduje problem) lub pozwól, aby selinux używał katalogów domowych nfs. Nie jestem pewien szczegółów, ale to zadziałało dla mnie
setsebool -P use_nfs_home_dirs 1
źródło
Właśnie ten problem wystąpił po nieumyślnym dodaniu uprawnień do zapisu grupowego do katalogu domowego użytkowników.
Odkryłem, że to była przyczyna, uruchamiając
tail -f /var/log/secure
się na maszynie i widząc błądAuthentication refused: bad ownership or modes for directory /home/<username>
.źródło