Jak wyeksportować klucz publiczny mojego SSH?


12

Muszę skonfigurować sesje ssh między dwoma serwerami i nie chcę, aby skrypt wypełniał nazwę użytkownika i hasło za każdym razem.

Jednak nie mogę się dowiedzieć, skąd serwer SSH korzysta z konfiguracji.

bash-2.05# ssh -V
Sun_SSH_1.1, SSH protocols 1.5/2.0, OpenSSL 0x0090700f

Mam plik z plikami certyfikatów w / etc / ssh / i ~ / .ssh /. Mogę znaleźć tylko jeden plik konfiguracyjny dla SSH i znajduje się on w / etc / ssh / ssh_config, ale nie zawiera danych (wszystko jest zakomentowane).

Czy ktoś wie, jak mogę dowiedzieć się, gdzie jest przechowywany certyfikat lub w jaki sposób mogę go wyeksportować, aby przenieść go na inny serwer? Miałem nadzieję, że pliki konfiguracyjne dadzą mi odpowiedź, ale nie zapewniają żadnej pomocy.

Odpowiedzi:


17

Zakładając, że masz na myśli uwierzytelnianie za pomocą klucza publicznego na poziomie użytkownika przez „certyfikat” i utworzyłeś je przy użyciu ssh-keygendomyślnej lokalizacji, powinny one znajdować się w miejscu, w którym znajdzie je Twój klient ssh. Klucz składa się z części prywatnej, zwykle przechowywanej w ~/.ssh/id_rsaoraz części publicznej w ~/.ssh/id_rsa.pub. Ostatni będzie musiał zostać przesłany na zdalny serwer, zwykle do ~/.ssh/authorized_keys.

Najłatwiejszym sposobem przeniesienia klucza na inny serwer jest użycie ssh-copy-idkomputera docelowego. Jeśli użyłeś domyślnej lokalizacji podczas tworzenia, ten klucz zostanie automatycznie użyty.

Uwaga, to /etc/ssh/ssh_configjest dla klienta. Na serwerze będziesz musiał spojrzeć /etc/ssh/sshd_config. W twojej konfiguracji oba serwery będą służyć zarówno jako klient ssh, jak i serwer ssh, więc musisz spojrzeć na oba pliki na obu końcach.


Mam to działa. Dziękuję Ci. Jedyne, co musiałem zrobić dodatkowo, to na moim kliencie musiałem określić parametr -i (tożsamość) wskazujący na klucz prywatny.
Chris Dale

2

Musisz znaleźć klucz publiczny ssh dla użytkownika, który będzie użytkownikiem logowania dla skryptu.

Na przykład, jeśli mam serwer A i serwer B, zrobiłbym następujące.

sudo adduser scriptrunner
...
sudo su - scriptrunner
ssh-keygen
...
cat .ssh/id_rsa.pub
ssh-rsa AAAAB3Nza...... scriptrunner@serverA

następnie zrób coś podobnego na ServerB

Następnie na serwerze A wciśnij klucz publiczny użytkownika scriptrunner serwera B do /home/scriptrunner/.ssh/authorized_keys

i postępuj odwrotnie na serwerze B (używając użytkownika scriptrunner serwera A w kluczach autoryzowanych /home/scriptrunner/.ssh/authorized_keysna serwerze B)

Następnie powinieneś być w stanie zrobić ssh scriptrunner@serverAz serwera B za pomocą klucza i odwrotnie.

Możesz także użyć ssh-copy-iddo wykonania klucza autoryzowanego_klucza.


1

Aby ustanowić połączenie ssh z uwierzytelnianiem klucza publicznego, użytkownik inicjujący połączenie musi mieć parę kluczy publiczny / prywatny. W wielu dystrybucjach linuksowych klucze te nie są generowane domyślnie i muszą zostać wygenerowane przez samego użytkownika (lub przez administratora w ich imieniu).

Jeśli jesteś zalogowany jako odpowiedni użytkownik, przejdź do katalogu domowego i uruchom

ssh-keygen

Zaakceptuj wszystkie wartości domyślne, a nowa para kluczy zostanie utworzona w plikach ~ / .ssh / id_rsa i ~ / .ssh / id_rsa.pub. Teraz skopiuj klucz publiczny i wklej go do pliku ~ / .ssh / Author_keys konta użytkownika docelowego na komputerze docelowym. Następnie włącz uwierzytelnianie za pomocą klucza publicznego na komputerze docelowym (w / etc / ssh / sshd_config) i powinieneś już iść.

UWAGA : istnieje wiele możliwych pułapek w tym procesie, gdy robisz to po raz pierwszy. Wszystkie uprawnienia muszą być poprawne, a pliki muszą znajdować się we właściwych miejscach. Prawdopodobnie najlepiej jest postępować zgodnie z instrukcją podobną do tej .

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.