¿Cómo crear una nueva conexión de servicio SSH para un servidor que tiene MFA habilitado?

¿Cómo crear una nueva conexión de servicio SSH para un servidor que tiene MFA habilitado?

Estoy intentando crear una tubería azul. Parte del proceso implica crear una conexión de servicio para poder copiar archivos al servidor remoto de forma segura.

ingrese la descripción de la imagen aquí

Tengo 2 preguntas:

  1. ¿Qué pongo en el Service connection namecampo? Un ejemplo con una breve explicación sería suficiente.
  2. ¿Cómo creo esta conexión de servicio SSH si tengo MFA habilitado? No hay ninguna opción relacionada con esto en la interfaz de usuario.

Le pregunté a ChatGPT sobre esto, pero no sé si es correcto.

Si tiene habilitada MFA (autenticación multifactor) en su máquina remota, deberá utilizar un método de autenticación diferente al de una contraseña tradicional o una clave privada. Una opción es utilizar un token de seguridad, que es un código basado en el tiempo generado por una aplicación de autenticación (como Microsoft Authenticator) y utilizado junto con su contraseña para autenticarse.

Para usar un token de seguridad en su tarea SSH de Azure Pipeline, deberá agregar un parámetro adicional a la configuración de la tarea. A continuación se muestra un ejemplo de cómo puede configurar una tarea SSH con un token de seguridad.

- task: SSH@0
  inputs:
    sshEndpoint: '<your SSH service connection name>'
    runOptions: 'ssh -o StrictHostKeyChecking=no'
    command: 'ls -l'
    arguments: '-la /home'
    sshPublicKey: '<your public key>'
    sshPassphrase: '<your passphrase>'
    sshExtraOptions: '-o IdentitiesOnly=yes'
    useAgentAuth: false
    sshPassword: '<your password>'
    sshSecurityToken: '<your security token>'

En este ejemplo, el sshSecurityTokenparámetro se utiliza para especificar el token de seguridad que se debe utilizar para la autenticación. También deberá incluir su clave pública, frase de contraseña (si corresponde) y contraseña (si corresponde) en la configuración.

¿Es esto correcto? Si es así, ¿cómo implemento realmente esta parte de la autenticación que involucra tokens de seguridad? Se agradece cualquier tipo de ayuda.

Respuesta1

El Servicio connection namesegúnel manuales:

Requerido. El nombre utilizado para hacer referencia a la conexión de servicio en las propiedades de la tarea. No es el nombre de su cuenta o suscripción de Azure. Si usa YAML, use el nombre como azureSubscription o el valor de nombre de suscripción equivalente en el script.

En otras palabras: un nombre/etiqueta de etiqueta obligatoria que se utilizará para identificar esta conexión. Casi cualquier cosa que tenga sentido para ti debería funcionar. El ejemplo usa MyArmSubsciption, pero ssh2hostname o ServiceConnection-2-Hostname-via-ssho lo que sea que funcione para usted.
Nota:Hayposiblementerestricciones con respecto a qué caracteres están permitidos (por ejemplo, sin espacios, sin caracteres comodín, sin emojis y/o solo, A-Z,a-z,0-9,-_.etc.), pero no pude encontrar si esos límites están documentados.

La descripción opcional debería permitir una descripción más larga con menos restricciones de entrada que el nombre de la conexión.

captura de pantalla del servicio


Autenticación multifactor SSH: espero que sea simpleNo soportado.

Por filosofía y diseño, MFA tiene como objetivo detener los inicios de sesión automáticos y no veo a nadie que ofrezca un punto de interrupción para la entrada manual de un código de autenticación único en una tubería.

Una solución alternativa típica es configurar una cuenta de servicio/cuenta técnica separada que no requiera MFA y donde la autenticación de clave pública ssh por sí sola sea suficiente.
Para abordar los problemas de seguridad percibidos al respecto: use la característica relativamente infrautilizada de openssh y el~/.ssh/authorized_keysformato de archivo, a saber: la capacidad de configurar opciones/restricciones que se establecerán cuando se utilice un par de claves en particular para iniciar sesión.

información relacionada