即使从〜/ .ssh中删除私钥,ssh密钥仍然存在-为什么?


18

我生成了ssh密钥(公共和私有)并将其存储在中~/.ssh/myServer/

我将公钥添加到服务器的~/.ssh/authorized_keys文件中,一切正常!

在尝试理解键的工作方式时,我删除了它们,并惊讶地发现我仍然能够连接到服务器。

为什么没有密码也可以连接?

Answers:


24

欢迎来到OS X钥匙串和ssh-agent的美好世界!从手册页:

ssh-agent是一个程序,用于保存用于公钥身份验证的私钥(RSA,DSA,ECDSA)。这个想法是ssh-agent在X会话或登录会话的开始时启动,而所有其他窗口或程序都作为ssh-agent程序的客户端启动。通过使用环境变量变量,当使用ssh(1)登录到其他计算机时,可以定位代理并自动将其用于身份验证。

您的私钥已缓存在代理中,并已从那里获取以认证您的会话。OS X通过“钥匙串”为您执行自动ssh-agent缓存,因为它“用户友好”。这可能有点令人震惊,但是发生这种情况通常是一件方便的事情。

缓存密钥的默认生存时间是永远。这可能不是一个很好的默认值。它将在注销/登录周期或重新启动时刷新缓存的密钥。或者,您可以使用以下方法杀死当前代理来强制执行刷新操作:

ssh-add -D

您可以通过运行以下命令列出代理程序缓存的所有凭据:

ssh-add -l

这样做相同,但显示完整的公共密钥:

ssh-add -L

哇!非常感谢!我对发生的事情感到非常困惑。我明白了!
poltj18 2015年

2
@FAYNUS如果这可以为​​您解决问题,请按右侧的绿色对勾将其标记为“可接受的答案”!欢迎询问不同!
伊恩·C
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.