Простейшим способом упрощения набора параметров для частоиспользуемых хостов является задание псевдонимов в ~/.ssh/config: Host myhost # Имя хоста
HostName server.com # Это удаленнй хост
User username # Пользователь на удаленном хосте
Port 22222 # Номер порта
При этом вместо "ssh -p 22222 -l username server.com" теперь достаточно написать "ssh myhost".
В случае когда этого недостаточно и хочется получить в bash поддержку автодополнения типовых имен хостов можно добавить в ~/.bashrc или ~/.profile следующие конструкции.
При поиске имен среди параметров Host и HostName в ~/.ssh/config:
complete -W "$(echo `cat ~/.ssh/config | grep -iE '^(Host|HostName) ' | awk '{print $2}'`)" ssh
Обычно в дистрибутивах Linux уже присутствует настройка (/etc/bash_completion) для автодополнения по содержимому файла known_hosts, но в последних версиях OpenSSH имена хостов в данном файле перестали задаваться в открытом виде, поэтому автодополнение не работает. Тем не менее хэширование имен можно отключить указав в ssh_config "HashKnownHosts no".
Для поиска по known_hosts может быть использована конструкция:
complete -W "$(echo `cat ~/.ssh/known_hosts | cut -f 1 -d ' ' | sed -e s/,.*//g | uniq | grep -v "\["`;)" ssh
Более развернутый пример запроса для организации автодополнения по содержимому первого столбца произвольного файла my_hosts.txt:
_compssh ()
{
cur=${COMP_WORDS[COMP_CWORD]};
COMPREPLY=($(compgen -W '$(cut -d " " -f1 ~/my_hosts.txt) --all --schema' -- $cur))
}
complete -F _compssh ssh
URL: http://bthemad.wordpress.com/2010/03/31/ssh-host-autocompletion/
Обсуждается: https://www.opennet.ru/tips/info/2340.shtml