SSH私钥应设强口令并严格限制文件权限(私钥600、~/.ssh目录700),配合ssh-agent复用解密句柄,避免明文传输或第三方工具加密存储。

Linux 下 SSH 密钥本身不“加密存储”,但私钥文件可受口令(passphrase)保护——这是最常用、最有效的本地防护机制。它不是对文件做磁盘级加密,而是用口令派生密钥来加密私钥内容,确保即使文件被复制,也无法直接使用。
私钥加口令是默认推荐的安全起点
生成密钥时,务必设置强口令。命令中不跳过提示:
-
ssh-keygen -t ed25519 -a 100(推荐 ed25519,比 RSA 更快更安全) - 遇到 Enter passphrase 提示时,输入 8 字符以上、含大小写字母+数字+符号的组合
- 口令不会显示,输两次确认;空口令 = 私钥裸奔,等同于密码明文存硬盘
权限控制是基础防线
口令再强,若私钥文件能被其他用户读取,就毫无意义。必须严格限制文件权限:
- 私钥(如
~/.ssh/id_ed25519)权限必须为600:chmod 600 ~/.ssh/id_ed25519 -
~/.ssh目录权限必须为700:chmod 700 ~/.ssh - 公钥(
.pub文件)可设为644,无需保密
避免手动复制私钥,杜绝明文外泄
私钥绝不能用 scp、rsync 或剪贴板跨机传输;也不应存入 Git、网盘或共享目录:
- 多设备需密钥?用
ssh-agent+ 口令解锁一次,复用到本次会话所有连接 - 首次添加私钥进 agent:
ssh-add ~/.ssh/id_ed25519(会提示输入口令) - agent 缓存的是解密后的私钥句柄,不写磁盘,退出终端即失效
- 如需长期驻留,配合
keychain工具(非系统自带),但需评估风险
不依赖第三方“加密存储”工具
Linux 原生方案已足够:口令加密 + 权限控制 + agent 管理。额外安装密钥管理器(如 GNOME Keyring、KeePassXC 插件)反而增加攻击面和兼容性问题:
- GNOME Keyring 在桌面环境自动集成,但 CLI 终端常无法调用
- 专用密码库若配置错误,可能把私钥以明文形式缓存或日志输出
- 运维脚本、CI/CD 流水线中,agent + 口令交互式解锁更可控、审计更清晰


















