Jestem leniwy w domu i używam uwierzytelniania hasła do moich domowych urządzeń. Jestem gotowy do przejścia na uwierzytelnianie oparte na kluczach. W sieci istnieje wiele opcji, w tym catting, a następnie ssh na klucz, scpowanie klucza bezpośrednio itp.
Szukam najprostszego i zalecanego sposobu na skopiowanie klucza, mam nadzieję, że gdzieś w pakiecie ssh Ubuntu jest jakieś opakowanie na wygodę?
Wiem już, jak wyłączyć logowanie do haseł .
Odpowiedzi:
ssh-copy-id
Polecenia (w OpenSSH-klient opakowaniu i instalowane domyślnie) robi dokładnie to:kopiuje klucz publiczny twojej domyślnej tożsamości (użyj
-i identity_file
dla innych tożsamości) na zdalnym hoście.Domyślną tożsamością jest Twój „standardowy” klucz ssh. Składa się z dwóch plików (klucz publiczny i prywatny) w swoim
~/.ssh
katalogu, zwykle o nazwieidentity
,id_rsa
,id_dsa
,id_ecdsa
lubid_ed25519
(i to samo z.pub
), w zależności od rodzaju klucza. Jeśli nie utworzyłeś więcej niż jednego klucza ssh, nie musisz się martwić o określenie tożsamości, ssh-copy-id po prostu wybierze go automatycznie.Jeśli nie masz tożsamości, możesz ją wygenerować za pomocą narzędzia
ssh-keygen
.Ponadto, jeśli serwer używa portu innego niż domyślny (
22
), należy użyć znaków cudzysłowu w ten sposób ( źródło ):źródło
ssh-copy-id "user@host -p 6842"
brew install ssh-copy-id
a następnie uruchomić polecenie.Podoba mi się odpowiedź Marcela. Nie znałem tego polecenia. Zawsze korzystałem z tego, co znalazłem na stronie Oracle :
Pomyślałem, żeby opublikować go tutaj, ponieważ jest to dobra ilustracja tego, co można osiągnąć w kodzie powłoki za pomocą potęgi
ssh
. Ale korzystanie z tegossh-copy-id
jest zdecydowanie bezpieczniejszym sposobem, aby zrobić to poprawnie!Pamiętaj, że jeśli folder jeszcze
.ssh
nie istnieje, powyższe polecenie zakończy się niepowodzeniem. Ponadto przy tworzeniu pliku może być lepiej ustawić minimalne możliwe uprawnienia (w zasadzie tylko do odczytu i zapisu tylko dla właściciela). Oto bardziej zaawansowane polecenie:źródło
.ssh
nie istniał po stronie zdalnej.cat
jest to konieczne - wystarczy zwykłe przekierowanie wejścia, np.< ~/.ssh/id_rsa.pub | ssh ...
Metoda graficzna
źródło
seahorse
.W systemie Ubuntu możesz pobrać klucze z Launchpad:
Szczegóły :
Wklej zawartość pliku klucza publicznego w tym polu (w tym komentarz). Taki klucz wygląda jak:
Tutaj
ssh-rsa
wskazuje, że klucz jest kluczem RSA,AAAAB3Nza .... UyDOFDqJp
jest kluczem rzeczywistym ilekensteyn
jest komentarzem.Pakiet
ssh-import-id
musi być zainstalowany na komputerze, do którego dostęp można uzyskać ze zdalnego. Ten pakiet jest instalowany razem zopenssh-server
pakietem, ponieważ jest zalecanym pakietem dlaopenssh-server
. Po upewnieniu się, żessh-import-id
został zainstalowany na komputerze klienckim, uruchom:Spowoduje to pobranie klucza publicznego z serwerów Launchpad przez HTTPS, który chroni cię przed atakami MITM.
Na Ubuntu Lucid i wcześniej można to zrobić za pomocą:
echo
Potrzebne jest polecenie, aby uzyskać dodatkowe przełamane po wierszu z kluczem SSH.źródło
dla niestandardowego portu
-i przełącza domyślnie na ~ / .ssh / id_rsa.pub, jeśli chcesz inny klucz, wstaw ścieżkę klucza po -i
OSTRZEŻENIE: Jeśli nie napisałeś -i, skopiuje wszystkie klucze znalezione w ~ / .ssh
źródło
ssh-copy-id
robi dokładnie to. Nie jestem pewien, dlaczego niektóre inne odpowiedzi tutaj dodają niedokładne informacje. Pomoc pokazuje:Właśnie wypróbowałem następujące na kliencie Ubuntu 18.04 z serwerem CentOS 7.6 i działało to jak urok. Przykład pokazuje użycie niestandardowego portu
2222
i określenie klucza publicznego na~/.ssh/path-to-rsa.pub
Przed uruchomieniem polecenia faktycznie użyłem
-n
przełącznika na końcu, aby wykonać próbę na sucho, która potwierdziła, że polecenie będzie działać zgodnie z przeznaczeniem. Po potwierdzeniu ponownie uruchomiłem polecenie, jak wyżej, bez-n
przełącznika.źródło