我已经编辑了我的 ~/.ssh/config 文件,从中删除了一些过时的Host
定义,但是当我 ssh 到远程服务器(使用-v
详细输出选项)时,我仍然看到Host
正在尝试旧的定义。
我是否需要运行某个命令来让 SSH 重新加载配置文件,以使更改生效?
这是一个使用默认 ssh 的 Ubuntu 桌面,没有花哨的配置,尽管该机器已在几个较旧的 Ubuntu 版本之间升级到 16.04。最后一次升级是很久以前,这不是升级问题,只是现在我尝试向 ~/.ssh/config 添加新密钥并清理它时才出现。
答案1
我建议您也清理一下,因为它可能包含您在某处看到的/etc/ssh/ssh_config
一些内容。Hosts
ssh
使用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