Compartir a través de


Apertura de una sesión de SSH en un contenedor en Azure App Service

Secure Shell (SSH) se puede usar para ejecutar comandos administrativos de forma remota en un contenedor. App Service proporciona compatibilidad con SSH directamente en una aplicación hospedada en un contenedor personalizado de Windows.

Los contenedores personalizados de Windows no requieren ninguna configuración especial para que funcione la sesión SSH del explorador. No se admiten sesiones SSH a través de la CLI de Azure.

SSH de App Service para Linux

Secure Shell (SSH) se puede usar para ejecutar comandos administrativos de forma remota en un contenedor. App Service proporciona compatibilidad con SSH directamente en una aplicación hospedada en un contenedor de Linux (integrado o personalizado).

Los contenedores integrados de Linux ya tienen la configuración necesaria para habilitar las sesiones SSH. Los contenedores personalizados de Linux requieren configuraciones adicionales para habilitar sesiones SSH. Consulte Habilitación de SSH.

SSH de App Service para Linux

También puede conectarse al contenedor directamente desde la máquina de desarrollo local mediante SSH y SFTP.

Abrir sesión SSH en el explorador

Para que una sesión de SSH directa sea abierta con el contenedor, la aplicación debe estar en ejecución.

Pegue la siguiente dirección URL en el explorador y reemplace <app-name> por el nombre de la aplicación:

https://<app-name>.scm.azurewebsites.net/webssh/host

Si aún no está autenticado, será preciso que se autentique con su suscripción a Azure para conectarse. Una vez autenticado, verá un shell del explorador en el que puede ejecutar comandos dentro del contenedor.

Conexión SSH

Abrir una sesión de SSH con la CLI de Azure

Mediante la tunelización TCP puede crear una conexión de red entre la máquina de desarrollo y los contenedores de Linux a través de una conexión de WebSocket autenticada. Permite abrir una sesión SSH con el contenedor que se ejecuta en App Service desde el cliente de su elección.

Para empezar, es preciso instalar la CLI de Azure. Para ver cómo funciona sin instalar la CLI de Azure, abra Azure Cloud Shell.

Abra una conexión remota a la aplicación mediante el comando az webapp create-remote-connection. Especifique el <id_de_suscripción>, el <nombre_del_grupo> y el <nombre_de_la_aplicación> para la aplicación.

az webapp create-remote-connection --subscription <subscription-id> --resource-group <resource-group-name> -n <app-name> &

Sugerencia

El & al final del comando es solo para su comodidad si usa Cloud Shell. El proceso se ejecuta en segundo plano, por lo que puede ejecutar el siguiente comando en el mismo shell.

Nota

Si se produce un error en este comando, asegúrese de que la depuración remota está deshabilitada con el siguiente comando:

az webapp config set --resource-group <resource-group-name> -n <app-name> --remote-debugging-enabled=false

La salida del comando le ofrece la información necesaria para abrir una sesión SSH.

Verifying if app is running....
App is running. Trying to establish tunnel connection...
Opening tunnel on addr: 127.0.0.1
Opening tunnel on port: <port-output>
SSH is available { username: root, password: Docker! }
Ctrl + C to close

Abra una sesión SSH con el contenedor con el cliente de su elección mediante el puerto local proporcionado en la salida (<port-output>). Por ejemplo, con el comando SSH de Linux, puede ejecutar un único comando como java -version:

ssh root@127.0.0.1 -m hmac-sha1 -p <port-output> java -version

O bien, para escribir una sesión SSH completa, solo tiene que ejecutar:

ssh root@127.0.0.1 -m hmac-sha1 -p <port-output>

Cuando se solicite, escriba yes para continuar con la conexión. Se le pedirá la contraseña. Use Docker!, que ya apareció anteriormente.

Warning: Permanently added '[127.0.0.1]:21382' (ECDSA) to the list of known hosts.
root@127.0.0.1's password:

Una vez autenticado, debería ver la pantalla de inicio de sesión.

  _____
  /  _  \ __________ _________   ____
 /  /_\  \___   /  |  \_  __ \_/ __ \
/    |    \/    /|  |  /|  | \/\  ___/
\____|__  /_____ \____/ |__|    \___  >
        \/      \/                  \/
A P P   S E R V I C E   O N   L I N U X

0e690efa93e2:~#

Ahora está conectado a su conector.

Intente ejecutar el comandotop. Debe poder ver el proceso de la aplicación en la lista de procesos. En la salida del ejemplo siguiente, es el marcado con PID 263.

Mem: 1578756K used, 127032K free, 8744K shrd, 201592K buff, 341348K cached
CPU:   3% usr   3% sys   0% nic  92% idle   0% io   0% irq   0% sirq
Load average: 0.07 0.04 0.08 4/765 45738
  PID  PPID USER     STAT   VSZ %VSZ CPU %CPU COMMAND
    1     0 root     S     1528   0%   0   0% /sbin/init
  235     1 root     S     632m  38%   0   0% PM2 v2.10.3: God Daemon (/root/.pm2)
  263   235 root     S     630m  38%   0   0% node /home/site/wwwroot/app.js
  482   291 root     S     7368   0%   0   0% sshd: root@pts/0
45513   291 root     S     7356   0%   0   0% sshd: root@pts/1
  291     1 root     S     7324   0%   0   0% /usr/sbin/sshd
  490   482 root     S     1540   0%   0   0% -ash
45539 45513 root     S     1540   0%   0   0% -ash
45678 45539 root     R     1536   0%   0   0% top
45733     1 root     Z        0   0%   0   0% [init]
45734     1 root     Z        0   0%   0   0% [init]
45735     1 root     Z        0   0%   0   0% [init]
45736     1 root     Z        0   0%   0   0% [init]
45737     1 root     Z        0   0%   0   0% [init]
45738     1 root     Z        0   0%   0   0% [init]

Pasos siguientes

Puede publicar preguntas y problemas en el foro de Azure.

Para obtener más información sobre Web App for Containers, vea: