刚刚注意到我的两台 Linux 服务器发生了一些奇怪的事情。我们有两打 Ubuntu 18.04 LTS 服务器,它们都以相同的方式向我们询问提示:
# ssh admin@pl3poland
admin@pl3poland's password:
但是,我们最近开始在两台服务器上实施更强的密码要求。我们更改了 /etc/pam.d/common-password 中 libpwquality 的设置。
前:
password requisite pam_pwquality.so retry=3
后:
password requisite pam_pwquality.so retry=3 minlen=12 difok=3 minclass=4 maxrepeat=2 dictcheck=1 usercheck=1
似乎在更改了这些值之后,密码提示的显示方式有所不同。这就是现在出现的情况:
# spawn ssh admin@spain
Password:
这是一个相对较小的差异,但它影响了我们使用期望脚本连接到系统的一些自动化例程。我已将脚本更改为寻找“剑:”而不是完整的“密码:”,但我只是好奇为什么会改变,是否有任何方法可以将其改回来?
查看文档,我发现了一个名为“password-prompt”的命令,但它看起来不像是我可以用来永久设置密码前缀的东西。
任何人都可以将我引导到一个 .conf 文件或一些解释如何更改它的文档?我来自 AIX 背景,有一个名为 /etc/security/login.cfg 的文件,我们可以更改它以调整每次登录的“先驱”。但我在 Ubuntu 中没有看到类似的东西。
谢谢
史蒂夫·N。
user@server's password
用于密码认证Password:
用于键盘交互认证两者都设置了 SSH 选项:
PreferredAuthentications=password
PreferredAuthentications=keyboard-interactiv
如rfc 4252和rfc 4256中所定义,因此它不太可能与更改有关
/etc/pam.d/common-password
,更多地与更改.ssh/config
和设置有关,PreferredAuthentications
或者通过使用ssh -o
.看起来问题正是 Rinzwind 所指出的。使用 ssh -vv 调试器标志,我可以看到 Ubuntu Server #1 (polaris) 在“密码”身份验证方法处停止,而 Ubuntu Server #2 (西班牙) 是
为了演示,这里是调试器登录会话的结尾:
与我的西班牙服务器上的相比:
现在出于我自己的好奇心,我真的应该花时间找出为什么一个人使用密码而另一个人使用键盘交互。我怀疑这是 id_rsa.pub 或 authorized_keys 条目的问题。但我没有时间进一步研究它。
我们想出的修复期望脚本的解决方案是简单地查找“assword:”而不是之前使用的“password:”。这样,如果我们再次遇到问题,无论我们是否将“密码:”或“密码:”作为登录字符串的一部分,自动化程序都会继续。