将 authorized_keys 放在中心位置是个好主意吗?

将 authorized_keys 放在中心位置是个好主意吗?

我正在配置云服务器以运行以下堆栈:Ruby,Passenger,Apache;在 Ubuntu 10.04(Lucid Lynx)下。

为了使服务器更易于管理,我在 上设置了 RSA 密钥rootwww-data以便可以ssh进入服务器。我不喜欢的是 的www-data目录.ssh位于其中,/var/www这是 apache 的默认目录设置。我担心的是,如果 apache 配置不正确,那么目录.ssh可能会暴露。

我偶然发现了一种解决方案,即通过更改将文件移动到~/.ssh/authorized_keys中心位置。这有两个优点:密钥的单一位置,并且不必担心糟糕的 Apache 配置。我能想到的唯一缺点是现在每个用户都可以登录服务器(显然,中心密钥文件是一把双刃剑。)AuthorizedKeysFile/etc/ssh/sshd_config

这个配置中我遗漏了什么吗?我是否过度暴露了自己,或者这是否比单个authorized_keys文件更好的解决方案?

我是绿色的在服务器管理方面,但我完全准备好因为做坏事而被骂。:D

答案1

所有的密钥文件可以集中在同一个目录中,而不是混合在同一个文件中。

sshd_config只需像这样设置文件:

AuthorizedKeysFile  /etc/ssh/authorized_keys/%u

在您的服务器上:

  • www-data 密钥将位于/etc/ssh/authorized_keys/www-data
  • 根键将位于/etc/ssh/authorized_keys/root

关于访问权限,sshd 接受以下设置:

/etc/ssh/authorized_keys归 755 所有root:root,且模式为 755。密钥文件归 644 所有root:root,且模式为 644。

其他模式可能有效但我尚未测试过。

答案2

一般来说,我不会做你建议的事情。它打破了常见的假设(比如~/.ssh/authorized_keys为用户工作),并引入了你在问题中已经提到的问题。如果你在实施之前就看到了明显的问题,这意味着你的解决方案并不理想。

从安全角度来看,我也认为这是糟糕的让所有人共享一个服务帐户的想法:现在只有你一个人,你知道你就是那个做出改变的人。5 年后,当你有 5 个管理员时,你会想知道谁更改了什么,而挖掘审计日志来查看谁在什么时候使用了什么密钥是一件非常麻烦的事情。
你最好让人们以自己的身份登录并使用sudo或类似的东西来提升他们的权限并做他们需要做的任何事情。


如果你仍然想集中管理 SSH 密钥,我建议你研究一下类似的部署系统木偶或者radmind管理/分发authorized_keys文件到适当的~user/.ssh/目录(或开发一个自制的解决方案,将它们 SCP 到位)。
当你扩展到多个服务器时,你可能需要查看LDAP 公钥补丁对于旧版本的 OpenSSH(或AuthorizedKeysCommand指示以及较新版本 OpenSSH 中的适当脚本),这样您就可以集中您的用户而不必在整个网络上分发他们的密钥,但这对您来说可能还很遥远。

相关内容