SSH 客户端正在尝试使用 SSH 配置文件中未指定的密钥

SSH 客户端正在尝试使用 SSH 配置文件中未指定的密钥

我已经编辑了我的 ~/.ssh/config 文件,从中删除了一些过时的Host定义,但是当我 ssh 到远程服务器(使用-v详细输出选项)时,我仍然看到Host正在尝试旧的定义。

我是否需要运行某个命令来让 SSH 重新加载配置文件,以使更改生效?

这是一个使用默认 ssh 的 Ubuntu 桌面,没有花哨的配置,尽管该机器已在几个较旧的 Ubuntu 版本之间升级到 16.04。最后一次升级是很久以前,这不是升级问题,只是现在我尝试向 ~/.ssh/config 添加新密钥并清理它时才出现。

答案1

我建议您也清理一下,因为它可能包含您在某处看到的/etc/ssh/ssh_config一些内容。Hostsssh

使用ssh客户端时,命令行选项优先于配置文件。~/.ssh/config接下来使用用户特定的配置文件。最后使用全局/etc/ssh/ssh_config文件。将使用每个配置参数的第一个获取的值。

答案2

如果您的目录中有太多密钥~/.ssh,并且您尝试连接的 ssh 服务器已将#MaxAuthTries默认值设置为6,您将收到此错误:

Received disconnect from 10.20.30.40 port 22:2: Too many authentication failures
Disconnected from 10.20.30.40 port 22

设置所有可能数百/数千个 OpenSSH 服务器配置文件以允许增加数量会过于复杂MaxAuthTries。这也会存在安全风险。

我想到的解决方案是将所有 ssh 密钥存储在非默认位置。~/.ssh/config然后您的条目将如下所示,指向 IdentityFile 的正确位置

Host jenkins
    User root
    HostName 10.0.0.29
    Port 22
    IdentityFile /home/wayne/keys/jenkins

答案3

我遇到了类似的问题,这是我尝试的第一个搜索结果之一。根据我后来从其他答案中获得的成功,我建议IdentitiesOnly yes在你的配置中使用:

Host jenkins
    User root
    HostName 10.0.0.29
    Port 22
    IdentitiesOnly yes
    IdentityFile /home/wayne/keys/jenkins

有关更多讨论,请参阅 Flimm 关于此选项的回答https://superuser.com/a/268777/58805

相关内容