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.

Chris Dale
źródło

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.

Carsten Thiel
źródło
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.

Tom O'Connor
źródło
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 .

wolfgangsz
źródło