Remove a host from the completion list for ssh in zsh

autocompletezsh

I once had some hosts named 'myhost', 'myhost1', etc. And now all those except 'myhost3' become invalid. I removed those from /etc/hosts and ~/.ssh/known_hosts, but zsh still completes them for me. Is there any other file I should edit to make zsh forget about those hosts?

I haven't changed anything related to hosts in my zsh configuration; they come out by default.

UPDATE:

Some time later (after a hibernation but no reboot), those hosts disappear. Maybe zsh cleared some kind of cache? (But not ~/.zcompdump as I checked that. I also tried start new instances of zsh but that doesn't make difference.)

I'll try and test later.

UPDATE #2:

I tried again and successfully removed a newly-added host from the completion list. Maybe I did something wrong previously, sorry.

Best Answer

From experimentation, it looks like zsh is indeed using .ssh/known_hosts for its autocompletion, but it only reads that at startup/first use.

Deleting the offending host (ssh-keygen -R hostname or simply editing .ssh/known_hosts), then restarting the shell seems to work.

Related Question