Próbuję skonfigurować uwierzytelnianie ssh za pomocą plików kluczy zamiast nazwy użytkownika / hasła. Klientem jest Windows z systemem PuTTY, a serwerem jest serwer Ubuntu 12.04 LTS.
Pobrałem puttygen.exe i wygenerowałem parę kluczy. W /etc/ssh/sshd_config
mam ten wiersz:
AuthorizedKeysFile %h/.ssh/authorized_keys
a na pliku klucza publicznego mojego klienta jest napisane:
---- BEGIN SSH2 PUBLIC KEY ----
Comment: "[email protected]"
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAr3Qo6T5XU06ZigGOd3eKvfBhFLhg5kWv8lz6
qJ2G9XCbexlPQGanPhh+vcPkhor6+7OmB+WSdHeNO652kTofnauTKcTCbHjsT7cJ
GNrO8WVURRh4fabknUHPmauerWQZ6TgRPGaz0aucU+2C+DUo2SKVFDir1vb+4u83
[email protected]
---- END SSH2 PUBLIC KEY ----
Skopiowałem część z „ssh-rsa AAA” do „[email protected]” i umieściłem ją w pliku ~/.ssh/authorized_keys
na moim serwerze (we własnym folderze domowym). W PuTTY w obszarze Połączenie> SSH> Auth podałem ścieżkę do klucza prywatnego wygenerowanego na moim kliencie i zapisałem ustawienia sesji.
Zrestartowałem serwer ssh za pomocą
sudo service ssh restart
Teraz, jeśli załaduję profil w PuTTY (sprawdziłem, że klucz prywatny jest nadal w Połączeniu> SSH> Auth i czy ścieżka jest poprawna) i uruchomię profil, wyświetli się komunikat
Server refused our key
Próbowałem umieścić klucz publiczny w pliku w katalogu, ./ssh/authorized_keys/
ale to nie pomogło, więc użyłem go ./ssh/authorized_keys
jako pliku , wklejając w nim klucz. Próbowałem także wygenerować parę kluczy prywatny / publiczny na serwerze, wkładając klucz publiczny ./ssh/authorized_files
i ładując klucz prywatny w PuTTY na moim kliencie. Ponowne uruchomienie serwera też nie pomogło.
Odkryłem, że błąd można rozwiązać, umieszczając klucz w miejscu poza folderem domowym użytkownika, ale jest to przydatne tylko wtedy, gdy folder domowy jest zaszyfrowany, a ten nie jest.
Próbowałem także wygenerować 4096-bitowy klucz, myśląc, że 1024 może być za krótkie.
Jak mogę to uruchomić? Dzięki!
EDYTOWAĆ:
Ok, /var/log/auth.log
powiedział:
sshd: Authentication refused: bad ownership or modes for directory /home/vorkbaard/.ssh
Google mówi mi, że ~/.ssh/
powinno to być 700, a ~/.ssh/authorized_keys
powinno być 600, więc to zrobiłem. Teraz /var/log/auth.log
mówi:
sshd: error: key_read: uudecode AAAAB3N [etc etc etc until about 3/4 of my public key]
źródło
sshd: error: key_read: uudecode AAAAB3N
błędemauth.log
?authorized_keys
pliku, właśnie wkleiłem mójmykey.pub
plik do~/.ssh
folderu i pomyślałem, że go podniesie. Zamiast tego ostatecznie potrzebowałem uruchomić to lub edytować i wkleić poniżej innych kluczy, które mogą tam być.cat mykey.pub >> authorized_keys
. Wydaje się to teraz proste, ale wyciągniętą lekcją jest to, że wszystkie klucze publiczne muszą znajdować sięauthorized_keys
nie tylko w~/.ssh/
katalogu. Ktoś proszę doradzić, jeśli nie jest to prawidłowe stwierdzenie.Właśnie spotkałem ten problem. Pomimo prawidłowego ustawienia konfiguracji, jak już wspomniano w tym wątku (uprawnienia do kluczy autoryzowanych itp.), Okazuje się, że miałem klucz publiczny w niewłaściwym formacie. Miał postać:
Co nie działało. Ale sprawiło, że działało, mając to w postaci:
źródło
ssh-keygen -i -f filenameofwindowsformpub.key
do przekształcenia klucza publicznego w format zrozumiały dla twojego serwera OpenSSH.Problem polega na tym, że Windows używa innej nowej linii niż Linux, więc podczas kopiowania klucza z Windows do Linuksa na końcu linii znajduje się \ n , którego nie widać na edytorze Linux.
Jeśli przejrzysz /var/log/auth.log i spróbujesz się zalogować, błąd wygląda następująco:
Jeśli zmienisz swój klucz w systemie Windows, tak aby znajdował się w jednej linii bez nowej linii na końcu i skopiowałeś go następnie do Linuksa, powinien on działać (załatwił sprawę dla mnie).
źródło
Musiałem zmienić uprawnienia do katalogu domowego
źródło
Musiałem zmienić uprawnienia do katalogu ~ / .ssh z 770 na 700 oraz uprawnienia do pliku ~ / .ssh / author_keys z 660 na 600.
Z jakiegoś powodu usunięcie uprawnień grupowych naprawiło ten problem.
źródło
~/.ssh/authorized_keys
Plik wymaga kluczy być w jednej linii. Jeśli dodałeś go do wielu linii, jak w powyższej wklejce, spróbuj połączyć linie.źródło
Oto, co zadziałało dla mnie:
W
puttygen
po wygenerowaniu kluczy, upewnij się, że kopiowanie i wklejanie informacji z górnym polu, aby przejść do pliku authorized_keys. Jeśli zapiszesz swój klucz publiczny na komputerze klienckim, a następnie go otworzysz, tekst różni się od tekstu u góryputtygen
ekranu. Ponownie upewnij się, że skopiowałeś i wkleiłeś tekst z GÓRYputtygen
ekranu (po utworzeniu kluczy) do pliku autoryzowanych_kluczy, w którym powinien się znajdować~/.ssh
.źródło
Oprócz wszystkich powyższych odpowiedzi upewnij się, że
puttygen
poprawnie skopiowałeś i wkleiłeś klucz !Po dwukrotnym kliknięciu większości ciągu klucza, aby go wybrać, możesz nie otrzymać całego łańcucha, ponieważ pole tekstowe dzieli linie na niektóre znaki, na przykład
+
tak, że nie zaznaczasz tekstu po+
znaku ( którego nie widać, ponieważ pole tekstowe jest zbyt małe). Pamiętaj, aby wybrać cały ciąg ręcznie, odssh-rsa
samego końca pola tekstowego.źródło
Czasami może to być problem związany z posiadaniem klucza publicznego w jednej linii, takie podejście wydaje się go rozwiązać
źródło
dla mnie problem polegał na tym, że utworzyłem
~/.ssh/authorized_keys
root, więc root to własność root. Musiałemchown sshuser:sshuser ~/.ssh/authorized_keys
wtedy zacząć działaćźródło
Ja również spotkałem się z tym błędem i rozwiązałem go, zmieniając uprawnienia pliku autoryzowanych_kluczy na
600
.źródło
Częstym błędem jest to, że ludzie używają edytora tekstu (takiego jak Vim) i wklejają skopiowany tekst przed aktywowaniem „wstawiania” (naciśnij + i w Vimie przed wklejeniem)
źródło
W rzeczywistości zmieniłem
authorized_keys
uprawnienia644
, a następnie problem rozwiązany.źródło
do debugowania otwartego ssh można użyć:
uruchamia sshd na innym porcie 2020. uruchamia sshd jako bieżący program, więc wyjście przechodzi na ekran. jeśli zamknięty jest zamknięty.
następnie spróbuj się połączyć.
wyjaśnienie:
https://www.attachmate.com/documentation/rsit-unix-802/rsit-unix-guide/data/sshd_options_ap.htm
źródło
Tworzyłem pliki .ssh i autoryzowane klucze podczas logowania jako root, co dawało złe uprawnienia. Umieścił również wszystkie pliki w katalogu głównym.
Zmiana własności tych plików na pożądanego użytkownika nie będzie dobrą praktyką, więc powtórzyłem swoje kroki i upewniłem się, że jestem zalogowany jako użytkownik, z którego chciałem korzystać z SSH, i ponownie utworzyłem .ssh i uprawnione klucze.
Wskazówki dotyczące połączenia Win7 z serwerem Xubuntu 15.04: Jak utworzyć klucze SSH w / Putty, aby połączyć się z VPS
źródło