是authorized_keys的中心位置是个好主意吗?

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

在想让服务器更容易pipe理的过程中,我在root上设置了RSA密钥,并在www-data上设置了ssh密钥,这样我就可以进入服务器了。 我不喜欢的是www-data.ssh目录位于/var/www这是默认的apache目录设置。 我担心的是,如果Apacheconfiguration不正确,那么.ssh目录可能被暴露。

我遇到了解决scheme,通过更改/etc/ssh/sshd_config AuthorizedKeysFile~/.ssh/authorized_keys文件移动到中央位置。 这有2个优点:一个键位置,而不必担心一个糟糕的Apacheconfiguration。 我能想到的单一的骗局是,现在每个用户都可以在服务器上login(显然是中央密钥文件的双刃剑)。

有没有什么我在这个configuration错过了? 我是否暴露自己,或者这是一个比个人authorized_keys文件更好的解决scheme?

在服务器pipe理方面,我是绿色的 ,但是完全可以被称为坏名字来做坏事。 :d

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

    只需像这样设置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_keysroot:root拥有并且具有模式755.密钥文件由root:root拥有并且具有模式644。

    其他模式可能工作,但我没有testing它们。

    一般来说,我不会做你的build议。 它违反了常见的假设(如~/.ssh/authorized_keys为你的用户工作,并介绍了你已经提到的问题,如果你在实现之前看到明显的问题,这意味着你的解决scheme并不理想。

    安全方面,我也认为让每个人共享一个服务帐户是一个极端的主意:现在只是你,你知道你是一个正在做出改变的人。 5年来,当你有5个pipe理员,你会想知道谁改变了什么,并通过审计日志挖掘谁是谁使用什么关键时,是一个皇家的痛苦。
    你最好有人login,使用sudo或类似的东西来升级他们的特权,做他们需要做的事情。


    如果你仍然想集中SSH密钥,我build议看一下像Puppet或radmind这样的部署系统来pipe理/分发authorized_keys文件到合适的〜user ~user/.ssh/目录(或者把一个本地化的SCP解决scheme地点)。
    在扩展到多个服务器时,您可能需要查看较早版本的OpenSSH(或AuthorizedKeysCommand指令以及较新版本的OpenSSH中的相应脚本) 的LDAP公钥修补程序 ,以便您可以集中您的用户,而不必把你的密钥分发到你的networking上,但是这可能对你很有帮助。