如果我为用户创建 SSH 密钥设置abc
,则abc
无需输入密码即可登录到远程服务器。
使用相同的abc
SSH 设置,其他用户是否def
也可以通过 SSH 连接到远程服务器而无需输入密码?
我的意思是如果每个用户想要在无需输入密码的情况下连接远程服务器,他们是否都应该设置 SSH 密钥?
答案1
.ssh/authorized_keys
每个用户都应该有自己的 SSH 密钥,并且应该在用户需要访问的任何普通用户的文件中设置与这些用户相关的公钥。
您的问题不太清楚,但我会尝试详细阐述您所说的一些内容。
首先,用户和密钥是两码事。一个用户可以拥有多把密钥,或者多个用户可以共享同一把密钥。这完全取决于您可能要处理的访问级别以及您希望其他人通过无密码访问获得什么。
一般来说,从安全角度来看,与不同用户共享同一个密钥并不是一个好主意。假设您想撤销一个用户的访问权限……您会怎么做?唯一有效的方法是从服务器中删除密钥……但随后您必须创建一个新的 SSH 密钥并再次与其他用户共享。
对于一般用途来说,最好的选择是给予每个用户他们自己的密钥。
但由于密钥和用户是不同的东西,您始终可以让远程用户成为通用用户,并根据需要添加/删除密钥。
例如,许多编码设置允许多个用户使用一个公共deploy
用户,管理员(或负责人)可根据需要添加/删除密钥。每个部署代码的人都将通过该deploy
用户进行部署,并且可以这样做,因为他们的公钥已添加到用户帐户的.ssh/authorized_keys
文件中deploy
。如果员工离开公司或不再与项目有联系?只需删除他们的特定密钥,生活就可以继续。
但一般来说,每个用户都应该有自己的 SSH 密钥,然后通过服务器上的通用用户帐户之类的方式使用这些密钥来管理访问。
答案2
破坏 SSH 安全性并非易事。每个用户在自己的目录中都有自己的私钥(除了存储在不同目录中的 SSH 主机密钥)。为了让其他人使用您的 SSH 私钥,他们需要能够读取它,而当该密钥的权限打开时,SSH 通常不会运行。
还要注意,密码与密码短语是有区别的,密码与密码短语用于保护存储在客户端并与用户会话相关联的私钥,您可能正在指密码与密码短语有关。
当然,可能存在未知的漏洞,使得用户能够通过读取未得到充分保护的内存以某种方式获取私钥,但这不是普通人能够做到的。