Verwendung von SSH-Schlüsseln und Deaktivieren der Kennwortauthentifizierung

12

Ich versuche, über SSH von einem Linux-Client-Computer aus remote auf einen Mac zuzugreifen (ich habe physischen Zugriff auf diesen Mac). Mein Ziel ist es, von außerhalb des Netzwerks auf diesen Mac zuzugreifen. Die Portweiterleitung ist auf dem Router eingerichtet. Von meinem Client-Computer aus kann ich ssh user@ipdie öffentliche IP-Adresse eingeben und auf den Mac zugreifen, sodass die Portweiterleitung funktioniert.

Jetzt möchte ich SSH-Schlüssel einrichten. Ich habe SSH-Schlüssel auf meinem Client-Computer generiert, wollte aber zuerst den SSH-Daemon auf dem Mac-Setup installieren. Ich habe bearbeitet /etc/ssh_configund eingestellt PasswordAuthentication no. Ich habe SSH mit diesen Befehlen neu gestartet : sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist, dann sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist. Wenn ich erneut versuche, vom Client aus eine SSH-Verbindung herzustellen, werden Sie weiterhin nach meinem Kennwort gefragt.

Ich habe mir diesen Beitrag angesehen und UsePAM noanhand der Antwort, die ich zur Konfigurationsdatei hinzugefügt und den Dienst launchctlerneut gestartet habe . Ich werde immer noch zur Eingabe eines Passworts aufgefordert.

Ich habe auch hier die Lösung ausprobiert . Ich werde immer noch zur Eingabe eines Passworts aufgefordert.

Wie richte ich mein ssh_configso ein, dass es nicht nach dem Passwort fragt und nur SSH-Schlüssel akzeptiert? Starten Sie den Daemon nicht ordnungsgemäß neu? Gibt es noch einen Schritt, den ich vermisse?

beznez
quelle

Antworten:

13

Ich habe die falsche Konfigurationsdatei bearbeitet! Stattdessen habe /etc/ssh_configich bearbeitet private/etc/sshd_config. Ich denke, das hätte wahrscheinlich auch funktioniert, wenn ich /etc/sshd_configgemäß der aktualisierten Antwort von @GhostLyrics bearbeitet hätte, aber ich habe das noch nicht getestet, daher kann ich nicht sicher sagen. Danach habe ich den Dienst mit sudo launchctl stop com.openssh.sshdund dann neu gestartet sudo launchctl start com.openssh.sshdund konnte mein gewünschtes Verhalten erreichen. Hier ist die Ressource, in der ich die relevanten Informationen gefunden habe: /superuser/364304/how-do-i-configure-ssh-on-os-x

Hier sind die Konfigurationsoptionen, die ich geändert habe:

PermitRootLogin no
PasswordAuthentication no
PermitEmptyPasswords no
ChallengeResponseAuthentication no

Danach konnte ich erfolgreich SSH-Schlüssel auf meinem Client-Computer generieren, den öffentlichen Schlüssel ~/.ssh/authorized_keysauf den Mac verschieben und die Berechtigungen für diese Datei auf 644 setzen.

Es ist wichtig zu beachten, dass diese Berechtigungen für meinen öffentlichen Schlüssel gelten . Meine privaten Schlüsselberechtigungen sind auf meinem Clientcomputer auf 600 festgelegt. Dies ist sehr wichtig, wenn Sie sowohl Ihren öffentlichen als auch Ihren privaten Schlüssel in Ihrem ~/.sshOrdner haben und mehrere Benutzer im System sind. Wenn Ihre Berechtigungen für private Schlüssel auf 644 festgelegt sind, kann jeder Benutzer Ihren privaten Schlüssel lesen und sich als Sie ausgeben. Außerdem sollten die Berechtigungen für den ~/.sshOrdner 700 betragen.

beznez
quelle
5
Intern /etc/sshd_configund /private/etc/sshd_configsind die gleiche Datei. :)
GhostLyrics
8

/etc/ssh/ssh_configist die Konfigurationsdatei für den Client, die verwendet wird, wenn Sie keine spezifischere in Ihrem Home-Verzeichnis haben. Was Sie bearbeiten möchten, ist /etc/ssh/sshd_configdas für den Server.

Sie werden wahrscheinlich PermitRootLogin without-password(oder no) und PasswordAuthentication nodort setzen wollen.


Update: Da Sie Yosemite ausführen, entspricht die Datei /etc/sshd_configdieser Antwort: https://apple.stackexchange.com/a/167405/11135

Um weiter auszuarbeiten , warum es immer noch Eingabeaufforderungen bei der Einstellung PasswordAuthentication noin ist /etc/ssh/ssh_configes wichtig zu verstehen , was Sie konfiguriert. "Wenn Sie eine ausgehende Verbindung über SSH herstellen, bieten Sie keine Kennwortauthentifizierung an."

GhostLyrics
quelle
Ich habe keine /etc/ssh/ssh_config, nur eine /etc/ssh_config. Ich laufe auf Yosemite. Ich habe es versucht, PasswordAuthentication noaber es fordert mich immer noch zur Eingabe des Passworts auf.
Beznez
Ah ich sehe. Das will ich nicht. Ich möchte mit Schlüsseln und ohne Passwort von meinem Linux-Client auf den Mac SSH. Was muss ich für eine eingehende Verbindung ändern ?
Beznez
/etc/sshd_configPasswordAuthentication no. Entschuldigung für die Verwirrung. Bitte lassen Sie mich wissen, wie ich die Antwort klarer machen kann. :)
GhostLyrics
Ich bekomme immer noch das gleiche Verhalten. Ich werde zur Eingabe eines Kennworts aufgefordert, wenn ich vom Linux-Computer auf den Mac ssh.
Beznez
Lassen Sie uns dies im Chat fortsetzen chat.stackexchange.com/rooms/info/34931/…
GhostLyrics