Lösung 1:
Versuchen Sie es mit Match
in sshd_config
:
Match User user1,user2,user3,user4
PasswordAuthentication no
Oder nach Gruppe:
Match Group users
PasswordAuthentication no
Oder, wie im Kommentar erwähnt, durch Negation:
Match User !root
PasswordAuthentication no
Beachten Sie, dass die Übereinstimmung "bis entweder zu einer weiteren Übereinstimmungszeile oder bis zum Ende der Datei" wirksam ist. (der Einzug ist nicht signifikant)
Lösung 2:
Match
in sshd_config
funktioniert gut. Sie sollten Match all
verwenden um den Übereinstimmungsblock zu beenden, wenn Sie openssh 6.5p1 oder höher verwenden. Beispiel:
PasswordAuthentication no
Match User root
PasswordAuthentication yes
Match all
Lösung 3:
Es gibt ein paar Möglichkeiten, wie Sie dies tun können - erstens könnten Sie möglicherweise einen zweiten sshd-Daemon auf einem anderen Port mit unterschiedlicher Konfiguration ausführen - es ist ein bisschen wie ein Hack, aber mit etwas Chroot-Arbeit sollte es gut funktionieren.
Sie könnten auch die Kennwortauthentifizierung zulassen, aber die Kennwörter für alle außer einem Benutzer sperren. Die Benutzer mit gesperrten Passwörtern können sich weiterhin mit öffentlichen Schlüsseln authentifizieren.