SSH 从哪里获取自动补全功能?

SSH 从哪里获取自动补全功能?

我在一个企业网络中,在 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主要使用别名,但也使用Hostnames)
    • 用户配置文件~/.ssh/config~/.ssh2/config
    • 全局配置文件/etc/ssh/ssh_config
    • -F使用交换机提供的配置文件
    • 包含的配置文件
  • 在集群公钥中~/.ssh2/key_22_<hostname>.pub(我不知道为什么)
  • 报告的主机avahi-browse
  • 报告的主机ruptime
  • 正常主机名完成的结果

具体信息来源请查阅源码。

相关内容