我想删除手动将公钥复制到每个服务器以授予访问权限的过程。
我在这里试图解决的主要问题是:
- 有多个云提供商的多台服务器。
- 每当有新人加入团队时,我们都必须将他们的公钥复制到所有服务器,以便他们可以登录。
- 这个过程是重复和繁琐的,我想用某种自定义的身份验证机制来删除这个复制粘贴部分。
我调查过:
基于Google身份验证器的ssh身份验证
- 这需要在所有服务器上设置环境以便它可以工作,这很好,但是所有服务器都有自己的密钥,用户必须逐个为所有服务器注册。
- 此外,Google Authenticator 应用中将存在多个 TOTP,每个服务器一个,这可能会造成混乱,而且体验看起来也不好。
- 如果令牌匹配部分可以以某种方式卸载到中央服务器,并且 ssh 服务器只需将令牌传递给该服务器,那么此方法就可以起作用。
我在 Azure 服务器上看到了这种情况:对于 Azure 服务器,如果启用了基于 Azure 的登录,那么每当用户尝试登录服务器时(在终端中执行 ssh 命令后),都会打开浏览器并要求用户在其中输入电子邮件和密码,成功登录后,将向他们提供令牌。然后,用户必须将令牌输入终端才能访问服务器。
- 我试图找出这项技术的名称以及是否有免费版本可用?
创建一个有密码的 Linux 用户,然后在团队中共享用户名/密码,以便他们可以使用。然后可以在 Lastpass 上共享用户名和 IP。这种方法对审计没有帮助,但它可以工作,我把它作为最后的手段。
谢谢!
答案1
你好,如果我理解了您的问题,我认为可以通过使用 OpenSSH 安全文件复制
scp
命令创建一个简单的脚本来解决它。如果整个团队都需要对相同的服务器拥有相同的权限,那么我的建议是:
- 在您自己的计算机中创建一个authorized_keys文件。
- 根据团队的需要手动更新该文件。(可以使用一个脚本来执行这两项操作)。
创建一个脚本来自动将更新的authorized_keys从您的计算机复制到您的服务器:
scp
需要服务器权限才能运行,这就是为什么脚本应该从您或任何其他管理员计算机运行。
在您的机器上找到该脚本
/usr/local/sbin/.
,可以选择从您电脑上的任何目录运行该脚本。通过命令赋予脚本执行权限
chmod a+x /usr/local/sbin/scriptName
。- 剧本:
#/bin/bash!
read -p "Please Enter Path:" -r r1
scp $r1 username@serverip:/home/username/.ssh/authorized_keys
#scp $r1 username@serverip:/home/username/.ssh/authorized_keys
#scp $r1 username@serverip:/home/username/.ssh/authorized_keys
#add more servers if needed....
#you could also use a switch to use which servers are relavent for the new user.
请注意,如果您出于安全或其他原因在其他端口上运行 ssh 服务,则应运行scp
带有选项的命令-P
。
scp -P sshPort $r1 username@serverip:/home/username/.ssh/authorized_keys
。
- 正如我之前所说,您可以使脚本更好,并通过“开关”添加一些过滤器来选择您想要添加密钥的服务器。
- 如果情况像您所说的那样简单,并且加入的每个团队成员都需要所有服务器的权限,那么这个解决方案应该可行。
希望这能对你有所帮助。
如果有任何不明白的地方或者需要更多帮助,请发表评论。