Konfigurierter öffentlicher/privater Schlüssel auf CentOS6 - Ich kann mich immer noch ohne privaten Schlüssel verbinden

Konfigurierter öffentlicher/privater Schlüssel auf CentOS6 - Ich kann mich immer noch ohne privaten Schlüssel verbinden

Ich habe einen VPS mit CentOS 6. Mir sind viele Anmeldeversuche über SSH aufgefallen, deshalb möchte ich ihn mit einer schlüsselbasierten Authentifizierung sperren. Hier ist, was ich bisher getan habe...

Folgendes habe ich auf meinem Client-Rechner (OSX) ausgeführt:

ssh-keygen -t rsa

Habe dies mit den Standardeinstellungen gemacht (keine Passphrase, Standardnamen usw.)

Legen Sie die folgenden Berechtigungen auf meinem Client fest

chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_rsa

habe meinen öffentlichen Schlüssel mit dem folgenden Befehl (falscher Name/falsche IP) in das Stammverzeichnis meines Benutzerordners auf meinem VPS kopiert

scp id_rsa.pub [email protected]:/home/fakeuser/id_rsa.pub

Hier fiel mir auf, dass ich KEINE authorized_keys-Datei in meiner .ssh hatte. Also habe ich touch verwendet, um sie zu erstellen. Dann habe ich CAT verwendet, um den Inhalt der .pub in die authorized_keys-Datei zu kopieren

cat id_rsa.pub >> ~/.ssh/authorized_keys

und legen Sie die entsprechenden Berechtigungen für .ssh und authorized_keys fest

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

In /etc/ssh/sshd_config habe ich Folgendes auskommentiert

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys

Ich habe dann sshd neu gestartet

service sshd restart

Soweit ich gelesen habe, ist das alles, was ich tun muss, um die Authentifizierung mit öffentlichem Schlüssel zu aktivieren. Wenn ich jedoch versuche, eine SSH-Verbindung herzustellen, ohne -i privatekey anzugeben, kann ich mich von allen Geräten aus anmelden.

Antwort1

Wenn sich ein Client-Schlüssel am Standardspeicherort befindet, ~/.ssh/id_$algwird er automatisch verwendet, es sei denn, Sie verwenden -o IdentitiesOnly=yes(oder den entsprechenden Eintrag in der Konfigurationsdatei), um ihn zu deaktivieren. Wenn Sie sich von einem Client aus verbinden können, der keine Kopie des privaten Schlüssels hatUndohne Angabe eines Passworts, dann ist die Authentifizierung auf Ihrem Server nicht korrekt eingestellt. Wenn SienurPrivateKey->PublicKey-Authentifizierung, konfigurieren PasswordAuthentication no.

PS: anything >>file(und anything >fileaußerdem) erstellt die Datei, wenn sie nicht existiert, Sie brauchen touchsie nicht. Und das Standard-Remote-Verzeichnis scpist Ihr Home-Verzeichnis, also müssen Sie das normalerweise nicht angeben.

Auch:

RSAAuthenticationist für SSHv1, das vor Jahrzehnten kaputt gegangen ist und nie verwendet werden sollte und seit langer Zeit in allen OpenSSH-Versionen standardmäßig deaktiviert ist und ab 7.4 vollständig von der Serverseite entfernt wurde, obwohl ich annehme, dass CentOS 6 wahrscheinlich nicht über eine so aktuelle Version verfügt.

PubkeyAuthentication yesund AuthorizedKeysFile .ssh/authorized_keys(plus authorized_keys2, das ein Relikt ist und nicht mehr verwendet wird) sind die Standardeinstellungen, Sie müssen sie also nicht auskommentieren.

Antwort2

Sie müssen die Kennwortauthentifizierung auf dem Server explizit deaktivieren, wenn Sie nur öffentliche/private Schlüssel zulassen möchten. /etc/ssh/sshd_configÄndern oder ergänzen Sie in Ihrer Einstellung die folgende Einstellung:

PasswordAuthentication no

Ich möchte auch alle anderen Authentifizierungsarten, die ich nicht verwende, wie Kerberos und GSSAPI, explizit deaktivieren.

verwandte Informationen