OS X bis einschließlich Yosemite
Standardmäßig “lauscht” SSH auf Port 22. Da dies allgemein bekannt ist, macht es Sinn, einen anderen Port zu verwenden, um potentiellen Angreifern das Leben zu erschweren.
Unter OS X muss dazu – als root – an zwei Stellen “geschraubt” werden: Da wäre zunächst die Datei services, die sich im Verzeichnis
/etc
befindet. In dieser Datei legt Ihr einen neuen Eintrag für den neuen SSH-Port an. Soll der Port beispielsweise die Bezeichnung new-ssh erhalten und SSH den Port 49152 verwenden, dann tragt Ihr am Ende der Port-Liste
new-ssh 49152/tcp # new SSH port
ein.
Des Weiteren ist die Datei ssh.plist anzupassen, die sich im Verzeichnis
/System/Library/LaunchDaemons
befindet. Dort müsst Ihr den Eintrag
<key>SockServiceName</key>
<string>ssh</string>
in
<key>SockServiceName</key>
<string>new-ssh</string>
ändern.
Außerdem ist im Abschnitt <array> ebenfalls new-ssh
einzutragen, so dass dieser Teil insgesamt so aussieht:
<key>SockServiceName</key>
<string>new-ssh</string>
<key>Bonjour</key>
<array>
<string>new-ssh</string>
<string>sftp-ssh</string>
</array>
Eine Änderung der ssh.plist erfordert einen Neustart des Systems oder ein reload dieser Datei:
sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load -w /System/Library/LaunchDaemons/ssh.plist
Nun sollte SSH auf dem neuen Port funktionieren und Ihr könnt über die bash mit dem Kommando
ssh -p 49152 -l [benutzername] [ip-adresse-des-ziel-rechners]
eine Verbindung aufbauen.
El Capitan
Aber OS X 10.11 (El Capitan) ist der Aufwand etwas höher. Denn aufgrund des neu eingeführten System Integrity Protection (SIP) ist eine Bearbeitung der Datei ssh.plist nicht mehr möglich. Mit folgenden Schritten kommt Ihr dennoch zum Ziel:
Zunächst legt Ihr in der Datei
/etc/services
einen neuen SSH-Eintrag – wie bereits oben beschrieben – an, z.B.
new-ssh 49152/tcp # new SSH port
Unter El Capitan muss nun von der Datei
/System/Library/LaunchDaemons/ssh-plist
eine Kopie erstellt werden. In diesem Beispiel habe ich die Kopie im Verzeichnis /Library/LaunchDaemons
angelegt:
sudo cp ssh.plist /Library/LaunchDaemons/ssh2.plist
Die Datei ssh2.plist
muss zunächst ein neues Label erhalten. Ändert also
<key>Label</key>
<string>com.openssh.sshd</string>
zu
<key>Label</key>
<string>com.openssh.sshd2</string>
Jetzt ändert Ihr den neuen SSH-Port wie oben beschrieben, so dass der entsprechende Abschnitt folgendermaßen aussieht:
<key>SockServiceName</key>
<string>new-ssh</string>
<key>Bonjour</key>
<array>
<string>new-ssh</string>
<string>sftp-ssh</string>
</array>
Anschließend kann mit
sudo launchctl load -w /Library/LaunchDaemons/ssh2.plist
eine neue Instanz des ssh daemon erzeugt werden. Mit der Anweisung
sudo launchctl unload /Library/LaunchDaemons/ssh2.plist
wird die Datei ssh2.plist nicht weiter genutzt. Ob die neue Port-Einstellung funktioniert, kann mit
netstat -at | grep LISTEN
überprüft werden. Dort solltet Ihr einen Eintrag ähnlich dem folgenden sehen können:
tcp4 0 0 *.new-ssh *.* LISTEN
Anmerkungen
Mit dieser Konfiguration wird Port 22 nicht deaktiviert. Das ist unschädlich, solange dieser Port – z.B. im Router – blockiert wird, so dass er von außen nicht erreichbar ist.
Es gibt auch noch eine Alternative zu dem bisher aufgezeigten Weg:
Nach einem Neustart des Macs kann mittels cmd
+ R
in den Recovery Mode gewechselt werden. Anschließend öffnet Ihr über
--> Dienstprogramme --> Terminal
ein Terminal-Fenster und deaktiviert mit der Anweisung
csrutil disable
die System Integrity Protection.
Dann wird der Mac neu gestartet und Ihr könnt wie – im ersten Teil des Artikels beschrieben – den SSH-Port anpassen. Denn nun lässt sich die Datei
/System/Library/LaunchDaemons/ssh-plist
bearbeiten.
Wenn die Anpassungen erfolgt sind, wird der Rechner wieder im Recovery Mode gestartet, das Terminal aufgerufen und mit der Anweisung
csrutil enable
die System Integrity Protection aktiviert. Nach einem weiteren Neustart sollte nun der neue SSH-Port zur Verfügung stehen.