Mam parę kluczy publiczny / prywatny. Żadne z nich nie wiąże się z żadnym hasłem.
Ilekroć próbuję ssh przy użyciu prywatnego lub publicznego (i jestem prawie pewien, że powinienem używać tylko klucza publicznego), otrzymuję zapytanie o hasło i wtedy oczywiście nie mogę się połączyć.
Czy ktoś ma pomysł, jak to obejść? Czy wpisuję jakieś polecenie niepoprawnie? Próbuję ssh na serwerze, który mam skonfigurowany w moim pliku ~ / .ssh / config (poprawnie, ponieważ ta sama konfiguracja działa na innym serwerze) z kluczem przechowywanym w ~ / .ec2 / key.ppk
Próbowałem również użyć puttygen.exe do wygenerowania nowego klucza prywatnego Z hasłem, a następnie przy użyciu tego klucza, a kiedy wpisuję hasło, nadal nie działa.
ssh-rsa AAAAB3NzaC1y...... etc
to format z openssh, prawda? Mam ten format w moim kluczu prywatnym. Nagłówek stwierdza:PuTTY-User-Key-File-2: ssh-rsa Encryption: none Comment: imported-openssh-key Public-Lines: 6
Ale plik jest przechowywany jako plik id_rsa. Czy to oznacza, że nadal jest w formacie .ppk, mimo że nazwa pliku toid_rsa
.ppk
, nadal było w formacie szpachli, co mnie pomieszało, ponieważ wyświetlało wszelkiego rodzaju błędy, ale nie dawało mi żadnej bezpośredniej wskazówki, że problem dotyczy formatu klucza : stackoverflow.com/a/44391850/4752883Możesz uruchomić ssh-agent. Zobacz tutaj dyskusję.
Krótka wersja, która zadziałała dla mnie (w bash):
Wyjąłem 3 wiersze, które echo, i wykonałem je. Innym sposobem na zrobienie tego jest pobranie danych wyjściowych z -s:
Następnie dodałem do niego moje poświadczenia:
Teraz agent dostarcza poświadczenia zamiast wpisywać moje hasło.
Wierzę, że ssh-agent odchodzi, gdy robi to powłoka, więc powinno to zostać napisane podczas uruchamiania dla maksymalnej wygody. Link dzieliłem opisuje włączony również.
źródło
Kiedy konfigurujesz swój klucz publiczny, prawdopodobnie (być może przypadkowo) ustawiasz go za pomocą hasła.
Prawdopodobnie musisz zacząć od nowa - nie użyłem puttygen, ale możesz usunąć (lub zmienić nazwę) klucz publiczny z katalogu .ssh, użyć
ssh-keygen
do wygenerowania nowego (pamiętaj, aby nie podawać hasła), a następnie udostępnij klucz publiczny w pliku autoryzowanych_kluczy na serwerze, z którym próbujesz się połączyć.Konieczne może być także usunięcie starego klucza hasła z pliku kluczy autoryzowanych na serwerze, z którym się łączysz.
źródło
Sprawdź, czy klucz prywatny
id_rsa
nie ma dodatkowych podziałów linii na końcu, w niektórych przypadkach dodatkowe podziały linii spowodują, że ssh-keygen poprosi o hasło, spróbuj tego:test:
źródło
-----END RSA PRIVATE KEY-----
spowodowała, że prosi o hasło na kluczu, który nie miał jednego zestawu!Jedną rzecz do sprawdzenia, jeśli twój plik sshd_config ma StrictModes = tak, to katalog $ HOME lub katalog $ HOME / .ssh nie mogą być zapisywane na całym świecie dla grupy lub innej grupy. W przeciwnym razie uwierzytelnianie nie powiedzie się bez względu na wszystko.
źródło
Popełniłem błąd, przypadkowo zastępując mój plik ~ / .ssh / id_rsa moim ~ / .ssh / id_rsa.pub. Spowoduje to, że ssh poprosi o hasło.
źródło
Tego dnia wpadłem na ten problem. W szczególności próbowałem skopiować / wkleić prywatny klucz AWS z jednej maszyny na drugą.
Mam zły nawyk nieobecności pierwszej lub ostatniej postaci. Okazuje się, że jeśli nie pobierzesz każdego myślnika na końcu klucza prywatnego - nawet jeśli nie ma on nic wspólnego z samym tekstem klucza - zostaniesz poproszony o hasło do klucza prywatnego, dopóki nie dodasz wszystkich znaków z klucz, z którego skopiowałeś (w moim przypadku oznaczało to dodanie pojedynczego łącznika na końcu klucza).
Podejrzewam, że oznacza to, że najlepszą praktyką jest SSH plik tekstowy w poprzek drutu zamiast próby kopiowania i wklejania między oknami terminalu.
źródło
Na OSX mogłem po prostu uruchomić:
$ ssh-add ~/.ssh/id_rsa Enter passphrase for /Users/me/.ssh/id_rsa: `Identity added: /Users/mikekilmer/.ssh/id_rsa (/Users/mikekilmer/.ssh/id_rsa)
Hasło zostało zapisane w aplikacji Keychain Access, która znajduje się w folderze Aplikacje> Narzędzia. Właśnie wpisałem
id_
w polu wyszukiwania.źródło
Spróbuj przejrzeć pliki dziennika na serwerze. Zobacz / var / log / auth log (np. / Var / log / authlog dla OpenSSH, chociaż widziałem, że niektóre systemy operacyjne używają Portable OpenSSH i używają /var/log/auth.log) i sprawdzają koniec tego pliku.
Najczęstsze przyczyny, które widziałem, to nieprawidłowe uprawnienia (jak odnotowano w odpowiedzi TD1 ), chociaż inne problemy mogą wynikać z tego, że klucz publiczny (przechowywany na serwerze) nie znajduje się w odpowiednim pliku, ten klucz jest komentowany lub błędna nazwa użytkownika.
Pomocne może być również (w przypadku rozwiązywania problemów) tymczasowe nadanie hasłu hasła, aby sprawdzić, czy można pomyślnie zalogować się do konta.
Jeśli przeglądanie pliku dziennika nie prowadzi szybko do rozwiązania, sugeruję opublikowanie nowego pytania (ponieważ jest to świetne uogólnione pytanie), które zawiera szczegółowe informacje z pliku dziennika, aby można było podać bardziej szczegółowe wskazówki.
źródło
W moim zespole, gdy tak się dzieje, nie ma to żadnego problemu lokalnie. Klucz ssh i / lub dostęp użytkownika nie został poprawnie skonfigurowany na serwerze, z którym się łączy (w naszym przypadku na platformie hostingowej). Z jakiegoś powodu powoduje to wyświetlenie monitu o nieistniejący klucz ssh.
źródło