SFTP 服务器上的 AWS Transfer 权限被拒绝

use*_*868 15 ftp sftp amazon-web-services

我可以使用cyberduck 或filezilla 登录我的服务器,但无法读取我的主目录。s3 存储桶"mybucket"存在。在网络鸭子我看到

"Cannot readdir on root. Please contact your web hosting service provider for assistance." and in Filezilla "Error: Reading directory .: permission denied"

即使我可以连接到服务器。

我是否缺少以下政策中的某些用户权限

这些是我的权限

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "VisualEditor0",
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Resource": "arn:aws:s3:::MYBUCKET"
        },
        {
            "Sid": "VisualEditor1",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObject"
            ],
            "Resource": "arn:aws:s3:::MYBUCKET/*"
        },
        {
            "Sid": "VisualEditor2",
            "Effect": "Allow",
            "Action": "transfer:*",
            "Resource": "*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

这些是我的信任关系

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "s3.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        },
        {
            "Effect": "Allow",
            "Principal": {
                "Service": "transfer.amazonaws.com"
            },
            "Action": "sts:AssumeRole"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

小智 26

用户角色应该是:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "AllowListingOfUserFolder",
            "Action": [
                "s3:ListBucket",
                "s3:GetBucketLocation"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:s3:::BUCKET_NAME"
            ]
        },
        {
            "Sid": "HomeDirObjectAccess",
            "Effect": "Allow",
            "Action": [
                "s3:PutObject",
                "s3:GetObject",
                "s3:DeleteObjectVersion",
                "s3:DeleteObject",
                "s3:GetObjectVersion"
            ],
            "Resource": "arn:aws:s3:::BUCKET_NAME/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

用户信任关系:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "transfer.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

您的用户的主目录应该是 /BUCKET_NAME

  • *这应该是公认的答案!* (2认同)
  • 这个答案让我省了很多心痛。我正在设置 SFTP,我的默认角色/策略与 s3.amazonaws.com 有信任关系。连接会给我一个错误,指出“无法承担角色”。真正的问题是我需要与 transfer.amazonaws.com 而不是 s3.amazonaws.com 建立信任关系。 (2认同)