SSH密钥无需输入口令自动登录异常,请求恢复需口令登录状态
看起来你的问题是本地的SSH代理(ssh-agent)缓存了解锁后的密钥,所以连接VPS的时候直接调用了代理里的凭证,跳过了口令输入步骤。毕竟你看到的提示是「Authenticating with public key "rsa-key-id" from agent」,这说明登录用的是本地代理里已经解锁的密钥,而不是每次连接都重新解锁密钥文件。我给你一步步拆解解决方法:
先确认本地代理是否加载了目标密钥
在你的本地机器(不是VPS)上运行以下命令,查看当前SSH代理里已加载的密钥列表:ssh-add -l如果输出里能看到你那个「rsa-key-id」对应的密钥,就说明它确实被缓存了。
移除代理里的缓存密钥
如果你只想移除这一个密钥,可以用:ssh-add -d /path/to/your/private/key要是不确定密钥路径,或者想清空代理里所有缓存的密钥(之后再连接任何需要密钥口令的服务器都要重新输入),可以用:
ssh-add -D执行完之后再连接你的VPS,应该就会提示你输入密钥口令了。
阻止代理自动加载密钥(可选)
如果你不想以后SSH代理自动缓存密钥,可以修改本地的SSH配置文件~/.ssh/config,找到有没有类似AddKeysToAgent yes的配置项,把它改成no或者直接注释掉(加#前缀)。这样以后每次连接服务器,都需要手动输入密钥口令,除非你主动用ssh-add加载密钥到代理。排查密钥本身是否被修改(兜底检查)
虽然你说之前一直需要口令,但还是可以确认下密钥文件本身有没有被改成无口令的。在本地运行:ssh-keygen -y -f /path/to/your/private/key如果这个命令不需要输入口令就能输出对应的公钥,说明你的密钥文件已经被设置成无口令了——这种情况你需要重新生成一个带口令的SSH密钥,然后把新的公钥替换到VPS的
~/.ssh/authorized_keys文件里。
备注:内容来源于stack exchange,提问作者Hawk007

