Cómo configurar conexiones SSH para un contenedor Docker

Cuando tienes contenedores en ejecución, puede haber momentos en los que necesites conectarte a ese contenedor para ejecutar un comando o realizar algún mantenimiento. Por supuesto, siempre puedes acceder al contenedor en ejecución utilizando el comando "docker exec -it ID_DEL_CONTENEDOR bash" (donde ID_DEL_CONTENEDOR es el ID real del contenedor). Pero, ¿cómo puedes hacer SSH a esos contenedores? Y ¿deberías hacerlo? Ahí está la cuestión.

El problema es que, debido a que hay tantas partes en movimiento, los contenedores pueden ser inseguros. Debido a eso, no querrás permitir conexiones SSH a los contenedores en entornos de producción, pero para entornos de desarrollo y pruebas, esto puede ser de gran ayuda.

Dicho esto, te mostraré cómo configurar conexiones SSH para un contenedor Docker. Demostraré utilizando la última imagen de Ubuntu.

Índice de Contenido
  1. Lo que necesitarás
  2. Cómo crear el Dockerfile necesario
  3. Cómo construir la imagen e implementar el contenedor
  4. Cómo encontrar la dirección IP del contenedor en ejecución
  5. Cómo hacer SSH al contenedor en ejecución

Lo que necesitarás

Para hacer esto funcionar, necesitarás una instancia en ejecución de Docker instalada en tu distribución de Linux elegida.

Eso es todo. Hagamos magia con Docker/SSH.

Cómo crear el Dockerfile necesario

Lo primero que haremos es crear un Dockerfile a partir del cual se implementará el contenedor. Inicia sesión en tu servidor Linux y ejecuta el siguiente comando:

Enseñanza y Aprendizaje con Microsoft: Herramientas y Lecciones para Profesores de todos los Niveles

nano Dockerfile

En ese archivo, pega lo siguiente:

FROM ubuntu:20.04

RUN apt-get update && apt-get install -y openssh-server

RUN mkdir /var/run/sshd

RUN echo 'root:CONTRASEÑA' | chpasswd

Guía de Examen de Certificación Lotus Notes: Desarrollo de Aplicaciones y Administración del Sistema

RUN sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config

RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd

EXPOSE 22

CMD ["/usr/sbin/sshd", "-D"]

Donde "CONTRASEÑA" es una contraseña fuerte/única.

Guarda y cierra el archivo.

Cómo gestionar eficazmente grandes volúmenes de correo electrónico

Cómo construir la imagen e implementar el contenedor

Ahora podemos construir nuestra imagen a partir del Dockerfile con el siguiente comando:

sudo docker build -t sshd_ubuntu .

El comando anterior tomará algún tiempo en completarse porque hemos instruido (en el Dockerfile) para instalar el paquete openssh-server y ejecutar algunos comandos adicionales (para establecer la contraseña de root y habilitar el inicio de sesión de root mediante SSH).

A continuación, podemos implementar el contenedor con el comando:

docker run -d -P --name test_sshd sshd_ubuntu

Cómo encontrar la dirección IP del contenedor en ejecución

Después de implementar el contenedor, necesitamos encontrar la dirección IP del contenedor en ejecución, lo cual se hace con el siguiente comando:

Integración de StarOffice: calendarios

docker inspect --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' test_sshd

La salida del comando anterior debería verse algo así:

172.17.0.15

Cómo hacer SSH al contenedor en ejecución

Desde la máquina host, ejecuta el siguiente comando:

ssh root@IP

Donde "IP" es la dirección IP de tu contenedor en ejecución. Deberías ser solicitado a ingresar la contraseña de usuario root (que se configuró en el Dockerfile) y, al autenticarte correctamente, te encontrarás en el símbolo de comando del contenedor en ejecución.

Cómo gestionar eficazmente el correo electrónico en tu empresa

Si, sin embargo, el demonio de SSH no te permite acceder, significa que la contraseña de root no se estableció durante el proceso de creación de la imagen o el acceso SSH de root no se habilitó.

Eso no es un problema, ya que podemos acceder al contenedor y cambiar esto manualmente. Para hacer eso, primero necesitarás encontrar el ID del contenedor en ejecución. Para eso, ejecuta el siguiente comando:

docker ps -a

Deberías ver un contenedor llamado "sshd_ubuntu" en la lista, así como su ID. Para acceder al contenedor en ejecución, ejecuta el siguiente comando:

docker exec -it ID bash

Donde "ID" es el ID del contenedor asociado con el contenedor "sshd_ubuntu". Una vez dentro del contenedor, ejecuta el siguiente comando:

WordPerfect Office 2000: La solución perfecta para compartir documentos en diferentes plataformas

passwd

A continuación, instala nano con:

apt-get install nano -y

Abre el archivo de configuración del demonio de SSH con:

nano /etc/ssh/sshd_config

En ese archivo, descomenta la línea:

Cómo contar elementos en una lista de Excel utilizando la función Subtotales

#PermitRootLogin yes

Esa línea debería verse así:

PermitRootLogin yes

Reinicia el demonio de SSH con:

/usr/sbin/sshd -D

Sal del contenedor y ahora deberías poder hacer SSH a ese contenedor en ejecución sin problemas.

Cómo solucionar problemas de acceso a carpetas de Outlook en un entorno colaborativo

Si eres un desarrollador de contenedores Docker, es posible que desees considerar este pequeño truco para ayudar a que el desarrollo de contenedores e imágenes sea un poco más eficiente. Solo recuerda desactivar el inicio de sesión de root por SSH para cualquier contenedor que implementes en producción. Mejor prevenir que lamentar.

En Newsmatic nos especializamos en tecnología de vanguardia, contamos con los artículos mas novedosos sobre Software, allí encontraras muchos artículos similares a Cómo configurar conexiones SSH para un contenedor Docker , tenemos lo ultimo en tecnología 2023.

Artículos Relacionados

Subir

Utilizamos cookies para mejorar su experiencia de navegación, mostrarle anuncios o contenidos personalizados y analizar nuestro tráfico. Al hacer clic en “Aceptar todo” usted da su consentimiento a nuestro uso de las cookies.