SSH zu OS X Server über alternativen Port nicht möglich

Mac mini mit OS X Server 10.11.6, CommuniGate Pro und fast keinen anderen standardmäßigen OS X Server-Diensten.

Der Besitzer des Servers befand sich kürzlich in einem Netzwerk, das Ports sowohl für VPN-Verbindungen als auch für SSH blockierte, also versuchen wir, den Server so einzurichten, dass er einen SSH-Tunnel über den SOCKS-Proxy zu Port 443 zulässt, der fast immer offen bleibt. (Wir haben keine Pläne, Webdienste über diesen Port auf dieser Box auszuführen.)

Untersuchungen zeigen, dass dies ein zweistufiger Prozess sein sollte: 1) /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf bearbeiten, um Web-Listener auf den Ports 80 und 443 zu entfernen; 2) Bearbeiten Sie /etc/ssh/ssh_config, um einen SSH-Listener auf Port 443 hinzuzufügen; dann neustarten.

Dabei werden die HTTP-Dienste tatsächlich auf 80 und 443 deaktiviert, aber ich kann keine Verbindung zu SSH auf Port 443 herstellen. Funktioniert immer noch gut über 22. Nmapping des Servers zeigt an, dass auf Port 443 nichts offen ist. Muss ich noch etwas tun, um dies zu öffnen?

Antworten (1)

Hier sind die Schritte, um SSH zum Abhören von Port 443 zu bringen. Beachten Sie, dass Sie, wenn Sie SIP deaktiviert haben, /System/Library/LaunchDaemons/ssh.plist direkt bearbeiten können (als Root) und daher die Schritte 1 und 3 überspringen und die obigen verwenden können Pfad in den Schritten 2 und 5. Beachten Sie, dass Sie in diesem Fall den Befehl ausführen sollten, unloadbevor Sie ssh.plist bearbeiten.

  1. Kopieren Sie die vorhandene ssh.plist-Datei in /Library:

    sudo cp /System/Library/LaunchDaemons/ssh.plist /Library/LaunchDaemons/ssh2.plist
    
  2. Bearbeiten Sie die Datei als root:

    sudo nano /Library/LaunchDaemons/ssh2.plist
    
  3. Es gibt zwei Dinge, die geändert werden müssen. Zuerst ist die <Label>. Ändere das:

    <key>Label</key>
    <string>com.openssh.sshd</string>
    

    Zu so etwas:

    <key>Label</key>
    <string>com.openssh.sshd443</string>
    
  4. Als nächstes ändern Sie dies:

                    <key>SockServiceName</key>
                    <string>ssh</string>
    

    Dazu:

                    <key>SockServiceName</key>
                    <string>443</string>
    
  5. Speichern Sie diesen Befehl und führen Sie ihn dann aus, um den Dienst zu laden:

    sudo launchctl load -w /Library/LaunchDaemons/ssh2.plist
    

    Wenn Sie es jemals entladen müssen, können Sie dies tun mit:

    sudo launchctl unload /Library/LaunchDaemons/ssh2.plist
    
Ausgezeichnet, vielen Dank. Das probiere ich gleich aus. Soll ich die ssh_config-Datei auf ihre ursprünglichen Einstellungen zurücksetzen? Klingt so, als würden sie nicht verwendet.
Ich glaube nicht, dass es verwendet wird, aber ich bin nicht sicher.
Wirkt bezaubernd. Du rockst. Danke, sowohl für die Antwort als auch dafür, wie schnell Sie es geschrieben haben!
Ich habe das auf einem MacBook Pro mit Mojave 10.14.6 ausprobiert, und das Ganze mit dem Erstellen und Laden des neuen Daemons (in der globalen Bibliothek, nicht der Systembibliothek) hat gut funktioniert, aber wenn ich versuche, mich mit meinem iPhone mit dem Mac zu verbinden mit Panic's Prompt 2 schlägt die Verbindung fehl. Ich versuche, mich direkt mit der IP-Adresse zu verbinden, aber mein AP/Router sitzt immer noch dazwischen. Muss ich meinem Mac so etwas wie einen DynDNS-Domänennamen geben, damit dies funktioniert?
Ich sollte hinzufügen, dass ich die macOS Server-App nicht ausführe und dass die direkte Verbindung zum Mac mit SSH auf Port 443 im lokalen Netzwerk einwandfrei funktioniert. Es geht also nur darum, den Mac von einem entfernten Standort mit SSH auf Port 443 über einen Router (jeden beliebigen Router) zu erreichen.
@JayB Ihr Router verwirft die Pakete, da nicht klar ist, wohin sie gehen sollen (sie sind keine Antwort auf eine Anfrage eines Computers innerhalb des Netzwerks). Sie müssen auf dem Router eine Portweiterleitung für Port 443 auf den entsprechenden Computer in Ihrem Netzwerk einrichten, damit Ihr Router weiß, wohin die Pakete zugestellt werden sollen.
Ja, aber stattdessen werde ich wahrscheinlich einen umgekehrten SSH-Tunnel über einen Remote-Server einrichten. Ich muss meinen Mac erreichen können, auch wenn er nicht in mein Heimnetzwerk eingeloggt ist.