Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何停止SSH使用已删除的私钥_Ssh - Fatal编程技术网

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

如何停止SSH使用已删除的私钥,ssh,Ssh,在Ubuntu 14.04上,我有一个私钥: ~/.ssh/id_rsa 我已在希望连接的服务器上安装了公钥,实际上,当我运行以下操作时,我会按预期进行连接: ssh me@my-server-ip.com 然后我删除了客户端上的私钥,但运行上面的命令仍然可以连接到我。这让我相信SSH二进制文件是在某种守护程序模式下运行的,在这种模式下,它正在内存中缓存私钥?对吗?在没有重新启动的情况下,如何“刷新”SSH以停止使用私钥。谢谢删除~/.ssh/id\u rsa后运行以下命令 ssh-add

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

~/.ssh/id_rsa
我已在希望连接的服务器上安装了公钥,实际上,当我运行以下操作时,我会按预期进行连接:

ssh me@my-server-ip.com

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

删除
~/.ssh/id\u rsa后运行以下命令

ssh-add -D
此突击队从
ssh代理中删除所有缓存的ssh标识

如果您键入
sshme@my-server ip.com
现在,将显示密码提示


您可以使用
ssh add-L
检查
ssh代理缓存了哪些标识

我知道我参加这个聚会有点晚了,但为了其他人的启示

听起来您的私有SSH密钥(标识)缓存在SSH代理中。现在值得注意的是,ssh代理不会在重新启动或注销/登录周期中保留密钥缓存,尽管某些系统根据配置可能会在这些过程中添加密钥。但是,在您的实例中,重新启动或注销/登录周期可能会从代理缓存中删除私钥。这是因为您已经删除了
~/.ssh/id\u rsa
文件,因此无法将其重新初始化到代理中

对于可能尚未删除其
~/.ssh/id\u rsa
文件的所有其他人,或者如果您不想立即重新启动或注销/登录,以下内容将被证明是有用的

首先,您需要删除任何希望ssh代理不再缓存的
~user/.ssh/id\u rsa
文件

接下来,通过运行以下命令,验证“ssh代理”中是否仍有身份处于打开状态:

ssh添加-L

这将列出代理已主动缓存的所有标识的公钥参数。(注意:
ssh add-l
将列出所有主动缓存的密钥/标识的指纹。)对于要删除的每个密钥/标识,应运行以下操作:

ssh add-d/path/to/matching/public/key/file

如果您只想清除代理中的所有密钥/标识,请运行以下操作:

ssh添加-D


此时,代理将无法再访问需要删除的密钥,并且实际身份文件已删除,如果配置/允许,在不使用其他授权方法的情况下,尝试与该用户进行远程SSH连接的用户不应该有任何方式进行连接。

这个问题可能会更好一些