Скопировано из моего собственного ответа на unix.SE :
Если вы находитесь на хосте Ubuntu, то вы должны знать, что в Ubuntu записи в ~/.ssh/known_hosts
хэше хэшированы , поэтому SSH-завершение не может их прочитать. Это особенность, а не ошибка. Даже добавив HashKnownHosts no
к ~/.ssh/config
и /etc/ssh/ssh_config
я не смог предотвратить хозяина хэширования.
Однако вы можете прочитать настроенные записи ~/.ssh/config
, которые не хэшированы. Вот скрипт для Bash Completion, который читает записи из этого файла:
_ssh()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(grep '^Host' ~/.ssh/config | awk '{print $2}')
COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
return 0
}
complete -F _ssh ssh
Поместите этот скрипт, /etc/bash_completion.d/ssh
а затем отправьте его с помощью следующей команды:
$ . /etc/bash_completion.d/ssh
Я нашел это руководство бесценным, и я не смог бы написать это без него. Спасибо Стиву Кемпу за написание этого потрясающего руководства!