You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何让SSH每次操作时都询问密码?

如何让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 yes
    

    IdentitiesOnly 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

    1. 检查~/.bashrc~/.profile~/.bash_profile这些文件,看看有没有自动执行ssh-add的语句,如果有,把它们注释掉或者删掉。
    2. 打开系统设置里的「密码和密钥」,找到对应的SSH密钥条目,右键选择「忘记密码」——这样下次使用这个密钥时,系统就不会自动读取存储的密码了。
  • 测试你的配置
    做完上面的调整后,关闭所有终端窗口(确保旧的ssh-agent进程被终止),重新打开一个终端,试试ssh your-server或者git pull,看看是不是每次操作都需要输入密码了。如果还是不行,可以用ssh -v your-server查看详细的连接日志,日志里会显示SSH是否在尝试使用agent缓存的密钥,根据日志再针对性调整。

备注:内容来源于stack exchange,提问作者Ramansh Sharma

火山引擎 最新活动