无法从代理中删除 SSH 密钥

Kee*_*ing 4 ssh ubuntu ssh-agent

我的 Ubuntu 18.04在启动时不断将我所有的 SSH 密钥添加到ssh 代理中,我无法删除它们。代理中有如此多的密钥会破坏对仅允许 3 或 5 次尝试的服务器的身份验证。

~ $ ssh-add -l
2048 SHA256:7mW8C9RNZ75U...ArHq+9kSZLmny0Y google_compute_engine (RSA)
2048 SHA256:OUD4Vy0LKWp2...AwNKTbdHDkjVkcU id_rsa.aws (RSA)
2048 SHA256:/Qbw+NcgXBTk...pi7bYs2eYm0k7B8 id_rsa.aws-eu (RSA)
2048 SHA256:cG5xEwfejo2O...8LqmP4gk2wAtzrk id_rsa (RSA)
2048 SHA256:5TgVaBUrlSvV...PHM46avPZIauVRY sftp-test2 (RSA)
Run Code Online (Sandbox Code Playgroud)

当我尝试删除它们时,它说 OK 但它们仍然存在:

~ $ ssh-add -D
All identities removed.

~ $ ssh-add -l
2048 SHA256:7mW8C9RNZ75U...ArHq+9kSZLmny0Y google_compute_engine (RSA)
2048 SHA256:OUD4Vy0LKWp2...AwNKTbdHDkjVkcU id_rsa.aws (RSA)
2048 SHA256:/Qbw+NcgXBTk...pi7bYs2eYm0k7B8 id_rsa.aws-eu (RSA)
2048 SHA256:cG5xEwfejo2O...8LqmP4gk2wAtzrk id_rsa (RSA)
2048 SHA256:5TgVaBUrlSvV...PHM46avPZIauVRY sftp-test2 (RSA)
Run Code Online (Sandbox Code Playgroud)

由于在代理中加载了如此多的身份,我什至无法在命令行上明确指定,它仍然失败:

~ $ ssh 192.168.56.5  -i ~/.ssh/test
Received disconnect from 192.168.56.5 port 22:2: Too many authentication failures
Disconnected from 192.168.56.5 port 22
Run Code Online (Sandbox Code Playgroud)

我唯一能做的就是unset SSH_AUTH_SOCK完全,然后我至少可以使用,ssh -i ...但这很不方便。

TL; 博士

如何从代理中删除所有身份防止它们下次再次加载?即如何让它表现得像过去的ssh 代理

Bar*_*art 5

这可能是由于ssh-add -d/-D 未删除密钥的错误。有一些关于它的错误报告,例如

确切的问题是:

ssh-add -d/-D仅从 gnome-keyring 中删除手动添加的密钥。无法删除自动添加的密钥。这是原始错误,它仍然肯定存在。

允许ssh-add -d应用于自动加载的密钥(并ssh-add -t X更改自动加载的密钥的生命周期),将恢复大多数用户期望的行为。

一个可能的解决方法:

不要ssh-add -D删除所有手动添加的钥匙。

导航到您的~/.ssh文件夹并将所有密钥文件(除了要标识的文件)移动到名为备份的单独文件夹中。如有必要,您还可以打开 seahorse 并从那里删除密钥。

另一种解决方法:

您真正想要做的是gpg-keyring-daemon 完全关闭。转到System --> Preferences --> Startup Applications并取消选择“ SSH Key Agent (Gnome Keyring SSH Agent)”框 - 您需要向下滚动才能找到它。

你仍然会得到一个ssh-agent,只是现在它会正常运行:没有自动加载键,你运行ssh-add添加它们,如果你想删除键,你可以。

这个评论实际上表明:

解决办法是keep gnome-keyring-manager从不启动,最后通过删除程序文件的执行权限来实现,这奇怪地困难。