服务对象与地域限制
PuppyIP 仅面向海外合规企业及其授权人员提供服务,不面向中国大陆地区开放或提供代理服务。本服务仅限用于中国大陆境外的合法业务活动,严禁在中国大陆境内使用本服务。
代理 IP 或服务器位于境外,不改变上述限制。不得通过中转、转接、共享或转售向中国大陆境内的最终使用者提供本服务。使用前请阅读用户服务协议。
本文要点
- 控制台新建服务器默认 SECRETS_MANAGER;CLI/API 未指定 HostKeyStorageType 时,默认 SERVICE_MANAGED。
- 现有主机密钥从服务托管转到 Secrets Manager,要求它在 2026 年 10 月 14 日或之后导入;更早的密钥需向 AWS Support 申请例外。
- UpdateHostKey 设为 SECRETS_MANAGER 时,即使原本已这样存储,也需 transfer:ExportHostKey;使用自管 KMS 还要检查服务关联角色的解密权限。
- secret 的生命周期由 Transfer Family 管理,不应手工删除或改写,也不使用 Secrets Manager 自动轮换;主机密钥操作是最终一致的。
先分清服务器身份与用户登录凭据
AWS 在 2026 年 10 月 14 日的公告中,新增将 SFTP 服务器主机密钥存入客户账号 Secrets Manager 的能力。此前密钥由服务保存,无法取出对应的私钥材料;新方式便于在迁移或灾备时复用原有服务器身份。该能力适用于提供 Transfer Family 的全部 AWS 区域。
主机密钥让客户端确认连接的是哪台服务器,known_hosts 中保存的是对应公钥;它不是用户登录私钥,也不会替代用户认证和文件访问授权。意外更换主机密钥可能触发不信任提示,或让自动连接脚本失败。
创建与更新使用不同字段,默认值也要分入口看
新建服务器时,先确定是否需要取回并复用主机密钥。控制台默认 SECRETS_MANAGER,而 CLI/API 在未指定 HostKeyStorageType 时默认 SERVICE_MANAGED。使用 CreateServer 时,通过 HostKeyStorageType 明确选择其中一种;不提供主机密钥时,Transfer Family 会生成密钥。
导入或更新主机密钥时,核对的是 ImportHostKey、UpdateHostKey 的 StorageType,值同样为 SERVICE_MANAGED 或 SECRETS_MANAGER。不要把创建服务器的字段名直接套到主机密钥更新操作,也不要从新服务器默认值推断旧服务器已自动迁移。
旧密钥先查导入日,再检查调用者权限
转换已有 SERVICE_MANAGED 主机密钥前,先核对它的导入日期。文档只允许在 2026 年 10 月 14 日或之后导入的密钥直接改为 SECRETS_MANAGER;更早的密钥需要联系 AWS Support 申请例外,并提供 AWS 账号 ID。这不是服务器创建日期规则,也没有保证所有旧的自动生成密钥都能直接转换。
接着检查更新调用者的权限:调用 UpdateHostKey 并把 StorageType 设为 SECRETS_MANAGER,必须具备 transfer:ExportHostKey,即使密钥原本已使用 Secrets Manager 存储也一样。ExportHostKey 是仅用于授权判断的权限动作,不对应一个可调用的导出 API。
首次使用这种存储时,还需确认调用者具有 iam:CreateServiceLinkedRole。Transfer Family 会在账号中创建 AWSServiceRoleForTransfer 服务关联角色,之后用它读取 secret、向新连接提供主机密钥;这项创建权限与前面的 ExportHostKey 不能互相替代。
选用自管 KMS,密钥策略必须让服务角色解密
导入或更新主机密钥时,可以用可选 KmsKey 参数指定客户管理的 KMS 密钥 ARN;不指定则使用 Secrets Manager 的 AWS 托管密钥。已有 Secrets Manager 存储需要更换加密密钥时,用 UpdateHostKey 提供新的 KmsKey,Transfer Family 会重新加密 secret。
采用客户管理的 KMS 密钥前,检查其 key policy 是否允许 AWSServiceRoleForTransfer 调用 kms:Decrypt;角色自身的托管策略不包含这项解密授权。官方示例还通过 kms:ViaService 和 kms:EncryptionContext:SecretARN,把授权限制到相应区域的 Secrets Manager 与 transfer! 前缀 secret,账号、区域和分区占位值都需按实际环境核对。
跨区域复用主机身份,不等于整套故障切换完成
考虑一个假设案例:区域 A 的 SFTP 服务有区域 B 的备用服务器,客户端使用同一个公共 DNS 名称。让两台服务器使用同一主机密钥,可以保留客户端已信任的服务器身份,避免仅因切到备用服务器便要求重新信任另一把主机密钥。
这只解决主机身份的一部分。公告没有承诺自动复制 secret、切换 DNS、同步文件或完成用户授权,也没有零中断保证;这些仍需在实际迁移或灾备计划中分别安排。应先验证原有主机身份与客户端信任要求,而不是为了消除提示而随意换钥。
通过主机密钥接口管理,别手工改托管 secret
完成获准的变更后,可用 DescribeHostKey 或 ListHostKeys 核对 StorageType;采用 Secrets Manager 时,返回值还包含 SecretId。Transfer Family 创建的 secret 名称以 transfer! 开头,生命周期由服务控制,不能把它当成任意手工维护的配置项。
不能通过 Transfer Family API 或 Secrets Manager 控制台改写已有主机密钥值,服务也不使用这些 secret 的自动轮换。需要轮换主机密钥时,文档给出的方式是导入新主机密钥并删除旧密钥;用 DeleteHostKey 或删除服务器后,Transfer Family 会安排对应 secret 删除,不应绕过它手工删 secret。
手工删除 secret,或移除服务关联角色对 secret、KMS 密钥的访问,都会阻止读取主机密钥并使新连接失败。主机密钥操作为最终一致,提交成功后仍需观察实际状态与客户端连接结果,不能把一次成功响应当作所有连接已完成切换。
资料来源
常见问题
可以给 Transfer Family 管理的 secret 添加自己的标签吗?
可以。文档允许添加自定义标签,并提供 aws:transfer:owningServerArn、aws:transfer:owningHostKeyArn 和 aws:secretsmanager:owningService=transfer 等服务标签,帮助定位归属或限定访问范围。能加标签不代表可以手工修改密钥值或删除 secret。
新增一种主机密钥类型,是否一定不会影响老客户端?
不是。Transfer Family 支持 RSA、ECDSA、ED25519 等类型,但文档提醒:客户端已经开始使用服务器后,再增加密钥类型也可能造成兼容性或信任问题,影响可能类似替换原密钥。应把算法选择与客户端兼容性一起纳入变更评估。
这项能力是否包含免费的 Secrets Manager 与 KMS 使用?
已核公告和两份文档没有给出 Secrets Manager、KMS 的费用表或免费额度,不能据此确认免费。跨区域可复用主机密钥也不是免费复制、调用或灾备基础设施的承诺,费用需要按实际使用的服务另行核对。