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.

Contenedor Docker SSH no se inicia si se inicia un script o se configura LD_PRELOAD.

Tengo una imagen de Docker que inicia SSH al inicio y escucha las conexiones:

DESDE nvcr.io/nvidia/deepstream:6.0-triton

<h1>OTRAS COSAS AQUÍ</h1>

<h1>....</h1>

<h1>SSH Y ACCESO REMOTO PARA PROPÓSITOS DE DESARROLLO</h1>

<p>EJECUTAR apt update && apt install -y openssh-server
EJECUTAR mkdir /var/run/sshd
EJECUTAR echo 'root:mi<em>contraseña' | chpasswd
EJECUTAR sed -i 's/#PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd</em>config</p>

<h1>Solución al problema de inicio de sesión SSH. De lo contrario, el usuario se desconecta después de iniciar sesión</h1>

<p>EJECUTAR sed 's@session\s<em>required\s</em>pam<em>loginuid.so@session optional pam</em>loginuid.so@g' -i /etc/pam.d/sshd
ENV NOTVISIBLE "in users profile"
EJECUTAR echo "export VISIBLE=now" >> /etc/profile
EJECUTAR sed -i 's/(^Port)/#\1/' /etc/ssh/sshd<em>config && echo Port 2222 >> /etc/ssh/sshd</em>config</p>

<h1>Exportar el puerto 2222 para el servidor SSH</h1>

<p>EXPOSE 2222</p>

<h1>ENV</h1>

<h1>LD<em>PRELOAD="/src/libmyplugins.so:${LD</em>PRELOAD}"</h1>

<h1>INICIO</h1>

<h1>Deshabilitar la entrada anterior.</h1>

<p>ENTRYPOINT []</p>

<h1>Establecer directorio predeterminado</h1>

<p>WORKDIR /src</p>

<h1>Habilitar SSH para depurar en el servidor remoto</h1>

<p>CMD ["/usr/sbin/sshd", "-D"]

Mi objetivo es poder agregar <code>/src/libmyplugins.so</code> a <code>LD_PRELOAD</code>.
Intenté varias cosas y todas resultaron en que el contenedor se detuviera justo después de iniciar:
– Agregar <code>LD_PRELOAD="/src/libmyplugins.so:${LD_PRELOAD}"</code> al Dockerfile
– Crear un script llamado entrypoint.sh para que se ejecute al inicio con `CMD ["sh", "entrypoint.sh", "&&", "/usr/sbin/sshd", "-D"] con el objetivo de establecer la variable de entorno dentro del archivo del script.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para agregar /src/libmyplugins.so a LD_PRELOAD, puedes modificar el Dockerfile agregando la siguiente línea:

    ENV LD_PRELOAD /src/libmyplugins.so:${LD_PRELOAD}
    

    Esto establece la variable de entorno LD_PRELOAD para incluir /src/libmyplugins.so y el valor existente de LD_PRELOAD (si lo hay).

    Alternativamente, puedes modificar el script entrypoint.sh para establecer la variable de entorno LD_PRELOAD antes de iniciar SSH. Esto se puede hacer agregando la siguiente línea al script:

    export LD_PRELOAD=/src/libmyplugins.so:${LD_PRELOAD}
    

    Luego modifica el CMD en el Dockerfile a:

    CMD ["/bin/bash", "-c", "/entrypoint.sh && /usr/sbin/sshd -D"]
    

    Esto ejecutará el script entrypoint.sh antes de iniciar SSH, asegurándose de que LD_PRELOAD esté configurado correctamente.

Comments are closed.