共计 1205 个字符,预计需要花费 4 分钟才能阅读完成。
在 Autodl 算力云环境中使用传统密码登录 SSH 存在几个明显的痛点:

- 安全风险高:密码容易被暴力破解,尤其是在公开网络上,一旦泄露可能导致服务器被入侵。
- 操作繁琐:每次连接都需要手动输入密码,频繁操作时效率低下。
- 会话中断需重复认证:长时间不操作或网络波动导致会话断开后,需要重新输入密码,影响工作连续性。
SSH 密钥登录 vs 密码登录
| 特性 | 密码登录 | SSH 密钥登录 |
|---|---|---|
| 安全性 | 较低,易受暴力破解 | 高,基于非对称加密 |
| 便利性 | 每次需输入密码 | 配置后无需输入密码 |
| 适用场景 | 临时访问 | 长期、频繁访问 |
密钥算法选择
| 算法 | 安全性 | 性能 | 密钥长度 |
|---|---|---|---|
| RSA | 高 | 中等 | 2048+ |
| Ed25519 | 极高 | 高 | 256 |
核心步骤
1. 本地生成密钥对
# 生成 Ed25519 密钥对,- C 参数添加注释
ssh-keygen -t ed25519 -C "autodl_worker"
关键参数说明:
-t ed25519:指定使用 Ed25519 算法-C "autodl_worker":添加注释,便于识别密钥用途
2. 公钥上传至 Autodl 控制台
- 登录 Autodl 控制台
- 进入实例管理页面
- 找到 SSH 密钥管理选项
- 上传生成的公钥(通常是
~/.ssh/id_ed25519.pub)
3. 服务器端配置
# 确保.ssh 目录权限为 700
chmod 700 ~/.ssh
# 设置 authorized_keys 文件权限为 600
chmod 600 ~/.ssh/authorized_keys
权限设置至关重要,不当的权限会导致连接失败。
测试连接
ssh -i ~/.ssh/autodl_key user@instance
安全增强措施
- 禁用密码登录
编辑/etc/ssh/sshd_config:
PasswordAuthentication no
然后重启 SSH 服务:
sudo systemctl restart sshd
- 使用 ssh-agent 管理密钥
# 启动 ssh-agent
eval "$(ssh-agent -s)"
# 添加密钥
ssh-add ~/.ssh/autodl_key
-
多租户环境下的密钥隔离
-
为不同用户 / 项目生成独立密钥
- 使用不同的密钥名称和注释区分
- 在
~/.ssh/config中配置别名
常见错误排查
Permission denied (publickey)
可能原因:
- 公钥未正确添加到
authorized_keys - 文件权限设置不正确
- 密钥未正确加载到 ssh-agent
- SELinux 策略限制
- 服务器未启用密钥认证
SELinux 导致连接失败
解决方法:
# 临时方案
sudo restorecon -R -v ~/.ssh
# 永久方案
sudo setenforce 0
思考题
如何实现跨区域 Autodl 实例的密钥自动分发?可以考虑以下方案:
- Ansible Vault:通过 Playbook 自动化部署密钥
- HashiCorp Vault:集中管理密钥并动态分发
- 自定义脚本配合云 API 批量操作
这些方案各有优缺点,适合不同规模和需求的场景。你可以根据实际情况选择最适合的方案,或者结合多种方案实现更灵活的密钥管理。
正文完
