当我通过 ssh 登录时,-v
我看到 ssh 正在以以下方式进行身份验证
debug1: Authentications that can continue: publickey,gssapi-with-mic,password,hostbased
我想改变顺序...有什么想法吗?
我最大的问题是,帐户被锁定的用户仍然可以通过公钥登录。我发现我可以将用户添加到“ssh-locked”组,并拒绝该组使用 ssh,但我仍然想知道是否有办法告诉 ssh'd: 请在输入密钥前检查密码...
答案1
ssh 服务器决定允许哪些身份验证选项,可以配置 ssh 客户端以决定以何种顺序尝试这些选项。
ssh 客户端使用PreferredAuthentications
ssh 配置文件中的选项来确定这一点。
从man ssh_config
(点击这里在线查看):
PreferredAuthentications
Specifies the order in which the client should try protocol 2 authentication methods. This allows a client to prefer
one method (e.g. keyboard-interactive) over another method (e.g. password). The default is:
gssapi-with-mic,hostbased,publickey,
keyboard-interactive,password
我认为,如果不使用源代码,就不可能告诉 OpenSSH 服务器选择特定的顺序 —— 如果你仔细想想,就会发现这无论如何都没有什么意义。
答案2
添加这个:
PreferredAuthentications keyboard-interactive,password,publickey,hostbased,gssapi-with-mic
.../etc/ssh/ssh_config
帮助我解决了这个问题,并且还节省了很多时间!
您可以使用ssh -v user@host
命令连接来检查它是否有效,其中-v
代表“详细”。
答案3
除了已经提到该选项的其他两个答案之外PreferredAuthentications
,我想补充一下如果你不想,则无需编辑任何文件来设置此设置.相反,你可以在命令行上设置它以进行单独调用ssh
,选项-o
如下:
ssh -o PreferredAuthentications=publickey,gssapi-with-mic,hostbased,keyboard-interactive,password user@hostname
参考:
答案4
对于真正锁定的帐户,您通常也可以使用其到期日期。具体方法取决于主机的操作系统,例如在 Linux 上是chage -d 0 someuser
。
也可以看看https://unix.stackexchange.com/questions/343535/what-is-the-solaris-equivalent-of-chage-d:-)