Tengo una gran lista de servidores que normalmente hago ssh
todo el tiempo. ¿Hay alguna forma de usar bash
o zsh
para que pueda mantener la lista de nombres de host y la finalización automática de bash revisa el archivo y me sugiere sugerencias para los cuadros que comienzan con esas letras cada vez que escribo las primeras letras del nombre de host.
fuente
El paquete de finalización de bash incluye finalizaciones para
ssh
comandos, que incluyen:ssh
ssh-add
ssh-copy-id
sshfs
Puede navegar por la fuente aquí: https://alioth.debian.org/scm/browser.php?group_id=100114
fuente
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ónHashKnownHosts 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:Ponga ese script
/etc/bash_completion.d/ssh
y luego fuente con el siguiente comando:Encontré esta guía invaluable y no habría podido escribir esto sin ella. ¡Gracias Steve Kemp por escribir esa excelente guía!
fuente
opts=$(grep '^Host' ~/.ssh/config | sed 's@^Host @@')
porque la~/.ssh/config
sintaxis permite varios nombres en una sola líneaPara que esto funcione, coloque los hosts que desee completar en su
/etc/hosts
archivo.También necesita el
bash-completion
paquete (que contiene el archivo / etc / bash_completion y el directorio /etc/bash_completion.d)y la fuente en ~ / .bashrc (
. /etc/bash_completion
- a veces se comenta en /etc/bash.bashrc o en ~ / .bashrc).fuente
man ssh_config
para más detalles, pero es mucho más versátil, lo que le permite especificar múltiples alias, nombre de usuario, puerto y mucho más./etc/ssh/ssh_config
, no tengo terminación de trabajar para los hosts configurados.ohmyzsh
.known_hosts
tan bien como los otros archivos de configuración, por ejemplo,~/.ssh/config