![如果用户从特定主机远程登录,如何配置 SUDO 以实现无密码登录](https://linux22.com/image/570594/%E5%A6%82%E6%9E%9C%E7%94%A8%E6%88%B7%E4%BB%8E%E7%89%B9%E5%AE%9A%E4%B8%BB%E6%9C%BA%E8%BF%9C%E7%A8%8B%E7%99%BB%E5%BD%95%EF%BC%8C%E5%A6%82%E4%BD%95%E9%85%8D%E7%BD%AE%20SUDO%20%E4%BB%A5%E5%AE%9E%E7%8E%B0%E6%97%A0%E5%AF%86%E7%A0%81%E7%99%BB%E5%BD%95.png)
我想按如下方式配置我的 Debian box sudoers 文件:
- 如果 USERNAME 从 IP aaaa 远程登录:使用 sudo 不需要密码
- 如果 USERNAME 是从其他地方或本地远程登录的:需要密码才能使用 sudo
我知道如何使它们始终被需要,或者永远不需要,但我不知道如何为多个位置进行配置。
答案1
我认为您误解了 sudoers 文件中主机列表的用途。它的存在是为了让您能够在多台主机上使用同一个文件,但不允许在每个主机上都拥有相同的权限。
相反,您应该使用 ssh 密钥来允许以 root 身份无密码登录。您可以为相关用户创建两个密钥。使用密码短语加密其中一个密钥,并保留另一个密钥为明文。在您的服务器上,将公钥放入 root 的 .ssh/authorized keys 文件中。然后将其添加到from="a.a.a.a"
无密码公钥的行前面,以防止任何人从其他主机使用它。
这要求您允许 root 通过 ssh 登录,但您应仅允许使用 ssh 密钥的 root 登录。确保您的 sshd_config 具有以下设置:
PermitRootLogin without-password
答案2
我不确定是否已经有可以执行此操作的模块,但您绝对可以使用 PAM 系统来实现这一点。
可以使用该行将确认用户已通过 ssh 登录并使用正确 IP 的模块输入到 sudo 配置中,sufficient
然后它将授予访问权限。
我会看一下http://www.netbsd.org/docs/guide/en/chap-pam.html#pam-appl-prog并可能从那里开始或使用 pam_rhosts 作为样本。
requisite authorized_user #sudoers file / existing module?
sufficient via_ssh_from_listed_host
required password #usual sudo thing
这就是所需的模块模式。