No se puede conectar SSH al servidor OS X a través de un puerto alternativo

Mac mini con OS X Server 10.11.6, CommuniGate Pro y casi ningún otro servicio de OS X Server.

El propietario del servidor se encontró recientemente en una red que bloqueaba puertos para conexiones VPN y SSH, por lo que estamos tratando de configurar el servidor para permitir un túnel SSH a través del proxy SOCKS al puerto 443, que casi siempre se deja abierto. (No tenemos planes de ejecutar servicios web en ese puerto en esta caja).

Las investigaciones indican que este debería ser un proceso de dos pasos: 1) editar /Library/Server/Web/Config/Proxy/apache_serviceproxy.conf para eliminar los oyentes web en los puertos 80 y 443; 2) edite /etc/ssh/ssh_config para agregar un oyente SSH en el puerto 443; luego reiniciar.

Al hacerlo, los servicios HTTP están desactivados en 80 y 443, pero no puedo conectarme a SSH en el puerto 443. Todavía funciona bien en 22. Nmapping el servidor indica que no hay nada abierto en el puerto 443. ¿Hay algo más que deba hacer para abrir esto?

Respuestas (1)

Estos son los pasos para hacer que SSH escuche en el puerto 443. Tenga en cuenta que si tiene SIP deshabilitado, puede editar directamente (como root) /System/Library/LaunchDaemons/ssh.plist y, por lo tanto, puede omitir los pasos 1 y 3, y usar lo anterior ruta en los pasos 2 y 5. Tenga en cuenta que en ese caso querrá ejecutar el unloadcomando antes de editar ssh.plist.

  1. Copie el archivo ssh.plist existente en /Librería:

    sudo cp /System/Library/LaunchDaemons/ssh.plist /Library/LaunchDaemons/ssh2.plist
    
  2. Edite el archivo como root:

    sudo nano /Library/LaunchDaemons/ssh2.plist
    
  3. Hay dos cosas que hay que cambiar. Primero es el <Label>. Cambia esto:

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

    A algo como esto:

    <key>Label</key>
    <string>com.openssh.sshd443</string>
    
  4. A continuación, cambie esto:

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

    A esto:

                    <key>SockServiceName</key>
                    <string>443</string>
    
  5. Guarde y luego ejecute este comando para cargar el servicio:

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

    Si alguna vez necesita descargarlo, puede hacerlo con:

    sudo launchctl unload /Library/LaunchDaemons/ssh2.plist
    
Excelente gracias. Probaré esto inmediatamente. ¿Debo volver a editar el archivo ssh_config a su configuración original? Parece que no se están utilizando.
No creo que se use, pero no estoy seguro de eso.
Funciona a las mil maravillas. Tú Molas. ¡Gracias, tanto por la respuesta como por lo rápido que lo escribiste!
Intenté esto en una MacBook Pro con Mojave 10.14.6, y todo con la creación y carga del nuevo demonio (en la biblioteca global, no en la biblioteca del sistema) funcionó bien, pero cuando intento conectarme a la Mac usando mi iPhone con Panic's Prompt 2, la conexión falla. Estoy tratando de conectarme directamente a la dirección IP, pero mi AP/enrutador todavía está en el medio. ¿Necesito darle a mi Mac algo como un nombre de dominio DynDNS para que esto funcione?
Debo agregar que no estoy ejecutando la aplicación macOS Server y que la conexión directa a la Mac con SSH en el puerto 443 en la red local funciona bien. Entonces, solo se trata de llegar a la Mac desde una ubicación remota con SSH en el puerto 443 a través de un enrutador (cualquier enrutador, para el caso).
@JayB Su enrutador está descartando los paquetes porque no está claro a dónde deben ir (no responden a una solicitud realizada por una computadora dentro de la red). Debe configurar el reenvío de puertos en el enrutador para el puerto 443 a la computadora adecuada dentro de su red para que su enrutador sepa dónde se supone que se entregarán los paquetes.
Sí, pero en su lugar probablemente configuraré un túnel SSH inverso a través de un servidor remoto. Necesito poder acceder a mi Mac, incluso cuando no esté conectado a mi red doméstica.