我想实现以下 SSH 授权算法:
- 尝试通过 user 密钥授权
username。 - 如果没有成功,请立即通过密码 as 开始授权
defaultuser。
这样的算法应该适用于某个子网上的所有主机。
是否可以使用 SSH 配置或单独的工具来实现?如果这条路根本不合适,效率低下或不安全 - 告诉我正确的方法,这样的答案也适合我。
关于上下文的一些信息。有一个我在其中部署虚拟机的子网。新创建的可以通过默认用户和密码访问。之后,我创建了自己的用户,对他们具有 sudo 权限,添加了一个公钥。我希望授权始终在第一次尝试时通过。
$(whoami)如果它们匹配,则无需进行任何调整defaultuser。
例如,您可以使用这样的包装器 shell 函数(没有第一行和最后一行,它变成一个 shell 脚本):
这只是一个概念作品。只检查参数的数量。假设只有一个参数——我们试图连接的机器的名称。
进行了两次连接尝试。第一个 - 通过当前用户的名称(或通过配置
~/.ssh/config)并禁止密码验证。如果尝试失败,则进行第二次尝试,用户defaultuser已获得密码身份验证的明确许可。ps 试图保持语法与 posix 兼容。
您可以通过将 ssh_config 设置为按掩码选择主机并为这些主机设置 User defaultyser 来修复 ssh_config