使用IP地址完成ssh的zsh选项卡

使用IP地址完成ssh的zsh选项卡,zsh,oh-my-zsh,Zsh,Oh My Zsh,我将ssh连接到几个仅为IP地址的机器上,但是我注意到不久前,当尝试ssh连接到这些机器时,tab completion停止工作。我使用zsh,我可以用ssh制表符来完成一个常规域名,但是我使用的所有IP机器都不再制表符了,这里有什么问题吗?还是怎么回事 OSX-10.9.3 zsh-5.0.2 您的ssh可能正在已知主机上散列条目 ssh IMO的最佳可用性解决方案通常是创建ssh主机别名,然后在命令行中使用别名。例如,向您添加类似的内容~/.ssh/config Host foo #

我将ssh连接到几个仅为IP地址的机器上,但是我注意到不久前,当尝试ssh连接到这些机器时,tab completion停止工作。我使用zsh,我可以用ssh制表符来完成一个常规域名,但是我使用的所有IP机器都不再制表符了,这里有什么问题吗?还是怎么回事

  • OSX-10.9.3
  • zsh-5.0.2

    • 您的ssh可能正在已知主机上散列条目

      ssh IMO的最佳可用性解决方案通常是创建ssh主机别名,然后在命令行中使用别名。例如,向您添加类似的内容
      ~/.ssh/config

      Host foo
        # HostName also accepts numeric IP addresses
        HostName XXX.ZZZ.YYY.BBB
      
      然后您只需使用
      scp backup.tar foo:

      查看
      manssh\u config
      了解更多信息。从手册中:

       HashKnownHosts
               Indicates that ssh(1) should hash host names and addresses when they are added to ~/.ssh/known_hosts.  These hashed names
               may be used normally by ssh(1) and sshd(8), but they do not reveal identifying information should the file's contents be
               disclosed.  The default is “no”.  Note that existing names and addresses in known hosts files will not be converted auto‐
               matically, but may be manually hashed using ssh-keygen(1).  Use of this option may break facilities such as tab-comple‐
               tion that rely on being able to read unhashed host names from ~/.ssh/known_hosts.
      
      好的,忽略上面的内容,我在一篇评论中看到事实并非如此,但我会把它放在那里作为参考

      PS:您始终可以通过以下方式手动设置由zsh完成的主机:

      hosts=(foo.bar.com faa.bar.com fee.bar.com)
      zstyle ':completion:*:hosts' hosts $hosts
      

      或者执行更复杂的版本,如此处所述

      是否设置了使用ip样式?
      zstyle”:完成:“‘使用ip true

      文档中说,默认情况下,ip地址会从主机数据库中剥离。使用ip可以完成这些操作。

      通过创建SSH到IP的快捷方式,这在某种程度上解决了我的问题。但这并不能解决为什么只有IP地址不能为ssh完成制表符的问题,而常规域名可以。您是否检查了ssh是否正在加密
      已知\u主机上的条目。你在用oh my zsh吗?(这样的麻烦往往是一个根源)。请注意,oh my zsh对ssh的ip完成有代码干扰。是的,我正在使用oh my zsh您的
      ~/.ssh/known_hosts
      的第一列(直到第一个空格;
      awk'{print$1}'~/.ssh/known_hosts
      )是什么样子?是否有主机名和IP地址(可能是以逗号分隔的列表),或者只有散列(可能以
      |1 |
      开头)?我有一个主机名和IP地址列表。完全没有散列。唯一的奇数是[localhost]:2224“奇数”是非标准端口的符号(2224而不是22)。它不应该对这个问题负责,我也有。要排除已知主机的问题,您可以尝试删除除一个条目外的所有条目,然后查看该行为是否仍然存在。(别忘了事先备份:-)