如何在创建Digital Ocean Droplet时取消密码,仅用SSH密钥访问
解决DigitalOcean Droplet创建后自动生成密码的问题
要实现仅通过SSH密钥访问、取消系统自动生成并发送的root密码,需从API调用配置和Droplet后续验证两方面入手:
一、API调用时的关键配置
在通过Java调用DigitalOcean API创建Droplet时,必须确保请求满足以下要求:
- 正确传入已注册的SSH密钥:在请求体的
ssh_keys数组中,填入你在DigitalOcean账户中预先注册的SSH密钥ID或指纹(两种格式均可)。 - 显式禁用密码认证:添加
enable_password_auth字段并设置为false,强制关闭密码登录通道。
Java请求体示例
String createDropletPayload = "{\n" + " \"name\": \"my-ssh-only-droplet\",\n" + " \"region\": \"sgp1\",\n" + " \"size\": \"s-1vcpu-1gb\",\n" + " \"image\": \"debian-12-x64\",\n" + " \"ssh_keys\": [123456, \"00:11:22:33:44:55:66:77:88:99:aa:bb:cc:dd:ee:ff\"],\n" + " \"enable_password_auth\": false\n" + "}";
注意:请求头需携带你的DigitalOcean API密钥,格式为
Authorization: Bearer YOUR_API_KEY
二、Droplet创建后的验证与修复
如果API调用后仍收到密码邮件,登录Droplet进行以下检查:
- 编辑SSH配置文件
/etc/ssh/sshd_config,确保以下参数设置正确:PasswordAuthentication no ChallengeResponseAuthentication no PermitRootLogin prohibit-password - 重启SSH服务使配置生效:
sudo systemctl restart sshd
常见问题排查
- 若
ssh_keys字段传入的密钥ID/指纹未在DO账户注册,API会忽略该配置,自动生成密码。可在DO控制台的「SSH密钥」页面核对密钥信息。 - 避免在
user_data字段中设置root密码,这会覆盖无密码登录的配置。
内容的提问来源于stack exchange,提问作者EAOE
相关产品推荐
相关产品推荐

