linux ssh Certificate‐Based Authentication - ghdrako/doc_snipets GitHub Wiki
- https://goteleport.com/blog/how-to-configure-ssh-certificate-based-authentication/
- https://www.digitalocean.com/community/tutorials/how-to-configure-ssh-key-based-authentication-on-a-linux-server
- https://smallstep.com/blog/use-ssh-certificates/
Unieszczenie certa jako wlasciciel konta
ssh-copy-id username@remote_host
ssh-copy-id -p 3022 [email protected]
or
Configure sshd to trust certyficates signed by user_ca.pub
/etc/ssh/sshd_config:
TrustedUserCAKeys /etc/ssh/user_ca.pub
systemctl restart sshd
Umieszczenie certa userowi z root-a
Klucz publiczny użytkownika należy umieścić w pliku authorized_keys w jego katalogu domowym na serwerze. Oto kroki:
- Zaloguj się na serwerze jako ten sam użytkownik (lub jako root, jeśli dodajesz klucz dla innego konta):
ssh root@twoj-serwer
- Utwórz (jeśli nie istnieje) katalog .ssh w katalogu domowym użytkownika:
mkdir -p /home/nazwa_uzytkownika/.ssh
Ustaw odpowiednie prawa dostępu do tego katalogu:
chown nazwa_uzytkownika:nazwa_uzytkownika /home/nazwa_uzytkownika/.ssh
chmod 700 /home/nazwa_uzytkownika/.ssh
- Dodaj klucz publiczny do pliku authorized_keys:
- Jeśli masz plik id_rsa.pub lokalnie, możesz przesłać go np. przez scp:
scp id_rsa.pub root@twoj-serwer:/tmp/id_rsa.pub
Następnie na serwerze:
cat /tmp/id_rsa.pub >> /home/nazwa_uzytkownika/.ssh/authorized_keys
rm /tmp/id_rsa.pub
- Ustaw prawa dostępu do pliku authorized_keys:
chown nazwa_uzytkownika:nazwa_uzytkownika /home/nazwa_uzytkownika/.ssh/authorized_keys
chmod 600 /home/nazwa_uzytkownika/.ssh/authorized_keys
- Sprawdź ustawienia SSH w /etc/ssh/sshd_config, aby mieć pewność, że linie te nie są zakomentowane i mają wartości:
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
Jeśli coś zmienisz, zrestartuj demona SSH:
systemctl restart sshd
Przetestuj logowanie z maszyny klienckiej:
ssh -i ~/.ssh/id_rsa nazwa_uzytkownika@twoj-serwer
Jeżeli wszystko jest poprawnie skonfigurowane, połączenie nie poprosi o hasło, a zalogujesz się kluczem publicznym. Uwaga:
Jeśli serwer wykorzystuje SELinux, może być konieczne ustawienie kontekstu:
restorecon -R -v /home/nazwa_uzytkownika/.ssh
Dla konta root katalog to /root/.ssh/authorized_keys.