Cada servicio bajo la supervisión de launchd, está indentificado por una etiqueta única. Si por ejemplo editamos el fichero ssh.plist, el servicio ssh está identificado por:
...La etiqueta que identifica al servicio es com.openssh.sshd y debe de ser única en en todos los servicios bajo supervisión de launchd. Por tanto, se edita el fichero ssh443.plist para que la etiqueta sea única. En el ejemplo he usado com.openssh.sshd443:
<key>Label</key>
<string>com.openssh.sshd</string>
...
...Ahora hay se editará el fichero del nuevo servicio para que escuche en el puerto 443 por tcp. Si miramos el fichero original ssh.plist
<key>Label</key>
<string>com.openssh.sshd443</string>
...
...Este trozo del fichero de configuración, hará que launchd escuché en el puerto que obtenga de resolver el service name ssh a través del fichero /etc/services - que por defecto será el 22 - y que por otra parte utiliza el sistema Bonjour para publicar por multicast DNS que la máquina corre los servicios ssh en el puerto anterior.
<dict>
<key>Listeners</key>
<dict>
<key>Bonjour</key>
<array>
<string>ssh</string>
 <string>sftp-ssh</string>
</array>
<key>SockServiceName</key>
<string>ssh</string>
</dict>
</dict>
...
En el caso del ejemplo, lo que se quiere es solamente que escuche en el puerto 443 a través de tcp. Para ello, se modificará el fichero ssh443.plist de tal manera que los listener sólo escuche en dicho puerto:
...El resto del fichero se queda igual que el ssh.plist.
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>443</string>
<key>SockType</key>
<string>stream</string>
</dict>
</dict>
...
Para terminara con la gestión de launchd, debe de cargarse la nueva configuración en el sistema. Para ello usaremos el comando de control del daemon launchctl>. Este comando debe de ejecutarse por un usuario que sea administrador de la máquina. Para ello:
cd /System/Library/LaunchDaemons(Se sale de lauchctl pulsando ctrl + D.) No olvidar, en caso de que se esté usando el firewall de MacOS X de habilitar una regla para el tráfico tcp al puerto 443, ya que sino, no funcionará.
sudo launchctl
launchd% load ssh443.plist launchd% ^D
Fichero ssh443.plist
<!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.openssh.sshd443</string>
<key>Program</key>
<string>/usr/libexec/sshd-keygen-wrapper</string>
<key>ProgramArguments</key>
<array>
<string>/usr/sbin/sshd</string>
<string>-i</string>
</array>
<key>SessionCreate</key>
<true/>
<key>Sockets</key>
<dict>
<key>Listeners</key>
<dict>
<key>SockServiceName</key>
<string>443</string>
<key>SockType</key>
<string>stream</string>
</dict>
</dict>
<key>StandardErrorPath</key>
<string>/dev/null</string>
<key>inetdCompatibility</key>
<dict>
<key>Wait</key>
<false/>
</dict>
</dict>
</plist>
Referencias
Technorati Tags: macosx
No hay comentarios:
Publicar un comentario