Bash
SSH 從哪裡提取自動完成功能?
我在一個企業網路上,其中 ssh 之後的雙標籤會導致它吐出要 ssh 到的電腦的建議。但是,我注意到的是,根據我使用的電腦,會建議使用不同的電腦集。刪除
.ssh/known_hosts
不會改變行為。ssh 在哪里拉入這些建議的電腦?
OpenSSH 使用來自 package 的 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
正常主機名完成的結果
具體資訊來源請參考源碼。