如何阻止SSH使用已删除的私钥

时间:2015-01-28 11:29:06

标签: ssh

在Ubuntu 14.04上,我有一个私钥:

~/.ssh/id_rsa

我已经在我希望连接的服务器上安装了公钥,当我运行以下内容时,我按预期连接:

ssh me@my-server-ip.com

然后我删除了客户端上的私钥,但运行上面的命令仍然连接我。这让我相信SSH二进制文件正在以某种守护进程模式运行,其中它正在缓存内存中的私钥?那是对的吗?如果没有重新启动,我该如何刷新' SSH停止使用私钥。感谢

2 个答案:

答案 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连接不应该有任何可能如果已配置/允许,则不使用其他授权方法进行连接。