我曾在一些组织工作过,他们不需要为每个想要登录机器的人创建一个新的 Ubuntu 用户,而是只需将每个用户的 ssh 密钥添加到.ssh/authorized_keys
,然后每个人ssh
都可以作为 (例如)ubuntu@host
或ec2-user@host
。 (顺便说一句,我也曾在实验室环境中看到过在共享 Mac mini 上进行这种做法。)这是公认的做法,还是反模式?
所讨论的主机主要用于测试,但也采取一些通常需要每个用户配置并被跟踪为由特定用户完成的操作,例如创建和推送 git 提交,这些操作当前使用通用 git 用户完成。
答案1
答案2
首先,这并不让我感到震惊,而且我在一个非常安全的环境中工作。每个人都有自己的用户、机器和 ssh 密钥,在服务器上工作时,我们会以 root 或其他用户的身份通过日志中继 ssh 进入。我们所做的一切都被记录为由 ssh 密钥的所有者完成的,因此问责是可以的。
替代方案是什么?很多事情必须以特定用户身份完成,更不用说 root 了。Sudo?对于某些非常受限制的任务来说,这没问题,但对于系统管理机器来说就不行了。
但是我不确定你最后一段话的意思,你的意思是有人可以向普通用户推送 git commit 吗?这会破坏责任制,破坏责任制是不好的。我们从登录的机器上执行 git,并使用我们的 ssh 密钥向 git 进行身份验证...
身份验证、授权和记帐(AAA)是经典的表达:您已使用 ssh 密钥进行身份验证,您被授权执行普通用户可以执行的任何操作,因为您的密钥在 authorized_keys 中,并且您需要记帐,以便事后可以审查您所做的事情。
答案3
这显然取决于系统的使用情况。如果是偶尔用于测试的系统,对我来说没问题。我们也有这样的系统。如果公司没有任何类型的身份管理(LDAP、IPA),那么在随机系统上创建新用户而没有任何远程控制就相当麻烦。
但对于日常工作来说,如果有人犯错导致整个公司无法运转,那就不是好主意了。
答案4
一般来说,共享一个帐户不是一个好主意,原因如下:
- 为此用户所做的每个设置都会影响所有登录的用户。(提示、别名……)
- 你失去了找出谁做了什么的可能性(问责制)
- 帐户配置中的一个错误(例如意外删除 ssh kay)会影响使用该用户帐户的每个人(在该示例中为锁定)。
当然还有更多的缺点...但我不想进一步讨论。
关键是,您可能需要共享一个帐户来管理在某个用户帐户下执行的服务,所有管理员都应该能够访问该服务。
在这样的设置中,您可以共享此帐户登录(出于上述原因,我宁愿不这样做)或者您单独登录并将用户切换到共享帐户(我建议这样做)。
审计工具仍然允许您跟踪谁执行了什么但仍然共享同一个帐户。