你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
在 Azure 应用服务中打开容器的 SSH 会话
安全外壳 (SSH) 可用于对容器远程执行管理命令。 应用服务直接向容器中托管的应用提供 SSH 支持。
在浏览器中打开 SSH 会话
若要通过容器打开直接的 SSH 会话,应用应该处于正在运行状态。
将以下 URL 粘贴到浏览器中,将 <app-name>
替换为应用名称:
https://<app-name>.scm.azurewebsites.net/webssh/host
如果尚未进行身份验证,则需通过要连接的 Azure 订阅进行身份验证。 完成身份验证以后,可以看到一个浏览器内 shell,可以在其中的容器中运行命令。
还可以使用 SSH 和 SFTP 直接从本地开发计算机连接到容器。
在浏览器中打开 SSH 会话
若要通过容器打开直接的 SSH 会话,应用应该处于正在运行状态。
将以下 URL 粘贴到浏览器中,将 <app-name>
替换为应用名称:
https://<app-name>.scm.azurewebsites.net/webssh/host
如果尚未进行身份验证,则需通过要连接的 Azure 订阅进行身份验证。 完成身份验证以后,可以看到一个浏览器内 shell,可以在其中的容器中运行命令。
将 SSH 支持与自定义 Docker 映像配合使用
请参阅在自定义容器中配置 SSH。
从远程 shell 打开 SSH 会话
注意
此功能目前为预览版。
使用 TCP 隧道,可以通过经身份验证的 WebSocket 连接在开发计算机与适用于容器的 Web 应用之间创建网络连接。 这样就可以通过所选客户端使用在应用服务中运行的容器打开一个 SSH 会话。
若要开始,需安装 Azure CLI。 若要了解它在不安装 Azure CLI 的情况下的工作方式,请打开 Azure Cloud Shell。
使用 az webapp create-remote-connection 命令打开到应用的远程连接。 为应用指定 <subscription-id>、<group-name> 和 <app-name>。
az webapp create-remote-connection --subscription <subscription-id> --resource-group <resource-group-name> -n <app-name> &
提示
命令末尾的 &
只是为了方便起见(如果你是使用 Cloud Shell)。 它在后台运行此进程,因此你可以在同一 shell 中运行下一命令。
注意
如果此命令失败,请确保通过以下命令禁用远程调试:
az webapp config set --resource-group <resource-group-name> -n <app-name> --remote-debugging-enabled=false
命令输出提供的信息是打开 SSH 会话所需的。
Port 21382 is open
SSH is available { username: root, password: Docker! }
Start your favorite client and connect to port 21382
请使用本地端口通过所选客户端打开容器的 SSH 会话。 以下示例使用默认的 ssh 命令:
ssh root@127.0.0.1 -p <port>
出现提示时,请键入 yes
继续进行连接。 然后,系统会提示输入密码。 请使用 Docker!
(此前已向你显示过)。
Warning: Permanently added '[127.0.0.1]:21382' (ECDSA) to the list of known hosts. root@127.0.0.1's password:
进行身份验证以后,会看到会话欢迎屏幕。
_____ / _ \ __________ _________ ____ / /_\ \___ / | \_ __ \_/ __ \ / | \/ /| | /| | \/\ ___/ \____|__ /_____ \____/ |__| \___ > \/ \/ \/ A P P S E R V I C E O N L I N U X 0e690efa93e2:~#
现在已连接到连接器。
请尝试运行 top 命令。 应该可以在进程列表中看到应用的进程。 在下面的示例输出中,它带有 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]
后续步骤
如有问题和疑问,请在 Azure 论坛上发帖。
有关用于容器的 Web 应用的详细信息,请参阅:
- Introducing remote debugging of Node.js apps on Azure App Service from VS Code(使用 VS Code 对 Azure 应用服务上的 Node.js 应用进行远程调试简介)
- 快速入门:在应用服务上运行自定义容器
- 用于容器的 Azure 应用服务 Web 应用常见问题解答