【问题标题】:ssh resolves -p 1234 hostname=“localhost” but does not resolve hostname=“localhost:1234”ssh 解析 -p 1234 hostname=“localhost” 但不解析 hostname=“localhost:1234”
【发布时间】:2015-01-30 02:57:03
【问题描述】:

几周前我升级到了 Fedora 20。我在升级过程中遇到的问题很少,系统很稳定。下面描述了我遇到的一个挥之不去的问题。

我的 LAN 上有一台计算机,其反向端口正向设置回最近更新的 fedora 20 计算机。我可以验证反向正向工作,因为从 fedora 20 计算机成功执行以下操作:

$ ssh -p 1234 xxxxx@localhost 
xxxxxx@localhost's password: 
Last login: Mon Dec  1 14:08:22 2014 from localhost.localdomain

但是,如果我在 localhost 之后指定端口号,则会出现“无法解析”错误,如下所示:

$ ssh -v xxxxx@localhost:1234
OpenSSH_6.4, OpenSSL 1.0.1e-fips 11 Feb 2013
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 51: Applying options for *
ssh: Could not resolve hostname localhost:1234: Name or service not known

所以在第一种情况下,它会看到 hostname=localhost 并将其解析为 IP 地址。在第二种情况下,它会看到 hostname=”localhost:1234:” ...

/etc/host 的内容是:

127.0.0.1   localhost.localdomain localhost
::1     localhost6.localdomain6 localhost6

现在我正在尝试确定这是解决问题还是其他问题。 “dig localhost”不会返回答案部分,因此建议它是。同时 localhost:port# 在浏览器中工作。我不知道如何从 /etc/hosts 解析 localhost,我认为 NetworkManager 会这样做吗?我没有在我的 LAN 上运行任何类型的内部 DNS 服务器。

如果需要,我很乐意提供更多信息并提前致谢

【问题讨论】:

    标签: ssh


    【解决方案1】:

    您必须使用 -p 选项来指定带有 SSH 的端口,而不是主机名:端口格式。

    ssh -v xxxxx@localhost -p 1234
    

    【讨论】:

      【解决方案2】:
      $ ssh -v xxxxx@localhost:1234
      ssh: Could not resolve hostname localhost:1234: Name or service not known
      

      "user@host:port" 或 "host:port" 根本不是在 ssh 命令行上指定目标的有效语法。 ssh 将“@”之后的所有内容视为主机名。它不会将该字段的一部分视为端口号,并且没有记录这样做。

      具体错误表明 ssh 正在尝试查找名为“localhost:1234”的不存在主机的 IP 地址并且失败。

      【讨论】: