Eu tenho uma grande lista de servidores que eu normalmente ssh
para o tempo todo. Existe alguma maneira de usar bash
ou zsh
para que eu possa manter a lista de nome do host e o preenchimento automático do bash percorrer o arquivo e me fornecer sugestões para as caixas que começam com essas letras sempre que eu digitar as primeiras letras do nome do host.
fonte
O pacote de conclusão do bash inclui conclusões para
ssh
comandos, incluindo:ssh
ssh-add
ssh-copy-id
sshfs
Você pode procurar a fonte aqui: https://alioth.debian.org/scm/browser.php?group_id=100114
fonte
Copiado da minha própria resposta no unix.SE :
Se você estiver em um host Ubuntu, deverá saber que no Ubuntu as entradas
~/.ssh/known_hosts
são hash , para que a conclusão do SSH não possa lê-las. Este é um recurso, não um bug. Mesmo adicionandoHashKnownHosts no
ao~/.ssh/config
e/etc/ssh/ssh_config
eu era incapaz de impedir o hashing host.No entanto, você pode ler as entradas configuradas de
~/.ssh/config
, que não são hash. Aqui está um script para o Bash Completion que lê as entradas desse arquivo:Coloque esse script
/etc/bash_completion.d/ssh
e origine-o com o seguinte comando:Achei este guia inestimável e eu não seria capaz de escrever isso sem ele. Obrigado Steve Kemp por escrever esse guia fantástico!
fonte
opts=$(grep '^Host' ~/.ssh/config | sed 's@^Host @@')
porque a~/.ssh/config
sintaxe permite vários nomes em uma única linhaPara que isso funcione, coloque todos os hosts que você deseja concluir no seu
/etc/hosts
arquivo.Você também precisa de um
bash-completion
pacote (contendo o arquivo / etc / bash_completion e o diretório /etc/bash_completion.d)e
. /etc/bash_completion
crie -o em ~ / .bashrc ( - às vezes é comentado em /etc/bash.bashrc ou em ~ / .bashrc).fonte
man ssh_config
para obter mais detalhes, mas é muito mais versátil, permitindo especificar vários aliases, nome de usuário, porta e muito mais./etc/ssh/ssh_config
, não tenho conclusão trabalhando para os hosts configurados.ohmyzsh
.known_hosts
, bem como outros arquivos de configuração, por exemplo,.~/.ssh/config