如何SSH连接Linux系统的消费型Azure Function实例
问题原因
你使用的是Linux消费(Consumption)计划的Azure Function,微软官方文档里的SSH操作步骤仅适用于专用(App Service)计划、弹性Premium计划的Linux应用/函数,消费计划原生不支持常规SSH访问,这是你操作失效的根本原因:
- 开发工具栏目没有SSH选项:消费计划的Linux函数默认隐藏了该入口
https://<app-name>.scm.azurewebsites.net/webssh/host访问失败:消费计划的SCM站点未内置WebSSH服务az webapp create-remote-connection命令失效:该命令仅适配App Service计划资源,不适用于消费计划函数
可行替代方案
方案1:自定义容器镜像内置SSH(适合自定义镜像部署场景)
如果你是用自定义容器部署的函数,可以在镜像构建阶段就配置好SSH服务,配置要求如下:
- SSH服务监听2222端口
- 配置root账户密码为
Docker!(平台固定要求,Azure会用该账户建立连接) - 容器启动时自动运行sshd服务
注意:消费计划实例会随冷启动销毁重建,所有临时修改都会丢失,必须把SSH配置固化到容器镜像中。
方案2:临时HTTP触发命令执行(适合代码部署场景)
如果你是用官方基础镜像做代码部署,可以临时创建一个HTTP触发的函数,在函数代码中调用系统shell执行你需要的命令,Python语言参考示例:
import subprocess import azure.functions as func def main(req: func.HttpRequest) -> func.HttpResponse: cmd = req.params.get('cmd') if not cmd: return func.HttpResponse("请传入cmd参数指定要执行的命令", status_code=400) result = subprocess.run(cmd, shell=True, capture_output=True, text=True) return func.HttpResponse(f"输出:\n{result.stdout}\n错误:\n{result.stderr}")
用完后及时删除该临时函数,避免安全风险。
方案3:基础操作替代
如果只是需要查看文件、查看日志这类基础操作,直接用Azure门户的【高级工具(Kudu)】的文件浏览功能,或者用Azure Functions Core Tools执行func azure functionapp logstream <app-name>查看实时日志即可满足需求。
注:消费计划的Linux函数运行在沙箱环境中,即使开启SSH也有很多系统级操作权限限制,不要尝试修改系统级配置。
内容的提问来源于stack exchange,提问作者Illep
相关产品推荐
相关产品推荐

