J'ai une grande liste de serveurs que j'utilise normalement ssh
tout le temps. Existe-t-il un moyen d'utiliser bash
ou zsh
pour que je puisse conserver la liste des noms d'hôte et l'auto-complétion bash parcourt le fichier et me suggère des cases commençant par ces lettres chaque fois que je tape les premières lettres du nom d'hôte.
la source
Le package d' achèvement bash comprend des achèvements pour les
ssh
commandes, notamment:ssh
ssh-add
ssh-copy-id
sshfs
Vous pouvez parcourir la source ici: https://alioth.debian.org/scm/browser.php?group_id=100114
la source
Copié de ma propre réponse sur unix.SE :
Si vous êtes sur un hôte Ubuntu, vous devez savoir que dans Ubuntu les entrées dans
~/.ssh/known_hosts
sont hachées , donc l'achèvement SSH ne peut pas les lire. C'est une fonctionnalité, pas un bug. Même en ajoutantHashKnownHosts no
à~/.ssh/config
et/etc/ssh/ssh_config
je n'ai pas pu empêcher le hachage de l'hôte.Cependant, vous pouvez lire les entrées configurées depuis
~/.ssh/config
, qui ne sont pas hachées. Voici un script pour Bash Completion qui lit les entrées de ce fichier:Mettez ce script
/etc/bash_completion.d/ssh
et sourcez-le avec la commande suivante:J'ai trouvé ce guide inestimable et je n'aurais pas pu l'écrire sans lui. Merci Steve Kemp d' avoir écrit ce formidable guide!
la source
opts=$(grep '^Host' ~/.ssh/config | sed 's@^Host @@')
parce que la~/.ssh/config
syntaxe permet plusieurs noms sur une seule lignePour que cela fonctionne, mettez tous les hôtes que vous souhaitez compléter dans votre
/etc/hosts
fichier.Vous avez également besoin d'un
bash-completion
package (contenant le fichier / etc / bash_completion et le répertoire /etc/bash_completion.d)et le source dans ~ / .bashrc (
. /etc/bash_completion
- parfois il est commenté dans /etc/bash.bashrc ou dans ~ / .bashrc).la source
man ssh_config
pour plus de détails, mais il est beaucoup plus polyvalent, vous permettant de spécifier plusieurs alias, nom d'utilisateur, port et bien plus encore./etc/ssh/ssh_config
, je n'ai pas terminé de travailler pour les hôtes configurés.ohmyzsh
.known_hosts
ainsi que les autres fichiers de configuration, par exemple.~/.ssh/config