Hasło, które można ustawić na kluczu prywatnym, nie jest powiązane z serwerem SSH ani z połączeniem z nim. Ustawienie hasła do klucza prywatnego jest jedynie środkiem bezpieczeństwa, który właściciel klucza może podjąć, aby uniemożliwić dostęp do jego zdalnej powłoki przez osobę trzecią w przypadku kradzieży klucza prywatnego.
Niestety nie można zmusić użytkowników do zabezpieczenia swoich kluczy prywatnych za pomocą haseł. Czasami niezabezpieczone klucze prywatne są wymagane w celu zautomatyzowania dostępu do zdalnego serwera SSH. Jeden dobry zwyczaj ja bardzo polecam dla takich przypadków jest doradzanie użytkownikom hash z known_hosts pliku (przechowywany w ~ / .ssh / known_hosts ), który przechowuje informacje o zdalnych hostach że użytkownik łączy się za pomocą następującego polecenia:
ssh-keygen -H -f ~/.ssh/known_hosts
W ten sposób, nawet jeśli strona trzecia uzyska dostęp do niechronionego klucza prywatnego, niezwykle trudno będzie ustalić, dla których zdalnych hostów ten klucz jest ważny. Oczywiście, wyczyszczenie historii powłok jest obowiązkowe, aby ta technika miała jakąkolwiek wartość.
Inną rzeczą, o której zawsze powinieneś pamiętać, jest to, że root nie może logować się zdalnie, dodając następujące elementy w konfiguracji serwera SSH (sshd_config):
PermitRootLogin no
Z drugiej strony, jeśli chcesz uniemożliwić użytkownikom używanie kluczy do uwierzytelniania, ale zamiast tego używać haseł, powinieneś dodać następujące elementy do swojego sshd_config :
PasswordAuthentication yes
PubkeyAuthentication no
Urodzony by jeździć
źródło
Jednym ograniczeniem byłoby użycie wtyczki modułu PAM modułu uwierzytelniającego Google. Zwykle dostępny w oficjalnych pakietach.
Dzięki temu 2FA będzie dostępne za pośrednictwem 6-cyfrowego kodu w smartfonie.
Instrukcje tutaj: Jak skonfigurować uwierzytelnianie wieloskładnikowe dla SSH na Ubuntu 16.04
źródło
PROSTE, po prostu rozszerzasz protokół SSH, tak aby klient SSH lub agent SSH raportował / ustawiał flagę informującą, czy oryginalny klucz prywatny został zaszyfrowany, czy nie (być może strona serwera może nawet zadać zapytanie) - ponieważ strona klienta ma widoczność klucza prywatnego, a nawet monituje o hasło, gdy klucz jest zaszyfrowany.
źródło