我有一个系统帐户,我运行一个数据库(即mongodb)。 默认情况下,它没有家。 现在我想从该帐户触发scp命令,使用SSH密钥身份validation到远程服务器,以导出备份。
我应该手动创build一个/ home / mongodb和/home/mongodb/.ssh文件夹来存储SSH密钥,就像普通用户的默认文件一样吗? 在那之后它仍然被认为是系统帐户吗?
谢谢!
使用SCP的-i选项,您可以指定任何SSH私钥(用户可以读取)作为“身份文件” – 这可以避免您的问题(只要可读,您可以将密钥放在任何地方MongoDB用户,你用-i :-)指定它
深入探讨你所问的问题, 通用的unix回答你的问题是把它们放在用户主目录下的.ssh目录中。 要在/ etc / passwd中查找主目录(如果不熟悉其格式,请参阅该文件的手册页)。
如果您注意到用户没有主目录(设置为无效或/ ),则可以为该用户创build一个主目录并更新他们的帐户以指向正确的主目录(这样做的工具因系统而异但是vipw通常是一个很好的起点)。 这减less了上面的问题。
至于什么是“制度账户”,这是一个宗教问题。 在我的环境中,“系统帐户”的数字UID低于1000,并且其密码被locking(encryption的密码设置为“*”)。
其他人会告诉你,因为它是一个“系统帐户”,它应该把nologin作为shell,或者主目录应该在特定的地方(或不存在),或者所有这些标准必须被满足: )
如果您正在运行Debian发行版,那么比在/ home / user中没有家的每个用户都拥有/ var / lib / user中的所有用户。 在那里你可以find,或创build(如果它不存在)目录.ssh /。 我不确定这个path是否也适用于其他分布(centos,…)。
最好设置一个普通的用户帐户,只需将shell设置为notty,然后使用ssh-keygen -t rsa来设置ssh文件夹的权限。