es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo usar la opción de compilación ssh en podman?

He estado usando la opción --ssh de docker build para dar acceso a mis claves desde ssh-agent durante las compilaciones.

Cuando intento hacer lo mismo con podman, no funciona. Estoy trabajando en macOS Monterey 12.0.1 con un chip Intel. También he reproducido esto en Ubuntu y WSL2.


❯ podman --version
podman version 3.4.4

Este es un ejemplo de Dockerfile:

FROM python:3.10

RUN mkdir -p -m 0600 ~/.ssh \
    && ssh-keyscan github.com >> ~/.ssh/known_hosts

RUN --mount=type=ssh git clone git@github.com:ruarfff/a-private-repo-of-mine.git

Cuando ejecuto DOCKER_BUILDKIT=1 docker build --ssh default . funciona correctamente, es decir, la compilación tiene éxito, se clona el repositorio y la clave SSH no se incluye en la imagen.

Cuando ejecuto podman build --ssh default ., la compilación falla con el siguiente mensaje de error:

git@github.com: Permission denied (publickey).
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.
Error: error building at STEP "RUN --mount=type=ssh git clone git@github.com:ruarfff/a-private-repo-of-mine.git": error while running runtime: exit status 128

Acabo de comenzar a experimentar con podman. Según la documentación, parece que esta opción está soportada. He intentado cambiar un poco el formato, especificando directamente el ID, por ejemplo, pero ninguna variación en la especificación de la opción o el montaje ha funcionado hasta ahora. ¿Hay algo sobre cómo funciona podman que pueda estar pasando por alto y que explique esto?

Añadir esta línea, como se sugiere en los comentarios:


RUN --mount=type=ssh ssh-add -l

Resulta en el siguiente error:


STEP 4/5: RUN --mount=type=ssh ssh-add -l
Could not open a connection to your authentication agent.
Error: error building at STEP "RUN --mount=type=ssh ssh-add -l": error while running runtime: exit status 2

Editar:

Creo que esto puede tener algo que ver con este problema en buildah. Se ha corregido, pero aún no ha sido lanzado según puedo ver.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece que podría haber un problema con Podman al usar el indicador --ssh para acceder a las claves SSH desde ssh-agent. Según el mensaje de error recibido, parece que los pasos en el Dockerfile no pueden acceder al agente de autenticación.

    Una posible solución sería agregar la siguiente línea al Dockerfile:

    RUN --mount=type=ssh ssh-add -l 
    

    Este comando mostrará las claves que están cargadas actualmente en el ssh-agent. Si este comando falla con el error “Could not open a connection to your authentication agent” significa que la compilación de Docker no puede acceder al ssh-agent.

    Puede haber un problema subyacente en cómo Podman interactúa con el ssh-agent que necesita ser resuelto. Vale la pena mencionar que hay un problema abierto en Buildah que puede estar relacionado con este problema. Según el problema, hay una solución para este problema que se ha fusionado, pero aún no se ha lanzado.

    En resumen, el uso del indicador --ssh para acceder a las claves SSH desde ssh-agent en Podman puede que no funcione como se espera. El problema puede estar relacionado con cómo Podman interactúa con el ssh-agent. Una posible solución alternativa es verificar si la compilación de Docker puede acceder al ssh-agent utilizando el comando ssh-add -l. También es recomendable estar pendiente de los problemas relevantes en los proyectos Podman y Buildah para ver si se lanza una solución.

Comments are closed.