密钥丢了怎么办?
很多人第一次接触加密系统,比如用SSH登录服务器或者配置Git时,都会被要求生成一对密钥。结果一不小心把私钥文件删了,再连就提示“Permission denied”。这种情况特别像你配了一把电子锁,钥匙却不知道扔哪儿去了。
如果没备份,基本只能重置。比如云服务商一般提供重置密钥登录的方式,但可能需要临时切换成密码登录。建议从一开始就养成习惯:生成密钥后立刻在安全的地方存一份副本,比如加密的U盘或密码管理器里。
多个项目用同一把密钥有风险吗?
有些人图省事,所有服务都用同一个SSH密钥对。这就像拿家里大门的钥匙去开公司、车库甚至朋友家的门——一旦泄露,影响范围太大。
更合理的做法是按用途分开。比如给GitHub配一个,公司服务器单独一个,测试环境再用另一个。OpenSSH支持使用 ~/.ssh/config 文件做管理:
Host github.com\n HostName github.com\n User git\n IdentityFile ~/.ssh/id_rsa_github\n\nHost dev-server\n HostName 192.168.10.5\n User admin\n IdentityFile ~/.ssh/id_rsa_dev
这样每次连接自动匹配对应密钥,不用手动指定,也降低了交叉风险。
如何安全地传输密钥?
新手常犯的一个错误是通过微信、邮件直接发送私钥文件。这相当于把银行卡和密码一起拍照发出去,非常危险。
私钥绝对不能明文传输。如果是团队协作,推荐使用密钥协商机制,比如通过可信渠道交换公钥。比如运维人员把成员的公钥收集起来,统一写入服务器的 authorized_keys 文件。私钥永远只保存在用户自己的设备上。
定期更换密钥有必要吗?
不像密码那样建议三个月一换,密钥本身强度足够的话,不需要频繁更换。但如果员工离职、设备丢失,就必须立即删除对应公钥,否则等于留了个后门。
可以配合自动化脚本定期检查服务器上的 authorized_keys 文件,清理长期未使用的条目。比如发现某个公钥对应的人已经半年没登录过,就可以标记为待确认。
密钥权限设置不当会怎样?
Linux下私钥文件权限太松是个常见隐患。如果 ~/.ssh/id_rsa 的权限是644,SSH客户端会直接拒绝使用,报错“Too open”。
正确的设置应该是只有所有者可读写:
chmod 600 ~/.ssh/id_rsa\nchmod 700 ~/.ssh
否则系统认为这个文件可能被其他用户访问,存在泄露风险,宁可中断连接也不让你继续。
用密码管理器存密钥可行吗?
有人问能不能把私钥放进1Password或KeePass里。技术上没问题,但要注意别导出明文到不安全的位置。这类工具更适合存储密钥的口令(passphrase),而不是替代密钥本身。
如果你给私钥设了密码短语,那每次使用都要输入一次。虽然麻烦点,但多一层保护,在设备被盗时能争取响应时间。