Ich habe eine große Liste von Servern, die ich normalerweise ssh
ständig besuche. Gibt es eine Möglichkeit mit bash
oder zsh
so , dass ich die Liste der Hostnamen und bash Auto-Vervollständigung halte die Datei geht durch und gibt mir einen Vorschlag für die Boxen mit diesen Buchstaben beginnen , wenn ich die ersten paar Buchstaben des Hostnamen eingeben.
quelle
Das Bash-Vervollständigungspaket enthält Vervollständigungen für
ssh
Befehle, einschließlich:ssh
ssh-add
ssh-copy-id
sshfs
Sie können die Quelle hier durchsuchen: https://alioth.debian.org/scm/browser.php?group_id=100114
quelle
Von meiner eigenen Antwort auf unix.SE kopiert :
Wenn Sie sich auf einem Ubuntu-Host befinden, sollten Sie wissen, dass die Einträge in
~/.ssh/known_hosts
Ubuntu gehasht sind , sodass die SSH-Vervollständigung sie nicht lesen kann. Dies ist eine Funktion, kein Fehler. Selbst durch HinzufügenHashKnownHosts no
zu~/.ssh/config
und konnte/etc/ssh/ssh_config
ich das Host-Hashing nicht verhindern.Sie können jedoch die konfigurierten Einträge lesen, aus
~/.ssh/config
denen nicht gehasht wird. Hier ist ein Skript für Bash Completion, das die Einträge aus dieser Datei liest:Fügen Sie das Skript ein
/etc/bash_completion.d/ssh
und geben Sie es mit dem folgenden Befehl ein:Ich fand diesen Leitfaden von unschätzbarem Wert und hätte ihn ohne ihn nicht schreiben können. Vielen Dank an Steve Kemp für das Schreiben dieses großartigen Leitfadens!
quelle
opts=$(grep '^Host' ~/.ssh/config | sed 's@^Host @@')
da die~/.ssh/config
Syntax mehrere Namen in einer einzelnen ZeileDamit dies funktioniert, fügen Sie alle Hosts, die Sie vervollständigen möchten, in Ihre
/etc/hosts
Datei ein.Sie benötigen auch ein
bash-completion
Paket (mit der Datei / etc / bash_completion und dem Verzeichnis /etc/bash_completion.d).und Quelle in ~ / .bashrc (
. /etc/bash_completion
- manchmal ist es in /etc/bash.bashrc oder in ~ / .bashrc auskommentiert).quelle
man ssh_config
Für weitere Details, aber es ist weitaus vielseitiger, sodass Sie mehrere Aliase, Benutzernamen, Port und vieles mehr angeben können./etc/ssh/ssh_config
kann ich nicht für die konfigurierten Hosts arbeiten.ohmyzsh
.known_hosts
ebenso wie die anderen Konfigurationsdateien prüft , z. B.~/.ssh/config