系统用户的 SSH 密钥的正确位置是什么?

系统用户的 SSH 密钥的正确位置是什么?

我有一个系统帐户,用于运行数据库(即 mongodb)。默认情况下,它没有主目录。现在我想从该帐户触发 scp 命令,使用 ssh 密钥身份验证到远程服务器,以导出备份。

我是否应该手动创建 /home/mongodb 和 /home/mongodb/.ssh 文件夹来存储 SSH 密钥,就像普通用户的默认设置一样? 此后它仍被视为系统帐户吗?

谢谢!

答案1

使用-iSCP 选项,您可以指定任何 SSH 私钥(用户可以读取)作为“身份文件”——这可能会消除您的问题(您可以将密钥放在任何您想要的地方,只要 MongoDB 用户可读并且您指定它-i:-)


然而,深入研究你提出的问题,通用 unix 答案您的问题的答案是将它们放在用户主目录下的 .ssh 目录中。要找到该主目录,请查看 /etc/passwd(如果您不熟悉其格式,请参阅该文件的手册页)。

如果如您所指出的,用户没有主目录(它被设置为无效的目录,或/),您可以为该用户创建一个主目录并更新其帐户以指向正确的主目录(执行此操作的工具因系统而异,但vipw通常是一个好的起点)。这将其简化为上述问题。

至于什么构成“系统帐户”,这是一个宗教问题。在我的环境中,“系统帐户”的数字 UID 低于 1000,并且密码被锁定(加密密码设置为“*”)。
其他人会告诉你,要成为“系统帐户”,它应该有nologinshell,或者主目录应该在特定位置(或不存在),或者全部必须满足这些标准 :-)

答案2

最好设置一个常规用户帐户,并将其 shell 设置为 notty,然后使用 ssh-keygen -t rsa 来设置 ssh 文件夹权限。

答案3

如果您运行的是 Debian 发行版,那么每个在 /home/user 中没有主目录的用户的主目录都在 /var/lib/user 中。您可以在那里找到或创建(如果它尚不存在)目录 .ssh/。我不确定该路径是否也适用于其他发行版(centos,...)。

相关内容