我正在公司环境中设置 git。Git 操作主要通过 SSH 进行,使用单个帐户,并使用 SSH 密钥进行访问控制。(http 将用于帐户配置、基于 Web 的代码浏览,但仅用于其他用途。)
但拥有永不过期的 SSH 密钥的想法对我来说听起来很愚蠢。只需一台被入侵的桌面就会泄露私钥,入侵者就可以永久访问我们的知识产权。
我谷歌搜索了很多,但关于这方面的信息很少。这让我很担心,因为我不认为我走错了路。
定期让密钥过期是相当容易的,尽管 GitLab 和 Stash 等工具并不会让事情变得简单。我们有一个“ git login
”包装器脚本,用于将 SSH 公钥发送到服务器。它可以确保旧密钥不会被重复使用,还可以确保使用特殊密钥(如 中所述~/.ssh/config
),这样我们就不会定期覆盖某人的~/.ssh/id_da*
密钥并停止他们的其他登录。(尽管对于我的一些 lon-linux(Windows)用户来说,在 ssh 文件中指定的非默认位置使用密钥config
可能会有问题。)
有其他人这样做过吗?行业最佳实践是什么?
更新
好的,看起来答案的一部分是“这正是 SSH 密码的用途。”所以剩下的问题如下
有没有办法强制使用并定期更改密码?我假设人们会遵守,只是对他们来说要简单一点。
话虽如此,ssh 密码短语会阻碍在 cron 任务中执行 git 操作。如果不能执行,那将是一个真正的障碍。
答案1
对你的问题的回答是否定的,ssh 中没有办法强制定期更改密码。
由于您使用的是单个帐户,因此所有公钥可能都位于单个 authorised_keys 文件中,因此您可以通过从中删除密钥来使密钥无效。不过这似乎太费力了,人们可以在不同的密钥上使用相同的密码短语。
缓解问题的一种方法是使用多因素身份验证,这样,即使密钥/密码被泄露,也会有另一层保护。