Copiado de mi propia respuesta en unix.SE :
Si está en un host de Ubuntu, debe saber que en Ubuntu las entradas en ~/.ssh/known_hosts
hash , por lo que la finalización de SSH no puede leerlas. Esto es una característica, no un error. Incluso mediante la adición HashKnownHosts no
a ~/.ssh/config
, y /etc/ssh/ssh_config
no pude evitar que el hash de acogida.
Sin embargo, puede leer las entradas configuradas ~/.ssh/config
, que no están en hash. Aquí hay un script para Bash Completion que lee las entradas de ese archivo:
_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
Ponga ese script /etc/bash_completion.d/ssh
y luego fuente con el siguiente comando:
$ . /etc/bash_completion.d/ssh
Encontré esta guía invaluable y no habría podido escribir esto sin ella. ¡Gracias Steve Kemp por escribir esa excelente guía!