Por lo tanto, hay varios componentes, que abordaré por partes. El más importante es cómo ejecutar un comando remoto/script. Como IconDaemon señala, SSH es el mejor uso para esto. Incluso hay un medio bastante bueno y seguro de hacer esto sin requerir una contraseña, para propósitos de scripting automatizado.
En aras de la claridad, me referiré a los Xserves como el servidor y su iMac u otra máquina que accede a ellos como el cliente .
Ejecutar un comando Shell en un servidor remoto
- En el servidor, abra el Compartir en las Preferencias del Sistema, y marque el Inicio de sesión remoto caja
- Esto habilita el servidor SSH, lo que nos permite obtener un inicio de sesión de línea de comandos remoto.
- En el cliente, abra Terminal.app y escriba lo siguiente, luego presione enter:
ssh-keygen -f examplekey
- Esto crea dos archivos en su directorio principal.
examplekey
(el privado ) y examplekey.pub
(el público clave). Se trata de firmas criptográficas que permitirán a cualquier persona con examplekey
para conectarse a su servidor, sin ninguna contraseña. Por esta razón, vamos a restringir qué comandos se pueden ejecutar, pero también debes tener cuidado de mantener el archivo de la clave privada almacenado de forma segura, sólo en los dispositivos que necesitarán ejecutar tu script remoto</strkeep><strkeep>.
- En el servidor, abra
/Users/YOURUSERNAME/.ssh/authorized_keys
en un editor de texto.
- Asegúrate de hacerlo con cualquier usuario que tenga permisos para ejecutar el script.
- En una nueva línea, introduzca
command="/path/to/yourscript"
seguido de un espacio, y luego pegar el contenido de examplekey.pub
- El comando entre comillas debe ser lo que quieras que se ejecute (presumiblemente el script para activar/desactivar el Grid Manager).
- Si tienes dos scripts, uno para encenderlo y otro para apagarlo, tendrás que combinarlos en un scriptsscriptscripts que lo active/desactive, o repetir los pasos 2-4 para crear una segunda tecla, de modo que tengas una para apagarlo y otra para encenderlo.
- Este comando es el único que puede o será ejecutado; a diferencia de una sesión ssh estándar, el
command=
no le da un prompt interactivo, sólo ejecuta el comando y se cierra. Queremos esto por razones de seguridad.
- Ahora, con todas las piezas en su lugar, podemos ejecutar el comando. En el Terminal del cliente, escribe
ssh -i /path/to/examplekey user@serveraddress
y ejecutarlo. Si todo se ha configurado correctamente, debería ejecutar tu script, y luego cerrar la conexión.
- Puede omitir el
user@
si los nombres de usuario son los mismos entre el cliente y el servidor.
- La dirección del servidor puede ser una IP o un nombre de host. La segunda parte de mi respuesta abordará cómo conectarse a través de Internet, cuando no se tiene una IP estática.
- Si necesita utilizar un puerto no estándar (es decir, no el 22), cambie el comando para leer
ssh -i /path/to/examplekey -p PORT user@serveraddress
. Puede que lo necesites para la siguiente sección.
Ahora que tienes SSH funcionando, necesitamos una forma de ejecutar esto desde un ordenador remoto.
Acceder a un ordenador de forma remota sin una IP estática
Hay varias formas de hacerlo: puedes acceder a tu iMac a través de Internet mediante VNC/Escritorio remoto y, a continuación, acceder a tus servidores a través de la red local como se ha indicado anteriormente. O puedes acceder directamente a los servidores a través de Internet.
En cualquier caso, necesitarás dos cosas: - Una forma de acceder a tu red local de forma remota, sin tener que rastrear tu IP. - Reenvío de puertos para permitir el acceso a cualquier protocolo que quieras utilizar (SSH, VNC o Apple Remote Desktop).
DNS dinámico
Se trata básicamente de una forma sencilla de darse acceso remoto sin tener que preocuparse de que su ISP le cambie la IP. Te registras en un servicio gratuito, que te da un nombre de dominio que apunta a tu red doméstica. Para controlar el cambio de tu IP, ejecutas un programa cliente que actualiza los registros del servicio cada vez que obtienes una nueva IP pública.
Yo uso DynDNS, pero parece que han suspendido las nuevas inscripciones para su servicio. No-IP parece ser la mejor alternativa.
- Crea una cuenta para su servicio "No-IP Free".
- Una vez que te hayas registrado, sigue los pasos para añadir un nuevo nombre de host. Anota el nombre de host que elijas, será algo así como
myhostexample.no-ip.info
.
- Descargue el programa de actualización de Mac aquí e instalarlo en un ordenador que vaya a funcionar a menudo. No importa cuál, ya que cualquier cosa en su red doméstica utiliza la misma IP pública, sólo quiere que se ejecute con la suficiente frecuencia para que no se pierda ninguna actualización de su IP pública.
Ahora que tienes una dirección para conectarte a tu red doméstica, tenemos que configurar tu router para permitir el acceso remoto a los servicios que necesitas. Esto depende de cómo quieras conectarte remotamente (SSH, VNC o una combinación). Voy a dar un ejemplo general.
DHCP estático y reenvío de puertos
Para acceder a un ordenador dentro de su red desde Internet, necesitamos permitir cierto tráfico a través del cortafuegos de su router, y tener una dirección a la que enviarlo.
La mayoría de los routers utilizan DHCP para asignar sus direcciones IP locales (si has configurado manualmente tu IP, ya lo sabes y puedes saltarte esta parte). Sin embargo, pueden configurarse para que cada máquina tenga siempre la misma IP (lo que se llama DHCP estático).
Hay una buena guía sobre cómo hacer esto con un Airport Extreme aquí pero debería ser casi idéntico para tu Time Capsule. Ten en cuenta que la parte final de la guía es redundante, y posiblemente indeseable (los tres últimos párrafos y la última captura de pantalla). Querrás hacer esto para cada ordenador al que necesites acceder de forma remota (potencialmente ambos Xserves y tu iMac).
Ahora que tienes configurado el DHCP estático, necesitamos hacer un reenvío de puertos. Los puertos que reenvíes dependen de cómo quieras hacer tu acceso remoto, pero yo sugeriría reenviar SSH a ambos Xserves. De esta manera puedes usar la configuración de SSH en la primera sección desde donde sea que estés. Esta guía cubre cómo habilitarlo en su Time Capsule. - El concepto básico es que puedes reenviar cualquier puerto al que se acceda en tu dirección externa (el myhostexample.no-ip.info
que configuramos antes) a cualquier puerto de cualquiera de sus máquinas externas. Así que si usted va a myhostexample.no-ip.info:1234
puede ser redirigido internamente a 192.168.1.9:567. - Para SSH, querrás redirigir algún puerto público arbitrario al puerto 22 en cada uno de tus Xserves. Así que puedes configurar (por ejemplo) el puerto público 9022 para ir al puerto 22 en un Xserve, y usar el puerto público 9122 para ir al puerto 22 en el otro Xserve. Los puertos públicos no importan (sólo tienes que cambiar el comando ssh para que coincida), pero usar el puerto 22 internamente elimina la configuración extra.
Puedes utilizar los mismos principios para permitir otros accesos a tu iMac o Xserves (como VNC o Apple Remote Desktop), sólo tienes que tomar nota de los puertos que necesitas reenviar. http://www.portforward.com es un buen recurso para esto. También ten en cuenta que si estás usando VNC, no está encriptado, así que estarás enviando tu contraseña en claro. Si tienes que usar VNC, busca en Google "VNC SSH tunnelling", que debería darte algunas buenas guías sobre cómo asegurarlo.
Resumen
Una vez que tengas todo esto en su lugar, deberías ser capaz de hacer ssh desde cualquier lugar a tus Xserves y activar tus scripts. Asumiendo que has configurado myhostexample.no-ip.info como tu DNS dinámico y 9022 como tu puerto de reenvío, sólo tienes que ejecutar ssh -i /path/to/examplekey -p 9022 user@myhostexample.no-ip.info
.
Espero que te sirva, siento que sea un poco largo, pero creo que he cubierto la mayoría de las bases. Por favor, pregunta si algo no está claro.