Możemy zamarzyć sobie mapowanie katalogu przez sshd, które będzie odbywać się w czasie startu systemu. Tylko trzeba by jakoś zorganizować wpisywanie hasła, ale nie zawsze człowiek siedzi przy konsoli.
Jednym z rozwiązań jest wymiana kluczy publicznych.
Uwaga! Nie jest to rozwiązanie idealne, ktoś może nam się włamywać do kolejnych serwerów, z którymi mamy wymienione klucze!
1. Jesteśmy zalogowani na naszej maszynie. Generujemy parę kluczy
$cd
$mkdir .ssh
$ssh-keygen -t dsa -f .ssh/id_dsa
Ponieważ nie chcemy mieć hasła, dwa razy wciskamy enter nic nie wpisując.
W katalogu .ssh powstały pliki id_dsa oraz id_dsa.pub, ten drugi to klucz publiczny.
$scp id_dsa.pub user@serwer:~/.ssh/id_dsa.pub
Logujemy się na serwer.
$ssh user@serwer
i oczywiście podajemy hasło
Teraz już na serwerze
$cd .ssh
#Następnie dodajemy klucz publiczny klienta
# do znanych kluczy publicznych na serwerze:
$ cat id_dsa.pub >> authorized_keys2
#zmieniamy prawa dostępu do kluczy
$ chmod 640 authorized_keys2
#i usuwamy zbędne klucze:
$ rm id_dsa.pub
#opuszczemy serwer:
$ exit
Teraz możemy sprawdzić automatyczne logowanie:
$ssh user@serwer
Zalogowanie powinno przejść bez pytania o hasło. Przynajmniej u mnie tak działa.
Rany boskie jakie to wszystko skomplikowane!
WrÄ™cz przeciwnie 🙂
Czy można zrobić aby użytkownik był sam logowany za pomocą kluczy na tym samym serwerze?
Np. uruchamia się serwe1 i jest logowany automatycznie przez ssh user1 znajdujący się serwer1(chodzi oczywiście o zwykłego usera nie o root-a).
Może poleceniem ssh -2 -fN user1@serwer1?