You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS部署CSR 1000v后RESTCONF认证失败求助

解决CSR 1000v RESTCONF AWS认证失败(access-denied)的问题

我来帮你排查这个RESTCONF认证失败的问题——从你给出的错误输出和代码来看,核心问题应该是AWS签名认证没有被CSR 1000v正确识别,或者配置环节有遗漏。下面是几个你可以逐一排查的关键点:

1. 修正AWSRequestsAuth的服务名称参数

你的代码里把aws_service设成了compute,但这不是AWS标准的服务代码!CSR 1000v的RESTCONF使用SigV4认证时,对应的服务名称应该是ec2,这很可能是导致认证失败的直接原因。

修改代码里的这一行:

aws_service='ec2'  # 替换原来的'compute'

2. 检查CSR 1000v的AWS认证配置

确保你的路由器已经启用了AWS SigV4认证支持,并且配置正确。登录CSR 1000v的CLI,检查并添加以下配置:

! 启用RESTCONF
restconf
! 启用HTTPS服务器
ip http secure-server
! 配置HTTP认证使用AWS SigV4
ip http authentication aws-sigv4
! 指定AWS区域(和你代码里的us-west-2保持一致)
ip http aws region us-west-2
! 可选:启用需要的YANG模块(比如ietf-interfaces)
yang module ietf-interfaces

3. 验证IAM用户的权限

你使用的IAM用户必须拥有访问CSR 1000v RESTCONF的权限。登录AWS IAM控制台,给该用户添加类似下面的权限策略(可以根据实际需求调整资源范围):

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:DescribeNetworkInterfaces",
                "ec2:DescribeInstances"
            ],
            "Resource": "arn:aws:ec2:us-west-2:你的AWS账号ID:instance/你的EC2实例ID"
        }
    ]
}

4. 调试请求细节(可选,但有用)

在代码里添加一些调试输出,方便你确认请求的URL、状态码和响应内容,帮助进一步排查:

# 在发送请求前打印URL
print(f"Request URL: {url}")
r = requests.get(url, auth=authaws, headers=headers, verify=False)
# 打印响应状态码和原始内容
print(f"Response Status Code: {r.status_code}")
print(f"Response Raw Content: {r.text}")

额外提醒:关于HTTPS证书验证

你当前用verify=False跳过了证书验证,这在测试阶段可以临时用,但生产环境一定要配置有效的SSL证书,避免安全风险。


内容的提问来源于stack exchange,提问作者Khalil Mebarkia

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 09:13:14