On Thu, 1 Oct 2020, Ingo Schwarze wrote: > Hi Martin, > > Martin Drescher wrote on Thu, Oct 01, 2020 at 02:06:22PM +0200: > > > Can someone tell how this magic works? > > No, and this question is off-topic on this list because it is not > related to OpenSSH. It's most definitely related to OpenSSH, specifically how the shell interacts with it. In answer to the question: many operating system distributions (especially Linux) have configured their shells with tab-completion helpers that are contextually invoked by the shell after specific commands. Another example of this might be "git <tab>" returning a list of git subcommands. In this case, the helper is probably looking at the contents of your ~/.ssh/known_hosts or, with less likelihood, ~/.ssh/config's Host/Match configuration. I don't mind these, though they can be pretty brittle in the face of ssh_config aliases and HashKnownHosts settings, etc. Some shell configurations go further and will configure tab-expansion helpers for things like scp remote paths, e.g. "scp host:foo<tab>" will actually ssh to the remote host, run "ls foo*" and use the result to offer a set of completions. I don't like these because they implicitly perform heavy-weight operations (establishing a connection to a remote host) without the user really knowing what's going on. Note that, depending on your configuration, establishing such a connection can have significant security consequences - e.g. consider agent-forwarding. Anyway, check your shell configuration. On many Linux distributions, you might want to start with /etc/bash_completion* -d _______________________________________________ openssh-unix-dev mailing list openssh-unix-dev@xxxxxxxxxxx https://lists.mindrot.org/mailman/listinfo/openssh-unix-dev