59 votos

Cómo cambiar sshd puerto en Mac OS X?

Quiero cambiar el puerto que sshd usos en un servidor Mac. Por ejemplo, digamos que desde el puerto 22 a puerto 32.

La edición de /etc/sshd_config no parece funcionar. ¿Alguien sabe cómo cambiar? Prefiero un método que es compatible con todas las versiones de OSX (o tantos como sea posible, al menos).

67voto

AlberT Puntos 6591

Cada respuesta anterior es de trabajo (como google suggest demasiado), pero son sucios y poco elegante.

La forma correcta de cambiar el puerto de escucha para un launchd manejado servicio en Mac OS X es realizar los cambios de las teclas dedicadas disponibles en ssh.plist

Así que la solución es tan simple como usar el número de puerto en lugar del nombre del servicio.

Un extracto de mi editada /System/Library/LaunchDaemons/ssh.plist:

    <key>Sockets</key>
    <dict>
            <key>Listeners</key>
            <dict>
                    <key>SockServiceName</key>
                    <string>22022</string>
                    <key>SockFamily</key>
                    <string>IPv4</string>
                    <key>Bonjour</key>
                    <array>
                            <string>22022</string>
                    </array>
            </dict>
    </dict>

Los anteriores también fuerza sshd para escuchar sólo a través de IPV4.

Después de hacer cualquier cambio a ssh.plist, el archivo debe ser recargada como sigue:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

Tenga en cuenta que el uso de launchctl stop ... y launchctl start ... NO cargar este archivo.

El hombre de la página con más información se puede encontrar tecleando man launchd.plist o usando este enlace.

18voto

Raim Puntos 306

Si desea sshd para que escuche en un puerto adicional, usted puede agregar múltiples entradas a los Zócalos diccionario.

Ejemplo:

<key>Sockets</key>
<dict>
        <key>Listeners</key>
        <dict>
                <key>SockServiceName</key>
                <string>ssh</string>
                <key>Bonjour</key>
                <array>
                        <string>ssh</string>
                        <string>sftp-ssh</string>
                </array>
        </dict>
        <key>Listeners2</key>
        <dict>
                <key>SockServiceName</key>
                <string>22022</string>
        </dict>
</dict>

6voto

Cedric Puntos 1

Por lo que he leído (y experimentado) hasta el momento, hay tres métodos principales que se pueden utilizar:

  1. cambiar la configuración del ssh.plist archivo;
  2. cambiar la configuración en el archivo /etc/services;
  3. cambiar la configuración en /etc/sshd.conf archivo.

Otra manera de hacerlo, que yo personalmente, por mucho, prefiero a todos y cada uno de estos métodos, porque evita jugar con Mac OS X los archivos del sistema es el uso de socat para redirigir el puerto 22 para cualquiera que sea el puerto que desee.

  1. Descargar socat: http://www.dest-unreach.org/socat/download/socat-1.7.1.3.tar.gz
  2. Mover el tar.gz archivo en /usr/local/ directorio (sudo mv ./socat-1.7.1.3.tar.gz /usr/local/socat-1.7.1.3.tar.gz)
  3. Vaya a su directorio /usr/local (cd /usr/local)
  4. Descomprimir: sudo tar -xvzf socat-1.7.1.3.tar.gz
  5. Mover el archivo sin comprimir el directorio: cd ./socat-1.7.1.3
  6. Ejecutar el habitual configure, make y make install para instalar socat (sudo ./configure && sudo make && sudo make install)
  7. Redirigir el puerto 22 (por defecto ssh) a cualquier puerto que desea (en la siguiente ex., 2222) usando la opción correcta mediante el envío de un socat de la llamada (sudo socat TCP-LISTEN:2222,reuseaddr,fork TCP:localhost:22)

Está hecho y su mac os x los archivos del sistema se deja sin cambios. Además, este método no sólo funciona en Snow Leopard, pero en todas las versiones de Mac OS X y también en cualquier máquina en la que socat puede ejecutar.

La última cosa que usted necesita hacer si utiliza un router/firewall es incluir la correcta redirigir los comandos en el router/firewall.

También, evita quedarse atascado en el debate de si el ssh.plist método, el método de servicios o cualquiera que sea el método mejor, más elegante o peor que el otro.

Usted también puede preparar fácilmente una secuencia de comandos que se ejecuta en el arranque para reconstruir el socat redirección de cada uno de reiniciar su máquina. El lugar esta en /Library/LaunchDaemons/com.serverfault.sshdredirect.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>com.serverfault.sshdredirect</string>
    <key>KeepAlive</key>
    <dict>
        <key>NetworkState</key>
        <true/>
    </dict>
    <key>RunAtLoad</key>
    <true/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/local/bin/socat</string>
        <string>TCP-LISTEN:2224,reuseaddr,fork</string>
        <string>TCP:localhost:22</string>
    </array>
</dict>
</plist>

Uso sudo launchctl load -w /Library/LaunchDaemons/com.serverfault.sshdredirect.plist a la carga. Automáticamente se carga en el futuro se reinicia.

Además, también puede mejorar la seguridad por (i) la configuración de su firewall para bloquear todas las conexiones al puerto 22 de ninguna otra interfaz que la de loopback (127.0.0.1) y (ii) realizar un cambio similar en su sshd.conf archivo ssh escuchando en el bucle sólo.

Disfrutar.

1voto

Adam Prescott Puntos 111

No pude ver esta documentado en ninguna parte correctamente en un hombre de la página, pero si quieres hacer nada más que añadir un extra de escucha, puede utilizar una matriz de oyentes y tener un extra de dict. Esto no requiere de la edición de /etc/services si utiliza el puerto directamente (pero recuerda que para abrir el puerto en el firewall!)

    <key>Listeners</key>
    <array>
    <dict>
        <key>Bonjour</key>
        <array>
            <string>ssh</string>
            <string>sftp-ssh</string>
        </array>
        <key>SockServiceName</key>
        <string>ssh</string>
    </dict>
    <dict>
        <key>SockServiceName</key>
        <string>22222</string>
    </dict>
    </array>

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: