Jak mogę włączyć uwierzytelnianie za pomocą hasła i klucza publicznego za pomocą OpenSSH

10

Chciałbym, aby sshd zweryfikował klucz publiczny użytkowników, a następnie poprosił o podanie hasła, a nie tylko jednego lub drugiego. czy to możliwe?

niespodzianka_
źródło

Odpowiedzi:

12

Jest to wreszcie dostępne od wersji OpenSSH 6.2 (wydanej w marcu 2013 r.), Przy użyciu AuthenticationMethodsopcji konfiguracji.

Na przykład możesz dodać następujący wiersz, sshd_configaby wymagać zarówno uwierzytelnienia za pomocą klucza publicznego, jak i hasła:

AuthenticationMethods publickey,password

Po zalogowaniu się sshi scpnajpierw wykonać uwierzytelnianie klucza publicznego, a następnie monit o hasło:

$ ssh [email protected]
Authenticated with partial success.
[email protected]'s password:

Jeśli masz hasło do pliku klucza prywatnego, oczywiście najpierw zostaniesz o to poproszony. Przykład użycia PuTTY :

Using username "user".
Authenticating with public key "rsa-key-20131221-user"
Passphrase for key "rsa-key-20131221-user":
Further authentication required
[email protected]'s password:
Søren Løvborg
źródło
1

OpenSSH w RHEL / CentOS 6.3 obsługuje teraz tę funkcję, chociaż nie mogę znaleźć jej wspomnianej w informacjach o wydaniu OpenSSH. Z informacji o wersji RHEL :

SSH można teraz skonfigurować tak, aby wymagało wielu sposobów uwierzytelnienia (podczas gdy wcześniej SSH dopuszczał wiele sposobów uwierzytelnienia, z których tylko jeden był wymagany do pomyślnego logowania); na przykład zalogowanie się na maszynie obsługującej SSH wymaga podania zarówno hasła, jak i klucza publicznego. W pliku można skonfigurować opcje RequiredAuthentications1i, aby określić uwierzytelnienia wymagane do pomyślnego zalogowania. Na przykład:RequiredAuthentications2/etc/ssh/sshd_config

  ~]# echo "RequiredAuthentications2 publickey,password" >> /etc/ssh/sshd_config

Więcej informacji na temat wyżej wymienionych /etc/ssh/sshd_configopcji można znaleźć na sshd_configstronie podręcznika użytkownika .

mgorven
źródło
0

Jest to możliwe, ale w sposób kludgish i ograniczony. Najpierw zezwalasz tylko na uwierzytelnianie za pomocą klucza publicznego. Następnie /etc/ssh/sshd_configdodaj ForceCommandskrypt uruchamiający skrypt, który sprawdzi hasło.

Skrypt złamie SFTP, chyba że sprawdzisz, czy polecenie to sftp i przepuścisz je bez hasła.

Nigdy tego nie próbowałem, aby ktoś mógł zobaczyć więcej problemów.

Mark Wagner
źródło