2
使用SSH的一致且安全的无密码帐户方法
我必须承认,在某些情况下,我喜欢没有密码的服务器。典型的服务器容易受到任何具有物理访问权限的人的攻击。因此,在某些情况下,将其物理锁定是可行的,此后再信任任何物理访问。 基本概念 从理论上讲,当我物理上到达这样的服务器时,只需键入root登录名就可以执行无需密码的管理任务,并且不需要输入密码。这可能适用于用户帐户,但实际上并不能真正访问它们。因此,(偶尔)本地访问不需要系统密码。 远程访问服务器(用于管理或用户帐户)时,我希望始终使用SSH私钥。为刚创建的帐户设置SSH密钥非常容易,因此(常规)远程访问不需要系统密码。 # user=... # # useradd -m "$user" # sudo -i -u "$user" $ keyurl=... $ $ mkdir -p .ssh $ curl -o .ssh/authorized_keys "$keyurl" 结论是,从理论上讲,我们不会为此类用例使用任何系统密码。所以问题是,我们如何配置系统和用户帐户,以使其以一致且安全的方式发生。 本地访问详细信息 我们如何确保无需密码即可在本地访问root帐户?我认为我们不能使用passwd -d它,因为这会使root用户访问权限太宽容,并且没有特权的用户可以免费切换到root 用户,这是错误的。我们无法使用,passwd -l因为它阻止我们登录。 请注意,本地访问专门涉及使用本地键盘的访问。因此,有效的解决方案不得允许任何用户切换(无论使用su还是sudo)。 远程访问详细信息 直到最近,上述解决方案仍然有效,但现在SSH开始检查锁定的用户帐户。passwd -d由于相同的原因,我们可能无法使用。我们不能使用passwd -u它,因为它只是抱怨它将导致什么passwd -d。 有一种解决方法,该部分使用虚拟密码。 user=... echo -ne "$user:`pwgen 16`\n" | chpasswd 也可以完全关闭SSH中的锁定帐户检查功能,但是保留锁定帐户的支持并能够对其进行解锁会更好。 最后的笔记 …