Usuario de inicio de sesión cuando se conecta a través de ssh en MacOS

Agregué una máquina MacOS Sierra a un dominio corporativo de Active Directory y habilité el inicio de sesión remoto para varios usuarios en un grupo de AD.

Esos usuarios pueden iniciar sesión localmente a través de la interfaz de usuario e incluso pueden iniciar sesión a través de SSH abierto en mac.

El requisito comercial para el que se hizo esto es permitir que los usuarios se conecten a un host de Xamarin Build desde Visual Studio para desarrollar para iOS, pero esto está fuera del alcance de esta pregunta. Entonces, en última instancia, la conexión desde Visual Studio se realiza a través de SSH puro. Una vez que la máquina MacOS remota acepta las credenciales ssh que se ingresan en la interfaz de usuario de VS, intenta implementar una parte del programa requerida por VS para realizar las tareas necesarias, una aplicación Broker. El registro del intento es el siguiente:

Starting connection to Mac mac.mydomain.net... Starting Broker
4.3.0.795 in port 58116... 
The user must be logged in on the Mac in order to execute an SSH command. 
Disconnected from the Mac mac.mydomain.net (IP of mac.mydomain.net)

El problema es esta entrada:

The user must be logged in on the Mac in order to execute an SSH command. 

Básicamente, si accedo a MacOS a través de la interfaz de usuario e inicio sesión con ese usuario, luego, al usar el cambio rápido de usuario, solo moveré la pantalla de regreso a la ventana de inicio de sesión, mientras mantengo la sesión de la interfaz de usuario del usuario, podría conectarme a través de Visual Studio sin problemas. .

Entonces, el inicio de sesión ssh no es lo mismo que el inicio de sesión de UI. ¿Cómo puedo configurar los eventos o algo así, de modo que al iniciar sesión en SSH, un usuario también inicie sesión "como en la interfaz de usuario"?

Actualización: probablemente duplicado de https://superuser.com/questions/39322/induce-mac-graphical-login-from-ssh

Visite nuestra sala de chat Ask Different . Es posible que esté cerca de una solución o que esté a millas de distancia y necesite un intercambio de ideas para desmenuzar cualquier suposición sobre su caso de negocios. Incluso si dejamos de lado los problemas de licencia y trabajamos en las barreras técnicas, la vinculación de anuncios y el rendimiento del sistema afectarán la escalabilidad de su solución.
¿Qué guía de instalación seguiste? Este: ¿Instalar Xamarin.iOS en Windows ?
@klanomath, sí, tengo varios meses después de ese tutorial. Es simple y funciona muy bien. En mi escenario, un usuario que se ingresa en el lado de VS no está conectado a un sistema en el extremo de MacO. Tutorial asume que es. Mi pregunta es sobre el inicio de sesión del usuario automáticamente a través del gancho de inicio de sesión ssh.
@MaximV.Pavlov Intentaré configurarlo en un LAB si tengo tiempo. Usted (y/o sus desarrolladores) codifican en máquinas con Windows y la Mac es necesaria como host de compilación. ¿Cuántos desarrolladores deberían estar conectados a la Mac? No tengo mucha experiencia con Xamarin, por lo que tengo que hacer algunas preguntas básicas...
@klanomath, digamos que solo necesito que un usuario inicie sesión en una Mac, pero no el que "inicia sesión automáticamente" cuando se inicia Mac OS.

Respuestas (1)

A corto plazo, probablemente tendrá que limitar los usuarios registrados a uno o dos, ya que Mac OS no implementa un modelo de servicios de terminal de muchos usuarios remotos. Su configuración no solo viola los términos explícitos relacionados con la funcionalidad de Escritorio remoto en la licencia del software (suponiendo que su empresa no negoció un acuerdo de licencia personalizado con Apple), sino que muchos subsistemas, parámetros de ajuste y scripts están diseñados para un usuario principal a la vez. tiempo.

A largo plazo, probablemente optará por rediseñar su conjunto de herramientas de compilación para configurar una combinación de:

  • un servidor de integración continua que se construye sin GUI
  • server.app de Apple y aprovechar el servicio del servidor Xcode para manejar el inicio de sesión en la GUI, por lo que no necesita crear un script y automatizar la sesión local en ventana para la cuenta de compilación compartida
  • múltiples Mac para cada desarrollador para que puedan construir localmente en lugar de remotamente.

TLDR; el sistema no fue diseñado para 5 usuarios remotos; experimentará rarezas y problemas si se ejecuta de esa manera durante mucho tiempo

Puedo iniciar sesión simultáneamente con los cinco desarrolladores a través de la interfaz de usuario, cambiar a la pantalla de inicio de sesión y todos podrán funcionar bien hasta el próximo reinicio de la máquina. El CI ya está configurado y no interactúa ni se relaciona con el proceso de desarrollo para el cual necesito una conexión de host de compilación remota.
Se encontrará con problemas técnicos una vez que ingrese al uso de producción: límites de archivos abiertos, scripts del sistema, otras cosas se romperán. Agregué los requisitos de licencia que puede llevar al caso de negocios. Es posible que tenga más suerte al virtualizar varios sistemas operativos para realizar pruebas en lugar de poner a 5 usuarios en un sistema operativo del que no puede liberarse de los usuarios designados y hacer que un usuario de compilación controle la GUI, @MaximV.Pavlov
gracias, aún así, totalmente irrelevante para el problema real. Esta pregunta es sobre el inicio de sesión del usuario cuando se conecta a través de SSH a MacOS. La razón por la que esto es necesario puede ser diferente para los casos de otras personas.
Obtengo lo que quiere: veamos si los cambios en la protección en capas / SIP / Acceso a llaveros desde ssh incluso permiten un inicio de sesión sintético antes de discutir la estabilidad a largo plazo de la solución o los problemas de licencia. Realmente espero que alguien más tenga una forma técnica de hacer esto, sería fascinante duplicarlo en un entorno de laboratorio, por lo que ya hice +1 en su publicación.