Compatibilidad con SSH para Azure App Service en LinuxSSH support for Azure App Service on Linux

Secure Shell (SSH) es un protocolo de red criptográfico que permite usar servicios de red de forma segura.Secure Shell (SSH) is a cryptographic network protocol for using network services securely. Normalmente, se usa para iniciar sesión en un sistema de forma remota y segura desde una línea de comandos, además de para ejecutar comandos administrativos de forma remota.It is most commonly used to log into a system remotely securely from a command-line and execute administrative commands remotely.

App Service en Linux proporciona compatibilidad con SSH en el contenedor de la aplicación para todas las imágenes de Docker integradas que se usan para la pila en tiempo de ejecución de nuevas aplicaciones web.App Service on Linux provides SSH support into the app container with each of the built-in Docker images used for the Runtime Stack of new web apps.

Pilas en tiempo de ejecución

También puede usar SSH con sus imágenes de Docker personalizadas. Para ello, incluya el servidor SSH como parte de la imagen y configúrelo como se indica en este artículo.You can also use SSH with your custom Docker images by including the SSH server as part of the image and configuring it as described in this article.

Establecimiento de una conexión de clienteMaking a client connection

Para establecer una conexión de cliente SSH, se debe iniciar el sitio principal.To make an SSH client connection, the main site must be started.

Pegue el punto de conexión de Administración del control de código fuente (SCM) de la aplicación web en el explorador con el siguiente formulario:Paste the Source Control Management (SCM) endpoint for your web app into your browser using the following form:

https://<your sitename>.scm.azurewebsites.net/webssh/host

Si no lo está ya, será necesario que se autentique con su suscripción a Azure para poder conectarse.If you are not already authenticated, you are required to authenticate with your Azure subscription to connect.

Conexión SSH

Compatibilidad con SSH para imágenes personalizadas de DockerSSH support with custom Docker images

Para que una imagen personalizada de Docker admita la comunicación mediante SSH entre el contenedor y el cliente de Azure Portal, realice los siguientes pasos para su imagen de Docker.In order for a custom Docker image to support SSH communication between the container and the client in the Azure portal, perform the following steps for your Docker image.

Estos pasos se indican en el repositorio de Azure App Service, como un ejemplo.These steps are shown in the Azure App Service repository as an example.

  1. Incluya la instalación openssh-server en la instrucción RUN del Dockerfile de la imagen y establezca la contraseña de la cuenta raíz a "Docker!".Include the openssh-server installation in RUN instruction in the Dockerfile for your image and set the password for the root account to "Docker!".

    Nota

    Esta configuración no permite realizar conexiones externas al contenedor.This configuration does not allow external connections to the container. Solo es posible acceder a SSH a través del sitio de Kudu o SCM, que se autentica con las credenciales de publicación.SSH can only be accessed via the Kudu / SCM Site, which is authenticated using the publishing credentials.

    # ------------------------
    # SSH Server support
    # ------------------------
    RUN apt-get update \
        && apt-get install -y --no-install-recommends openssh-server \
        && echo "root:Docker!" | chpasswd
    
  2. Agregue una instrucción COPY al Dockerfile para copiar un archivo sshd_config en el directorio /etc/ssh/.Add a COPY instruction to the Dockerfile to copy a sshd_config file to the /etc/ssh/ directory. Su archivo de configuración debería basarse en nuestro archivo sshd_config del repositorio de GitHub de Azure App Service, localizable aquí.Your configuration file should be based on the sshd_config file in the Azure-App-Service GitHub repository here.

    Nota

    El archivo sshd_config debe incluir los siguientes elementos o se producirá un error de conexión:The sshd_config file must include the following or the connection fails:

    • Ciphers debe incluir al menos uno de los siguientes elementos: aes128-cbc,3des-cbc,aes256-cbc.Ciphers must include at least one of the following: aes128-cbc,3des-cbc,aes256-cbc.
    • MACs debe incluir al menos uno de los siguientes elementos: hmac-sha1,hmac-sha1-96.MACs must include at least one of the following: hmac-sha1,hmac-sha1-96.
    COPY sshd_config /etc/ssh/
    
  3. Incluya el puerto 2222 en la instrucción EXPOSE del Dockerfile.Include port 2222 in the EXPOSE instruction for the Dockerfile. Aunque se conozca la contraseña raíz, no es posible acceder al puerto 2222 desde Internet.Although the root password is known, port 2222 cannot be accessed from the internet. Se trata de un puerto interno exclusivo al que solo pueden acceder los contenedores que se encuentren en el puente de una red privada virtual.It is an internal only port accessible only by containers within the bridge network of a private virtual network.

    EXPOSE 2222 80
    
  4. No olvide iniciar el servicio SSH mediante un script de shell (vea el ejemplo en init_container.sh).Make sure to start the SSH service using a shell script (see example at init_container.sh).

    #!/bin/bash
    service ssh start
    

El Dockerfile usa la instrucción ENTRYPOINT para ejecutar el script.The Dockerfile uses the ENTRYPOINT instruction to run the script.

```docker
COPY startup /opt/startup
...
RUN chmod 755 /opt/startup/init_container.sh
...
ENTRYPOINT ["/opt/startup/init_container.sh"]
```

Pasos siguientesNext steps

Puede publicar preguntas y problemas en el foro de Azure.You can post questions and concerns on the Azure forum.

Para obtener más información sobre Web App for Containers, vea:For more information on Web App for Containers, see: