У меня есть большой список серверов, которые я обычно ssh
на все время. Есть ли способ использовать bash
или zsh
так, чтобы я мог сохранить список имени хоста, и автозаполнение bash проходит через файл и дает мне подсказку для полей, начинающихся с этих букв, всякий раз, когда я набираю первые несколько букв имени хоста.
bash
ssh
zsh
autocomplete
pradeepchhetri
источник
источник
Пакет завершения bash включает в себя дополнения для
ssh
команд, в том числе:ssh
ssh-add
ssh-copy-id
sshfs
Вы можете просмотреть источник здесь: https://alioth.debian.org/scm/browser.php?group_id=100114
источник
Скопировано из моего собственного ответа на unix.SE :
Если вы находитесь на хосте Ubuntu, то вы должны знать, что в Ubuntu записи в
~/.ssh/known_hosts
хэше хэшированы , поэтому SSH-завершение не может их прочитать. Это особенность, а не ошибка. Даже добавивHashKnownHosts no
к~/.ssh/config
и/etc/ssh/ssh_config
я не смог предотвратить хозяина хэширования.Однако вы можете прочитать настроенные записи
~/.ssh/config
, которые не хэшированы. Вот скрипт для Bash Completion, который читает записи из этого файла:Поместите этот скрипт,
/etc/bash_completion.d/ssh
а затем отправьте его с помощью следующей команды:Я нашел это руководство бесценным, и я не смог бы написать это без него. Спасибо Стиву Кемпу за написание этого потрясающего руководства!
источник
opts=$(grep '^Host' ~/.ssh/config | sed 's@^Host @@')
потому что~/.ssh/config
синтаксис допускает несколько имен в одной строкеЧтобы это работало, поместите все хосты, которые хотите завершить, в свой
/etc/hosts
файл .Вам также нужен
bash-completion
пакет (содержащий файл / etc / bash_completion и каталог /etc/bash_completion.d)и
. /etc/bash_completion
отправьте его в ~ / .bashrc ( иногда это закомментировано в /etc/bash.bashrc или в ~ / .bashrc).источник
man ssh_config
для более подробной информации, но он гораздо более универсален, позволяя вам указать несколько псевдонимов, имя пользователя, порт и многое другое./etc/ssh/ssh_config
, у меня нет завершения работы с настроенными хостами.ohmyzsh
.known_hosts
так же, как и другие файлы конфигурации, например,~/.ssh/config