如何让SSH每次操作时都询问密码?
嗨,我完全懂你想要的效果——每次用SSH(不管是直接连接服务器还是Git的pull/push操作)都强制要求输入密钥密码,而不是让ssh-agent一次记住就一直用。你已经尝试了在~/.ssh/config里加AddKeysToAgent no,那咱们从几个方向再排查和调整,应该能解决问题:
清空并阻止ssh-agent缓存密钥
首先,先把当前ssh-agent里已经缓存的密钥全部清空,运行这条命令:ssh-add -D然后在你的
~/.ssh/config里再添上一行配置,确保SSH不会自动重用agent里的密钥:Host * AddKeysToAgent no IdentitiesOnly yesIdentitiesOnly yes会强制SSH只使用你明确指定的身份密钥,不会偷偷去用agent里缓存的任何密钥。检查Git的相关配置
Git有时候会自己搞点“小聪明”,比如重用SSH连接或者使用自定义的SSH命令。你可以先重置Git的SSH命令配置,确保它用系统默认的SSH:git config --global --unset core.sshCommand另外,如果你之前给Git设置过特定的密钥或者代理,也可以用
git config --list查看所有配置,确认没有和SSH缓存相关的设置。关闭自动添加密钥的系统/工具设置
Ubuntu 22.04可能会通过桌面环境(比如GNOME)的密钥管理工具自动存储SSH密码,或者在shell启动脚本里自动运行ssh-add:- 检查
~/.bashrc、~/.profile、~/.bash_profile这些文件,看看有没有自动执行ssh-add的语句,如果有,把它们注释掉或者删掉。 - 打开系统设置里的「密码和密钥」,找到对应的SSH密钥条目,右键选择「忘记密码」——这样下次使用这个密钥时,系统就不会自动读取存储的密码了。
- 检查
测试你的配置
做完上面的调整后,关闭所有终端窗口(确保旧的ssh-agent进程被终止),重新打开一个终端,试试ssh your-server或者git pull,看看是不是每次操作都需要输入密码了。如果还是不行,可以用ssh -v your-server查看详细的连接日志,日志里会显示SSH是否在尝试使用agent缓存的密钥,根据日志再针对性调整。
备注:内容来源于stack exchange,提问作者Ramansh Sharma




