Utworzyłem parę kluczy za pomocą puttygen.exe
(klient to Windows 8). Na serwerze (Ubuntu 12.04.3 LTS) umieściłem swój klucz publiczny ~/.ssh/authorized_keys
. Klucz publiczny jest następujący:
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAopfM6RHOgnuc4Aftn3t4k5UIAT3StCAbn/vg/IMbphbXadshC+79sIlRq3P4zGzMjFTP4hKnzu6ehLV5lmj/qorq3SKT+bPO5Qrac3VbIlrGvuBFDDjP82I2Hwg3HzlsFTstqk++KToapaTYZ7jENEYyPl2wnzITJnt//+4U1o6juoXTKgdNE02hHnRZyHOV/bnkZyJJCEwJv5U0eXSThQnhmXtUxGT8U0HQNFiXfqIIVllhWiCnyrhhIaKz/CIJNAd2VmzyJzQtJtTQX8aWSNVrZju6Sv2/RncTNvsACdNgjjh/FH8PQXaep00jlJ3MOdsC8vz6VSPFbh6iKy1oLQ== rsa-key-20131231
Więc jest poprawna (jedna linia, bez komentarzy, zaczyna się od ssh-rsa itp.)
.ssh
dir poziom uprawnień to 700, uprawnienia do pliku allowed_keys to 600. Zarówno katalog, jak i plik należą do rzeczywistego użytkownika, którego próbuję się zalogować.
Kiedy próbuję się połączyć, otrzymuję 'server refused our key'
i serwer pyta o hasło. To wszystko. Nic nie jest rejestrowane /var/log/auth.log
podczas próby zalogowania się za pomocą klucza.
Szukałem wszędzie i wszystkie artykuły i wskazówki wspominają o ustawieniu chmod 600 i 700 dla pliku / katalogu i poprawnym formatowaniu klucza. Zrobiłem to wszystko, wciąż otrzymując błąd „odmówił nam klucza” i nie mam pomysłów.
DEBUG
i zobacz, czy widzisz jakiekolwiek zarejestrowane problemy, jeśli nadal nie pokazuje, że uzyskujesz dostęp, szukasz w niewłaściwym pliku dziennikaOdpowiedzi:
OK, w moim kluczu była mała literówka. Najwyraźniej podczas wklejania do pliku pierwsza litera została odcięta i zaczynała się od sh-rsa zamiast ssh-rsa.
nrathathaus - twoja odpowiedź była bardzo pomocna, wielkie dzięki, ta odpowiedź jest ci przypisana :) Tak jak powiedziałeś i ustawiłem to w sshd_conf:
Patrząc na logi zdałem sobie sprawę, że sshd poprawnie odczytuje klucz, ale odrzuca go z powodu nieprawidłowego identyfikatora.
źródło
LogLevel
jest zdefiniowany w/etc/ssh/sshd_config
. Domyślnym dziennikiem jest,/var/log/auth.log
chyba że określono inaczej wsshd_config
.i
) wiodących „s” nie zostanie obciętesudo service ssh restart
aby zmiany odniosły skutek. W przeciwnym razie w moim pliku dziennika uwierzytelniania nic nie było.Dodanie kilku myśli jako innych odpowiedzi pomogło, ale nie były one dokładnie dopasowane.
Przede wszystkim, jak wspomniano w zaakceptowanej odpowiedzi, edytuj
i ustaw poziom dziennika:
Następnie spróbuj się uwierzytelnić, a gdy się nie powiedzie, poszukaj pliku dziennika:
Będzie zawierał błędy, których szukasz.
źródło
/var/log/
istnieje, alesecure
nie istnieje. Jak mogę sprawdzić, w którym dzienniku jest zapisywany?/var/log/auth.log
, przynajmniej w moim Ubuntu 14.04.1.secure
pliku, zanim przeczytałem tutaj komentarze @axel.W moim przypadku musiałem również zmienić uprawnienia / home / user z 0755 na 0700.
źródło
W moim przypadku jest to problem z uprawnieniami.
Zmieniłem poziom dziennika na
DEBUG3
i/var/log/secure
widzę tę linię:Wyszukałem w Google i znalazłem ten post:
https://www.daveperrett.com/articles/2010/09/14/ssh-authentication-refused/
Zasadniczo nakazuje mi:
w
uprawnień grupowych swojego użytkownika home dir700
na.ssh
reż600
tegoauthorized_keys
pliku.I to działa.
Inną rzeczą jest to, że nawet jeśli włączyłem logowanie jako root, nie mogę zabrać się
root
do pracy. Lepiej użyj innego użytkownika.źródło
Uruchamiając Windows 8.1 napotkałem
server refused our key
problem.Postępując zgodnie z instrukcją: https://winscp.net/eng/docs/guide_windows_openssh_server Nawiązanie połączenia przy użyciu logowania do systemu Windows
username
ipassword
. Jednak po uwierzytelnieniuusername
w połączeniu z aprivate key
, odpowiedź byłaserver refused our key
.Uruchomienie go z kluczem publicznym sprowadzało się do uprawnień do pliku:
C:\ProgramData\ssh\administrators_authorized_keys
To jest pomocna strona: https://github.com/PowerShell/Win32-OpenSSH/wiki/Troubleshooting-Steps
Zatrzymaj dwie usługi OpenSSH, a następnie otwórz plik za
command prompt
pomocąadmin permissions
. Następnie uruchomić:C:\OpenSSH-Win32>c:\OpenSSH-Win32\sshd.exe -ddd
Uwaga: podaj pełną ścieżkę do pliku exe, w przeciwnym razie
sshd
narzeka. Tworzy to nasłuchiwanie połączeń jednorazowego użytku.-ddd
Jest rozwlekły poziomie 3.Po nawiązaniu połączenia skanowanie logów ujawniło:
Musiałem stworzyć plik:
C:\ProgramData\ssh\administrators_authorized_keys
I skopiować do niegopublic key
tekst, np .:ssh-rsa AAAA................MmpfXUCj rsa-key-20190505
A potem zapisać plik. Uratowałem jak plikUTF-8
zBOM
. Nie testowałemANSI
.Następnie ponownie uruchomiłem jednorazową linię poleceń, w dziennikach pokazało się:
S-1-5-11
to nazwa nadanaSystem
.Aby naprawić
Bad permissions
, kliknij prawym przyciskiem myszyadministrators_authorized_keys
plikSecurity Tab
, przejdź do, kliknijAdvanced
przycisk i usuń odziedziczone uprawnienia. Następnie usuń wszystkoGroup or user names:
oprócz nazwy użytkownika logowania do systemu Windows, np .:YourMachineName\username
Uprawnienia do tegousername
powinny byćRead Allow
,Write Deny
wszystko inne jest odznaczone. Właścicielem pliku również powinien byćYourMachineName\username
To rozwiązało problem.
Inne przydatne linki:
Pobierz OpenSSH-Win32.zip z: https://github.com/PowerShell/Win32-OpenSSH/releases
Przykład w C #, jak używać WinSCPnet.dll do nawiązywania połączenia z serwerem OpenSSH: https://winscp.net/eng/docs/library#csharp
Oto fragment kodu umożliwiający nawiązanie połączenia za pomocą
WinSCPnet.dll
:Zastąp
SshHostKeyFingerprint
iSshPrivateKeyPath
własnymi wartościami.Edycja: dodano zrzut ekranu uprawnień do plików administrators_authorized_keys:
Gdy
OpenSSH SSH Server
działa jako usługa,System
powinno mieć tylko pozwolenie. Jeśli jednak uruchamiaszsshd.exe
z wiersza poleceń, bieżący użytkownik powinien być jedynym na liście (zezwolenie na odczyt, odmowa zapisu).źródło
Dodaję tę odpowiedź, aby pomóc każdemu, tak jak ja, który spędził godziny bezskutecznie przeszukując internet.
TWÓJ DOMOWY FOLDER MOŻE BYĆ ZASZYFROWANY.
Lub też dowolny folder, w którym zagnieżdżony jest twój plik "authorised_keys". Człowieku, to zaoszczędziłoby mi dużo czasu. Aby to sprawdzić, idź grać
w katalogu, którego stan szyfrowania chcesz określić. Jeśli folder zawiera folder o nazwie „.encryptfs”, odpowiedź brzmi: tak, ten folder jest zaszyfrowany. Utrudni to dostęp do pliku „authoris_keys” zawierającego publiczny klucz ssh potrzebny do weryfikacji.
Aby to naprawić, umieść plik „authorised_key” w drzewie katalogów, które nie zawiera szyfrowania.
źródło
Prostym rozwiązaniem, które znalazłem, było przeniesienie
authorized_keys
pliku z ukrytego katalogu .ssh i umieszczenie go w systemowym katalogu ssh:Jak tylko to zrobiłem, działało bez problemów.
źródło
mając ten sam problem w systemie Windows Server 2008 R2 i zbadałem wiele do rozwiązania, w końcu zrobiłem to, wykonując następujące czynności:
otwórz C: \ Program Files (x86) \ OpenSSH \ etc \ sshd_config za pomocą textpada lub dowolnego innego edytora tekstu
usuń komentarz z poniższych linii, po usunięciu powinny wyglądać następująco:
zapisz go i spróbuj teraz zalogować się przy użyciu klucza prywatnego. baw się dobrze.
źródło
Podziękowania dla nrathaus i
/var/log/auth.log
dochodzenia na poziomie debugowania są następujące.Innym powodem jest to, że twój katalog domowy może mieć inne uprawnienia niż 755.
źródło
Napotkałem ten problem dzisiaj i moim problemem było to, że podczas kopiowania klucza publicznego z pliku dołączane są również znaki nowego wiersza. Możesz użyć ": set list" w vimie, aby zobaczyć wszystkie ukryte nowe linie i upewnić się, że usunąłeś wszystkie nowe linie z wyjątkiem ostatniej. Poza tym na początku brakowało mi klucza „ssh-rsa”. Upewnij się, że też to masz.
źródło
W przypadku osób otrzymujących ten błąd z systemu Windows Server otrzymałem ten sam błąd i był to problem z kontem użytkownika. W wielu organizacjach zasady grupowe dla administratorów mogą nie zezwalać na konfigurowanie serwera SSH i połączeń. W przypadku tego typu konfiguracji należy to zrobić z konta administratora lokalnego. Może warto to sprawdzić, jeśli potwierdzisz, że w kluczu publicznym nie ma żadnych literówek.
źródło
W moim przypadku musiałem wyłączyć SELinux na Centos6.6, aby działał :)
Edytuj / etc / selinux / config i ustaw poniższe, a następnie uruchom ponownie hosta.
BTW ... zapomniałem wspomnieć, że musiałem ustawić LogLevel = DEBUG3, aby zidentyfikować problem.
źródło
Miałem ten sam błąd na Solaris, ale znalazłem w /var/adm/splunk-auth.log następujące informacje:
W / etc / shadow konto zostało zablokowane:
Usunięto część „* LK *”:
i mógłbym jak zwykle użyć ssh z autoryzowanymi_kluczami.
źródło
W moim przypadku było to spowodowane przez (
/etc/ssh/sshd_config
):Zmieniłem się na
yes
, zrestartowałem usługę i wróciłem normalnie.źródło
Rozwiązałem ten problem, puttygen to oprogramowanie innej firmy, wygenerowany przez niego klucz ssh nie był używany bezpośrednio, więc musisz wprowadzić pewne zmiany. Na przykład wygląda to tak
Pomijam niektóre alfabety w środku, zastępuję je *, jeśli nie, StackOverflow powiedział mi, że format kodu jest zły, nie pozwól mi pisać。
to jest mój klucz ssh wygenerowany przez puttygen, musisz zmienić na to
W moim przypadku usunąłem niektóre komentarze, takie jak
i dodaj
ssh-rsa
na początku, dodajyourname@hostname
na końcu. uwaga : nie usuwaj==
na końcu i musisz zmienić dla siebie "twoje imię" i "nazwę hosta", w moim przypadkuuaskh@mycomputer
twoja nazwa jest taka, że chcesz zalogować się do swojego vps. kiedy wszystko to zrobi, możesz przesłać publicznie -klawisz do domu uaskh jest~/.ssh/authorized_keys
ocat public-key >> ~/.ssh/authorized_keys
czymsudo chmod 700 ~/.ssh
sudo chmod 600 ~/.ssh/authorized_keys
to musisz zmodyfikować / etc / ssh / sshd_config,RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
mój system operacyjny CentOS 7, jest to mój pierwszy raz anwser pytanie, postaram moje wysiłki do zrobienia, Dziękuję!źródło
O mój Boże, spędziłem dni próbując to naprawić. Więc oto, co zadziałało dla mnie. Wróciłem do folderu głównego w ten sposób: cd / root / mkdir .ssh cd .ssh chmod 700 .ssh nano -w autoryzowany_klucze usługa ssh restart Więc użyłem roota do logowania przez Putty i zadziałało. więc spróbuj zrobić to samo z użytkownikiem, którego chcesz użyć w kitu.
źródło
Używam pliku PUTTYgen z psftp i napotkałem ten problem na moim Windows Server, kiedy musieliśmy utworzyć nowe klucze dla klienta. Aby połączenie działało, plik private_key_name .ppk i open_ssh.txt muszą znajdować się w tym samym katalogu.
źródło
W moim przypadku dom na nfs to 777, potrzeba 750. To rozwiązało problem.
źródło
Mam problem, w którym sshd tylko czyta
authorized_keys2
.Skopiowanie lub zmiana nazwy pliku rozwiązało problem.
PS Używam Putty z Windows i użyłem PuTTyKeygen do generowania par kluczy.
źródło
Miałem podobny problem, próbując zalogować się przez Mobaxterm. Klucz prywatny został wygenerowany przez puttygen. Regeneracja klucza pomogła w moim przypadku.
źródło
Używając Cpanel możesz sprawdzić, czy klucz jest autoryzowany w
Dostęp SSH >> Klucze publiczne >> Zarządzaj >> Autoryzuj lub Cofnij autoryzację.
źródło
jeśli pojawi się ten błąd w
/var/log/secure
oznacza to, że twój klucz ma spację, jeśli wygenerowałeś klucz przez puttgen podczas przeglądania
.ppk
pliku, będzie wyglądał tak:a kiedy spróbujesz go wkleić, pojawi się błąd w odczycie klucza, więc spróbuj edytować klucz, zrób go w jednej linii i wypróbuj
to powinno wyglądać na coś
ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAQEAoo3PFwX04NFG+rKz93l7em1BsUBzjHPMsswDal74MLaJyhQD0pE23NS1izahbo1sJGnSJu2VJ//zxidSsba6xa6OvmeiKTwCz0E5GMefdGVdpdbTlv99qjBl1+Nw1tDnHIC0+v9XmeZERQfCds9Kp1UivfReoYImntBCgLtNyqRYrSu8csJCt7E1oY8QK6WP1vfYgAQ2taGyS9+g7FHyyf5VY2vH3oWzzbqzxjsSLAv3zEQSm1LzSw9Pvc8iwasFyUMBOPj31CKQYTXyX8KpJTr0Zb7oqMauBE5LVwxZhlcJHbj0FsMbF/+GRjvgexymCi3bHmwGQ6FEADNd0RkhdQ== username@domainname
źródło
U mnie działa to, że:
Tym razem to działa dla mnie. Ale nie wiem, dlaczego na początku nie ma informacji o moim kluczowym pliku, gdy instancja została uruchomiona. Sprawdź też ten link https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/TroubleshootingInstancesConnecting.html#TroubleshootingInstancesConnectingMindTerm
źródło
W moim przypadku problem był taki, że podczas generowania kluczy ssh celowo zmieniłem domyślne katalogi kluczy. Więc zamiast używać lokalizacji ~ / .ssh / authoris_keys, którą wybrałem
~/home/user/folder1/.ssh/authorized_keys
, aby te zmiany zadziałały, miałem dokonać tych samych zmian co do nowej lokalizacji w tym pliku/etc/ssh/sshd_config
. Ale dopóki nie zdaję sobie z tego sprawy, wypróbowałem już kilka rozwiązań sugerowanych przez inne osoby, w tym ustawienie uprawnień do folderu domowego na700
i katalogu .ssh na600
.źródło
Kroki, aby naprawić montowanie roota (które wykonałem, gdy zmieniłem uprawnienia w folderze ec2-user i pliku klucza autoryzacji) Ten proces będzie podobny do odłączania i podłączania pendrive'a
Poniżej znajduje się kilka innych scenariuszy, które możesz napotkać -
Kroki, aby je naprawić
Teraz po zalogowaniu się do nowego ec2 uruchom poniższe kroki
sudo mount /dev/mapper/rootvg-home /mnt
Teraz rozwiązaliśmy problem, który napotkaliśmy. Głównie może to być problem z uprawnieniami użytkownika - Umount / mnt, aby go odmontować - Teraz przejdź do konsoli i wskaż wolumin dołączony do nowej instancji i odłącz go - Po odłączeniu podłącz go do nowego woluminu jako / dev / sda1
Powiedziawszy to, powinieneś być w stanie pomyślnie się zalogować
źródło
Z mojego doświadczenia wynika, że należy generować klucze z kitu, a nie po stronie linuxa. Ponieważ klucz będzie w starym formacie PEM. W każdym razie, tylko moja sugestia. Zrobiłem poniższe kroki i dobrze współpracowałem ze mną i moim zespołem.
Wygeneruj parę kluczy za pomocą PuTTYGen.exe na swoim lokalnym (typ: RSA, długość: 2048 bitów).
Zapisz klucz prywatny / publiczny jako pliki „ id_rsa.ppk / id_rsa.pub ” na swoim lokalnym komputerze.
Utwórz plik „Authorized_keys” na swoim lokalnym komputerze, a następnie wprowadź klucz publiczny w „ id_rsa.pub ” do „ Authorized_keys ”. Pamiętaj, że treść musi zaczynać się od „ ssh-rsa ” i tylko w jednej linii .
Uruchom te polecenia:
chmod 700 .ssh
chmod 600 .ssh / autoryzowane_klucze
chown $ UŻYTKOWNIK: $ UŻYTKOWNIK .ssh -R
Przetestuj ustawienie połączenia, ładując klucz prywatny „ id_rsa.ppk ” w profilu PuTTY.exe, a następnie kliknij przycisk Otwórz (podaj hasło, jeśli zostało).
źródło
sprawdź swój klucz, powinien to być klucz rsa (id_rsa.pub) dzisiaj, a nie klucz dss (id_dsa.pub), użyj puttygen 0.70 i wybierz RSA na typ klucza do wygenerowania, zastąp klucz publiczny na hoście ~ /. ssh / authoris_keys
źródło
Po dodaniu klucza zaloguj się tak
ec2-user
, jakbyś korzystał z maszyny Amazon Linuxźródło
W moim przypadku był to zły użytkownik: przypisanie do grupy. Rozwiązałem ustawianie odpowiedniego użytkownika i grupy:
źródło
Innym powodem może być BOM UTF-8 w
authorized_keys
pliku.źródło