Tout d'abord, il faut avoir un annuaire LDAP d'installé, et configuré, si possible, avec un la possibilité de lire l'annuaire sans .

Ensuite, il vous suffit de créer un fichier ldap_hosts (avec les droits 0644) dans le dossier /etc/bash_completion.d/ et y mettre ce qui suit :

_ldap_hosts() 
{
    local cur prev user suffix aliases hosts ssh hostreply
    cur="${COMP_WORDS[COMP_CWORD]}"
    prev="${COMP_WORDS[COMP_CWORD-1]}"
 
        [ "$1" = -a ] || [ "$2" = -a ] && aliases='yes'
        [ "$1" = -c ] || [ "$2" = -c ] && suffix=':'
        [[ $cur == *@* ]] && user=${cur%@*}@ && cur=${cur#*@}
 
    hosts=( `ldapsearch -h ldap.cp2i.com -b "ou=hosts,dc=cp2i,dc=com" -LLL -s sub -z 100 -x "cn=$cur*" "cn" 2>/dev/null | awk '/^cn/ { print $2 }'` )
 
        # apply prefix and suffix
        for (( i=0; i < ${#hosts[@]}; i++ )); do
                hosts[i]=$user${hosts[i]}$suffix
        done
        COMPREPLY=( ${COMPREPLY[@]} ${hosts[@]} )
}
 
declare -f _old_known_hosts >/dev/null
if [ $? -ne 0 ];then
        declare -f _known_hosts >/dev/null
        if [ $? -eq 0 ];then
                tmpfile=$(cat <<EOF
_old_known_hosts()
$(declare -f _known_hosts | tail --lines=+2)
 
_known_hosts() {
        _old_known_hosts \$* 
        _ldap_hosts \$* 
}
EOF
)
                eval "$tmpfile"
        fi  
fi

Modifiez bien les paramètres de connexion à votre annuaire (paramètres -h et -b de la fonction ldapsearch) pour qu'il corresponde aux paramètres de votre annuaire, reconnectez-vous, et vous devriez avoir la complétion auto des hosts de votre annuaire dans vos commandes shell du style ssh ou scp.

Bonne utilisation :)