Co oznacza ten błąd ssh?

9

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?

Kevin
źródło
A co mówi /var/log/auth.logserwer?
womble
Dla wyjaśnienia klucz publiczny z komputera 1 łączy się z serwerem. Klucz prywatny z komputera 1 działającego na komputerze 2 nie będzie łączył się z serwerem?
Dru
Mam tę samą parę kluczy na obu komputerach, a klucz publiczny znajduje się na serwerze. Skopiowałem klucze wklejone z komputera klienta 1, który nie ma problemów z połączeniem się z serwerem, tutaj do mojego komputera domowego (komputer 2), który ma ten problem z uwierzytelnianiem.
kevin
@womble, niestety, nie mogę uzyskać dostępu do serwera, jeśli mogę to zorientowali się, że będę mógł do prawej ssh w .. Ach, ironia ...;)
Kevin
Jakie są systemy operacyjne na dwóch komputerach klienckich? Czy przeniesienie klucza prywatnego może zamrozić końce linii lub wprowadzić tekst (ewentualnie puste linie lub spacje) przed linią otwierającą?
Stobor,

Odpowiedzi:

7

Z mojego doświadczenia wynika, że ​​dwa najczęstsze błędy uwierzytelniania oparte na kluczach to

  1. Niewłaściwie szerokie uprawnienia do $HOME/.sshkatalogu
  2. Błąd podczas kopiowania klucza publicznego do systemu zdalnego

Uprawnienia 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 ~/.sshspowoduje 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_keysmusi 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ól

  1. Rodzaj zastosowanego klucza (RSA, DSA, RSA1 itp.)
  2. Klucz

Każ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.logalbo /var/log/auth.

Scott Pack
źródło
1
Cześć, dziękuję za twój wysiłek tutaj. Doceniam to. To zdecydowanie nie jest problem z uprawnieniami. Zweryfikowałem, że uprawnienia są prawidłowe. (Powinienem dodać to jako zastrzeżenie). Ponadto, chociaż nie mogę teraz uzyskać dostępu do oryginalnych kluczy, zduplikowałem proces, którego użyłem do skopiowania używanego klucza. Zrobiłem nawet md5sum, aby sprawdzić, czy pliki są identyczne. Ma sens?
kevin,
1
I znowu nie mogę uzyskać dostępu do serwera. Cóż za cały problem tutaj ...;)
kevin
@Scott: make a copy of the private key filepowinien być kluczem publicznym (jak pokazano w twoich przykładach)
mlp
0

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.

Dru
źródło
2
Miałem wrażenie, że ignoruje to, że są to tylko komentarze, które pomogą ci je zidentyfikować podczas przeglądania kluczy autoryzowanych. Zresztą po prostu skopiowałem / wkleiłem klucze. Więc są identyczne. Poważnie wątpię, czy sprawdza twoją nazwę hosta. Gdyby tak było, mógłbym to łatwo zmienić. Co do cholery i tak spróbuję ...
Kevin,
0

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”?

Ansgar Esztermann
źródło
-3

Spróbuj porównać pliki konfiguracyjne ssh między dwoma serwerami.

to znaczy. coś takiego jak cat / etc / sshd_config

ae.
źródło
Powinienem być bardziej dokładny. Są dwaj klienci, jeden serwer. Nie mogę uzyskać dostępu do serwera lub innego komputera klienckiego. Będę mógł uzyskać dostęp do serwera, jak tylko ten cholerny klucz się uwierzytelni;)
kevin