我最近将我的两台服务器的域名从 更改mdorst.net
为mars.mdorst.net
。现在,当我进入 ssh 时,其中一个服务器按预期自动完成,而另一个则没有。
$ ssh michael@o<Tab>
自动完成
$ ssh [email protected]
这正是我想要的。但是当我输入
$ ssh michael@c<Tab>
它会自动完成
$ ssh [email protected]
并将光标置于 m 之后。
我最好的猜测是,它知道我输入了以下两个内容
$ ssh [email protected]
$ ssh [email protected]
之前,想知道哪一个。非常聪明!只是我不想要这种行为,所以我回过头来.zsh_history
删除了所有出现的curiosity.mdorst.net
,但问题仍然存在!
这让我非常困惑,因为我opportunity.mdorst.net
以前也这样做过,但当我输入时不会发生这种情况o<Tab>
,只有当我输入时才会发生这种情况c<Tab>
。
我怎样才能使其自动完成到正确的域?
答案1
zsh
ssh
正在从文件中收集有关用户名和访问过的主机的信息以供完成
- /etc/hosts
- /etc/ssh/ssh_known_hosts
- 〜/.ssh /已知主机
如果未设置hosts
和样式。(来源:手册)known-hosts-files
zshcompsys
因此,您应该首先检查您的~/.ssh/known_hosts
文件并删除您不想完成的远程计算机的行。