我在一个企业网络中,在 ssh 后双击会导致它吐出要 ssh 的计算机的建议。然而,我注意到,根据我所在的计算机,将会建议一组不同的计算机。删除.ssh/known_hosts
不会改变行为。 ssh 在哪里拉入这些建议的计算机?
答案1
OpenSSH 使用包中的 bash 补全bash-completion
。负责的脚本存储在/usr/share/bash-completion/completions/ssh
(在 Fedora 上。在不同的发行版上可能有所不同)。该_known_hosts_real
函数是在全局定义的,/usr/share/bash-completion/bash_completion
您可以看到它正在使用以下所有内容(已知主机只是来源之一):
- 已知主机:
- 用户已知的主机文件
~/.ssh/known_hosts
- 全球已知主机文件
/etc/ssh/ssh_known_hosts
,,, .../etc/ssh/ssh_known_hosts2
/etc/known_hosts
/etc/known_hosts2
- 用户已知的主机文件
- 配置文件(
host
主要使用别名,但也使用Hostname
s)- 用户配置文件
~/.ssh/config
,~/.ssh2/config
- 全局配置文件
/etc/ssh/ssh_config
-F
使用交换机提供的配置文件- 包含的配置文件
- 用户配置文件
- 在集群公钥中
~/.ssh2/key_22_<hostname>.pub
(我不知道为什么) - 报告的主机
avahi-browse
- 报告的主机
ruptime
- 正常主机名完成的结果
具体信息来源请查阅源码。