Ostatnio bardzo często za pomocą głównego serwera roboczego łączę się do maszyn klientów poprzez SSH. Niestety za każdym razem muszę podawać hasło, a nie lubię utrzymywać niepotrzebnie przez cały dzień połączeń do wszystkich maszyn.
Dzisiaj postanowiłem to zmienić. Z jednej strony z wygodnictwa, a z drugiej ze względu bezpieczeństwa bo nie tylko ja jestem przy maszynie podczas logowań. Cała sprawa jest bardzo prosta i potrzebujemy na to tylko kilka minut.
Host-1 to maszyna robocza, host-2 maszyna zdalna, do której chcemy łączyć się bez podawania hasła.
Najpierw musimy wygenerować klucz, którym będzie się posługiwać:
1 2 3 4 5 6 7 8 |
matipl@host-1:~$ ssh-keygen -t rsa Generating public/private rsa key pair. Enter file in which to save the key (~/.ssh/id_rsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in ~/.ssh/id_rsa. Your public key has been saved in ~/.ssh/id_rsa.pub. The key fingerprint is: |
Na wszelki wypadek utwórzmy katalog .ssh na zdalnej maszynie:
1 2 |
matipl@host-1:~$ ssh matipl@host-2 mkdir -p .ssh matipl@host-2's password: |
Teraz wystarczy tylko wysłać nasz klucz publiczny:
1 2 |
matipl@host-1:~$ cat .ssh/id_rsa.pub | ssh matipl@host-2 'cat .ssh/authorized_keys' matipl@host-2's password: |
To wszystko, możemy się już logować bez podawania hasła lub wywoływać bezpośrednio polecenia na zdalnej maszynie:
1 |
matipl@hobbiton:~$ ssh matipl@host-2 |