在工作中,我们在 UNIX 上有一个非 root 共享登录帐户,用于管理特定应用程序。策略是不允许直接登录共享帐户;您必须以自己的身份登录并使用“su”命令切换到共享帐户。这是出于日志记录/安全目的。
我已经开始使用带有代理的 SSH 公钥/私钥身份验证,这样我每天只需输入一次密码,然后让代理转发功能在当天的剩余时间内消除密码提示。这真的很好。
但是,有些系统被锁定了,所以我必须使用“su”命令才能访问共享帐户。哎呀!又要一直输入密码了!
使用 SSH 公钥/私钥身份验证记录的信息是否足够,以便我有合理的机会请求更改策略以允许在使用公钥/私钥的情况下远程登录共享帐户?
我让管理员查看了 /var/log/secure,它只是说某个特定 IP 地址的用户帐户接受了公钥。它没有说明这是谁的公钥,也没有说明谁的私钥进行了身份验证。
答案1
答案2
另一种方式是移出authorized_keys
用户范围(例如/etc/ssh/authorized_keys
),以便只有系统管理员可以控制哪些公钥可用于登录到给定的帐户。
我们曾经将AuthorizedKeysFile
指令改为sshd_config
如下所示的样子。
AuthorizedKeysFile /etc/ssh/authorized_keys/%u
然后/etc/ssh/authorized_keys
为每个应该能够登录的用户创建目录并填充文件,确保root
文件只有 root 才能读取/写入,其他文件可供适当用户读取,如下所示:
-rw------- 1 root root 1,7K 2008-05-14 14:38 root
-rw-r----- 1 root john 224 2008-11-18 13:15 john
每个文件都包含一组允许登录特定帐户的公钥。每个用户帐户通常也有一个相应的组。
使用公钥/私钥是控制远程用户访问的更好方法。您不必每月更改密码(您也不必设置密码),也不必因为员工离开公司而更改密码,只需删除他们的公钥即可;当然,使用 SSH 选项(http://www.openbsd.org/cgi-bin/man.cgi?query=sshd&sektion=8#SSHRC
),您可以细粒度地了解给定用户可以访问的内容和位置。
答案3
SSH 公钥/私钥身份验证与主机身份验证是分开的。你在这里运气不佳。不过,你可以请求允许特定组的成员无需sudo
密码即可运行某些管理命令 - 例如下面的示例允许secretaries
组中的用户管理帐户:
# file: /etc/sudoers
...
%secretaries ALL= NOPASSWD: /usr/bin/adduser, /usr/bin/rmuser
...