To jest moja ostatnia deska ratunku. Próbowałem rozwiązać problem tutaj od wielu godzin.
Oto oferta: skopiowałem mój klucz prywatny z komputera nr 1 na komputer nr 2. Komputer nr 1 jest w stanie połączyć się za pośrednictwem ssh z serwerem za pomocą mojego klucza publicznego, ale komputer nr 2 daje następujące dane wyjściowe, gdy próbuje się połączyć z serwerem:
$ ssh -vvv -i /home/kevin/.ssh/kev_rsa [email protected] -p 22312
OpenSSH_5.3p1 Debian-3ubuntu6, OpenSSL 0.9.8k 25 Mar 2009
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Applying options for *
debug2: ssh_connect: needpriv 0
debug1: Connecting to 192.168.1.244 [192.168.1.244] port 22312.
debug1: Connection established.
debug3: Not a RSA1 key file /home/kevin/.ssh/kev_rsa.
debug2: key_type_from_name: unknown key type '-----BEGIN'
debug3: key_read: missing keytype
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
debug3: key_read: missing whitespace
...
Permission denied (publickey).
Jest oczywiście więcej danych wyjściowych do debugowania, które pominąłem i mogę dostarczyć na żądanie. Jestem jednak przekonany, że nie podoba mi się mój plik klucza prywatnego.
Podejrzewałem również, że ma to związek z tym, jak skopiowałem go z maszyny nr 1 na maszynę nr 2. Skopiowałem / wkleiłem tekst z klucza prywatnego na dysk flash. Może to być problem, jednak kiedy zduplikowałem tę metodę na innym działającym pliku klucza prywatnego i zrobiłem różnicę na oryginale, do skopiowanego / wklejonego, są one identyczne.
Walczyłem z tym. Gdybym tylko mógł uzyskać trochę więcej informacji o tym, dlaczego mój klucz się nie podoba, mógłbym to naprawić, jestem pewien. Czy ktoś ma jakieś pomysły na ten temat? Czy są jakieś metadane, które mówią ssh, że plik jest w rzeczywistości kluczem RSA?
źródło
/var/log/auth.log
serwer?Odpowiedzi:
Z mojego doświadczenia wynika, że dwa najczęstsze błędy uwierzytelniania oparte na kluczach to
$HOME/.ssh
kataloguUprawnienia do plików
OpenSSH robi wiele, aby cię chronić. Największy wpływ na to ma miejsce poprzez wymuszenie ścisłych ograniczeń dotyczących tego, kto ma dostęp do lokalnego folderu ssh. Naprawdę chcesz tylko ty i tylko ty mieć dostęp do katalogu. Cóż, i każdy z uid = 0, ale nie ma na to dobrego sposobu. Musisz więc po prostu zmienić swoje uprawnienia:
chmod -R go-rwx ~/.ssh
spowoduje to usunięcie praw do odczytu, zapisu i wykonywania praw do wszystkich plików w katalogu .ssh od wszystkich użytkowników oprócz właściciela, tj . Ciebie .Problemy z autoryzowanymi kluczami
Plik zawierający klucz publiczny zwykle
$HOME/.ssh/authorized_keys
musi pasować do bardzo określonej formy, aby SSH mógł zrozumieć, jak zaakceptować klucz prywatny. Każdy klucz musi składać się z co najmniej 2 pólKażdy klucz, wraz z wszystkimi jego opcjami i częściami składowymi, musi być wymieniony po jednym w wierszu w tym pliku. Ponieważ klucze są zwykle bardzo długie, często się zawijają i pojawiają się jako dwie linie na twoim terminalu. Czasami spowoduje to spustoszenie podczas próby kopiowania / wklejania, ponieważ czasami jeden lub więcej nowych wierszy zostanie wstawionych wszędzie tam, gdzie klucz zawija się na ekranie. Naprawienie tego problemu może być nieco trudniejsze dla początkującego użytkownika powłoki.
Spróbuj uruchomić
wc -l ~/.ssh/authorized_keys
Spowoduje to wydrukowanie liczby linii w pliku. Porównaj tę liczbę z liczbą kluczy, których spodziewasz się w pliku. Jeśli akceptujesz tylko ten jeden klucz, możesz także zrobić kopię pliku klucza publicznego, ponieważ jest on w tym samym formacie co plik kluczy autoryzowanych. Coś w stylu
scp -p ~/.ssh/kev_rsa.pub remotehost:~/.ssh/authorized_keys
lub, jeśli masz klucz publiczny w tym samym systemie, możesz to zrobić
cat ~/.ssh/kev_rsa.pub >> ~/.ssh/authorized_keys
Ponadto sprawdź plik dziennika na zdalnym hoście i sprawdź, czy nie są tam zgłaszane błędy. Pliki najprawdopodobniej będzie albo
/var/log/secure.log
albo/var/log/auth
.źródło
make a copy of the private key file
powinien być kluczem publicznym (jak pokazano w twoich przykładach)Chociaż prawdopodobnie będziesz musiał wygenerować nową parę kluczy dla komputera 2, aby połączyć się z serwerem. Często klucz publiczny wyświetla nazwę użytkownika i komputera tych, którzy je wygenerowali. Powinno to być widoczne w twoim pliku autoryzowanych_kluczy na serwerze.
źródło
Podane komunikaty debugowania oznaczają, że plik klucza prywatnego jest odczytywany przy założeniu, że jest to plik klucza publicznego / autoryzowanego hosta. To może nie być błąd krytyczny (takie komunikaty dostaję nawet dla działających połączeń). Czy mówi coś o „Oferowaniu” lub „wysłaliśmy”?
źródło
Spróbuj porównać pliki konfiguracyjne ssh między dwoma serwerami.
to znaczy. coś takiego jak cat / etc / sshd_config
źródło