Chcę mieć możliwość zalogowania się do pilota przez ssh bez konieczności ciągłego wprowadzania hasła.
- Jak to skonfigurować?
- Czy do wykonania sesji bez hasła wymagane jest inne polecenie?
ssh
authentication
Oxwivi
źródło
źródło
Odpowiedzi:
Odpowiedź
Wykonaj następujące polecenia:
Następnie musisz skopiować nowy klucz na serwer :
Po skopiowaniu klucza ssh do komputera jak zwykle:
Możesz teraz zalogować się bez wprowadzania hasła z komputera, na którym wykonałeś polecenia.
Przykład
Wyjaśnienie
Zakłada się, że można już pomyślnie połączyć się z serwerem za pośrednictwem SSH.
Musisz wygenerować klucz SSH, który pozwoli ci zidentyfikować siebie jako osobę bez używania hasła. Możesz zdecydować się na ochronę kluczy hasłem, jeśli chcesz, ale można to pozostawić puste, umożliwiając dostęp SSH bez hasła.
ssh-keygen
go, aby utworzyć plikid_rsa
iid_rsa.pub
.pub
Plik jest to, co dzieje się na serwerach, klucz prywatny (id_rsa
) jest to, co pozostaje z wami i to w jaki sposób identyfikować siebie.ssh-copy-id user@server
zastępując użytkownika zdalnym użytkownikiem, a serwerem nazwą DNS komputera lub adresem IP. Zostaniesz poproszony o podanie hasła SSH, wprowadź je, a jeśli wszystko się powiedzie, będziesz mógł uzyskać dostęp do urządzeniassh user@server
bez potrzeby podawania hasła.Bibliografia
źródło
ssh-keygen
zgodnie z instrukcjami wyświetlanymi na ekranie, a następnie wpisaćssh-copy-id user@server
zastępując użytkownika zdalnym użytkownikiem, a serwer zdalnym komputeremssh-copy-id "[email protected] -p 1234"
.Wpisz następujące polecenia:
ssh-keygen
Naciskaj Enterklawisz, aż pojawi się monit
ssh-copy-id -i root@ip_address
(Raz poprosi o hasło do systemu hosta)
ssh root@ip_address
Teraz powinieneś być w stanie zalogować się bez hasła.
źródło
Zwykle robię to w następujący sposób:
ssh-keygen -t rsa
(Gdy pojawi się monit o hasło, pozostaw je puste)
Następnie:
cat ~/.ssh/id_rsa.pub | ssh username@hostname 'cat >> .ssh/authorized_keys'
(Wymaga to, aby folder .ssh znajdował się w katalogu domowym na docelowej nazwie hosta, w którym znajduje się plik autoryzowanych_kluczy)
Oczywiście zastąp nazwę użytkownika żądaną nazwą użytkownika, a nazwę hosta żądaną nazwą hosta lub adresem IP
Następnie po prostu SSH do tego pola, tak jak jesteś przyzwyczajony.
źródło
touch
ichmod
polecenia w odpowiedzi Rinzwind za?.ssh/authorized_keys
pliku na 0600, inaczej to nie zadziałaZwykle używam
sshpass
do tego, instaluję gosudo apt-get install sshpass
i używam w ten sposóbźródło
sshpass
jest to bardzo przydatny hack w przypadkach, gdy nie można zmienić metody uwierzytelniania na zdalnym serwerze!https://help.ubuntu.com/community/SSH/OpenSSH/Configuring#disable-password-authentication
źródło
PasswordAuthentication no
na wszystkich użytkowników? Jeśli nie, jak mogę go wyłączyć dla zwykłych użytkowników, ale pozostawić go bez zmian dla roota podczas testowania? Naprawdę nie chcę tego udaremniać i całkowicie się zamykać.Permission denied (publickey).
zPasswordAuthentication no
. Co mam zrobić Czy mogę zmienićPasswordAuthentication no
na innym hoście?To rozwiązanie jest przeznaczone specjalnie dla użytkowników korzystających z systemu Windows do ssh na swoich zdalnych komputerach, w tym obrazach w chmurze w AWS Cloud i GCE Cloud
Zrzeczenie się
Ostatnio użyłem tego rozwiązania do zdalnego logowania nowych wdrożonych obrazów VM na GCE.
Narzędzia użyte:
puttygen
pobierz puttygenwinscp
pobierz winscpKroki do wykonania:
Jak to zrobić:
1. Wygeneruj klucz / parę lub użyj istniejącego klucza prywatnego
Jeśli posiadasz klucz prywatny:
Otwórz
puttygen
, naciśnij przycisk ładowania i wybierz*.pem
plik klucza prywatnego ( ).Jeśli nie posiadasz klucza prywatnego:
puttygen
,(ze źródła 1, link podany poniżej)
2. Utwórz nowy plik „klucze autoryzowane” (z
notepad
)Skopiuj dane klucza publicznego z sekcji „Klucz publiczny do wklejenia do pliku kluczy autoryzowanych OpenSSH” generatora kluczy PuTTY i wklej dane klucza do
authorized_keys
pliku.Upewnij się, że w tym pliku jest tylko jeden wiersz tekstu.
3. Prześlij klucz na serwer Linux
Prześlij plik autoryzowanych kluczy do katalogu domowego na zdalnym komputerze.
4. Ustaw odpowiednie uprawnienia
Utwórz
.ssh
katalog (jeśli nie istnieje)Skopiuj
authorized_keys
plik do.ssh
katalogu.(spowoduje to zastąpienie istniejącego
authorized_keys
pliku, zwróć uwagę na to).Jeśli plik istnieje, po prostu dodaj zawartość tego pliku do istniejącego pliku.
Uruchom polecenia, aby ustawić uprawnienia:
Teraz będziesz mógł przejść
ssh
do zdalnego komputera bez podawania poświadczeń za każdym razem.Dalsza lektura:
Generowanie i przesyłanie kluczy SSH w systemie Windows
Certyfikaty kluczy OpsenSSH uwierzytelnianie PEM PUB CRT
źródło
Jeśli utworzysz parę kluczy publicznych / cenowych i zalogujesz się przy użyciu naszego nowo utworzonego klucza publicznego, nie będziesz musiał wpisywać swojego hasła. W zależności od konfiguracji twojego breloka i / lub agenta ssh może być konieczne zabezpieczenie twojego klucza hasłem.
Oto jedno z wielu krótkich poradników dla Ciebie. Kluczowe znaczenie dla bezpieczeństwa tej metody ma to, aby wygenerowany klucz prywatny pozostał prywatny! Nigdy nie należy udostępniać go nikomu ani zezwalać na dostęp do niego w jakikolwiek sposób.
To polecenie generuje dość silny klucz w
~/.ssh/
:W
~/.ssh/
znajdziesz swój klucz publiczny jakoid_rsa.pub
. Jego zawartość należy dołączyć doauthorized_keys
pliku serwera , przenosząc za pośrednictwem przenośnego nośnika (pendrive) lub krótko włączając uwierzytelnianie hasła na serwerze, a następnie używając go,ssh-copy-id ~/.ssh/id_rsa.pub username@server
a następnie ponownie wyłączając.Jeśli zdecydujesz się zabezpieczyć swój klucz za pomocą hasła (w pierwszym kroku), możesz użyć
ssh-agent
lub klucza Ubuntu, aby zabezpieczyć ten farysek lokalnie, więc nie musisz go cały czas wpisywać.źródło
Aby wprowadzić pewne zmiany:
Mac domyślnie nie ma
ssh-copy-id
, sam musisz go zainstalować:znajdź więcej tutaj: https://github.com/beautifulcode/ssh-copy-id-for-OSX
jeśli dokonałeś przekierowania portów, polecenie powinno wyglądać tak:
zauważ, że cytaty są konieczne.
źródło
Zdalne logowanie / kopiowanie bez podawania hasła
Odpowiednio aplikacje
ssh
orazscp
zdalne logowanie i zdalne kopiowanie umożliwiają komunikację ze zdalnym hostem bez podawania hasła. Wymaga to przestrzegania procedury uwierzytelniania, takiej jak opisana poniżej. Przez klienta rozumiemy maszynę, na której siedzisz, a przez serwer rozumiemy maszynę, na którą chcesz się zalogować bez podawania hasła. Kroki procedury uwierzytelniania to:$HOME/.ssh
.$HOME/.ssh/authorized_keys
lub$HOME/.ssh/authorized_keys2
na serwerze.Istnieją trzy różne typy protokołów uwierzytelniania. Określ typ podczas uruchamiania ssh-keygen:
chmod 0700
upewnić się, że ten plik nie jest czytelny dla innych) i tożsamością.pub (klucz publiczny).ssh-keygen -t rsa
i powoduje utworzenie plikówid_rsa
(klucz prywatny) iid_rsa.pub
(klucz publiczny)ssh-keygen -t dsa
i powoduje utworzenie plikówid_dsa
(klucz prywatny) iid_dsa.pub
(klucz publiczny)Podczas uruchamiania ssh-keygen możesz polegać na domyślnych odpowiedziach (co oznacza, że nie podajesz hasła). To sprawia, że cała konfiguracja jest prosta, ale także niepewna.
Możesz określić typ kluczy, które będą używane przez opcję ssh ;
ssh -1
wymusza użycie kluczy RSA1 (wersja protokołu 1), natomiastssh -2
zmusza ssh do wypróbowania tylko kluczy RSA lub DSA (wersja protokołu 2). W poniższych przykładach generujemy i instalujemy klucze RSA1 i DSA na zdalnym hoście, abyś miał większą elastyczność. Możesz utworzyć plik konfiguracyjny w swoim.ssh
katalogu za pomocą wierszaTo powoduje, że ssh próbuje połączenia RSA1 (wersja protokołu 1) przed RSA / DSA (wersja protokołu 2).
Używanie kluczy RSA1
Korzystanie z kluczy DSA
To wszystko, co musisz zrobić, jeśli nie użyłeś hasła podczas generowania kluczy. Możesz przetestować połączenie, uruchamiając ssh $ remote i sprawdzić, czy możesz się zalogować bez podania hasła (być może będziesz musiał użyć
-1
lub-2
jako opcji ssh ). Procedurę można oczywiście powtórzyć dla dowolnej maszyny, na której chcesz się zalogować.Jeśli użyłeś hasła, będziesz musiał uruchomić program,
ssh-agent
aby uruchomić specjalną powłokę, a następniessh-add
zarejestrować kombinację klucz / hasłosshd
. Więcej informacji można znaleźć na stronach podręcznika użytkownika tych programów.Skrypt do automatyzacji połączeń wolnych od hasła:
ssh-no-password.sh
skopiowane z: http://folk.uio.no/hpl/scripting/doc/ssh-no-password.html
źródło
Chciałbym dodać odpowiedź dla tych, którzy mogą znaleźć hasło, nawet jeśli przeczytali wszystkie odpowiedzi tutaj, ponieważ ustawiłeś IdentitiesOnly tylko na tak. Odpowiedź tutaj może zaoszczędzić dużo czasu na zarządzanie wieloma kluczami, które są kluczami do git lub serwera.
Po wygenerowaniu klucza i skopiowaniu go na serwer:
Odkryłem, że to nie działa.
Potem poszedłem sprawdzić
~/.ssh/config
plik na kliencie, zobaczyłem to na dole:Następnie dodaję to powyżej:
Mogę się zalogować, wchodząc
ssh somename
.Następnie możesz dodać wiele kluczy ssh, używając swoich ulubionych nazw, i wystarczy dodać ustawienia, takie jak powyższe cztery linie, do pliku konfiguracyjnego.
Host to nazwa, którą chcesz wprowadzić podczas późniejszego łączenia się z serwerem; nazwa_hosta to adres IP serwera; Użytkownik to nazwa użytkownika, którą logujesz na serwerze; a plik tożsamości to plik, w którym przechowujesz wygenerowany klucz.
źródło