在Ubuntu 14.04上,我有一个私钥:
~/.ssh/id_rsa
我已经在我希望连接的服务器上安装了公钥,当我运行以下内容时,我按预期连接:
ssh me@my-server-ip.com
然后我删除了客户端上的私钥,但运行上面的命令仍然连接我。这让我相信SSH二进制文件正在以某种守护进程模式运行,其中它正在缓存内存中的私钥?那是对的吗?如果没有重新启动,我该如何刷新' SSH停止使用私钥。感谢
答案 0 :(得分:2)
删除~/.ssh/id_rsa
ssh-add -D
此突击显示从ssh-agent
删除所有缓存的ssh身份。
如果您现在键入ssh me@my-server-ip.com
,将显示密码提示。
您可以使用ssh-add -L
查看ssh-agent
已缓存的身份。
答案 1 :(得分:0)
我知道我对这个派对来说有点晚了,但是为了别人的启蒙......
听起来您在ssh-agent中缓存了私有SSH密钥(标识)。现在值得注意的是,ssh-agent不会在重启或注销/登录周期中保留密钥缓存,尽管某些依赖于配置的系统可能会在这两个进程中添加密钥。但是,在您的实例中,重新启动或可能的注销/登录周期将从代理的缓存中删除私钥。这是因为您已经删除了~/.ssh/id_rsa
文件,因此无法将其重新初始化为代理。
对于其他可能尚未删除~/.ssh/id_rsa
个文件的人,或者如果您现在不想重新启动或注销,则以下内容应该有用。
首先,您需要删除您希望不再被ssh-agent缓存的所有~user/.ssh/id_rsa
个文件。
接下来,通过运行以下命令,验证“ssh-agent”中是否仍然保持打开身份:
ssh-add -L
这将列出代理已主动缓存的所有身份的公钥参数。 (注意:ssh-add -l
将列出所有主动缓存的键/标识的指纹。)对于您要删除的每个键,您应运行以下命令:
ssh-add -d /path/to/matching/public/key/file
如果您只想清除代理中的所有密钥/身份,请改为运行:
ssh-add -D
此时,代理将无法再访问希望删除的密钥,并且删除了实际的身份文件,因此尝试与该用户建立远程SSH连接不应该有任何可能如果已配置/允许,则不使用其他授权方法进行连接。