【问题标题】:ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known [closed]ssh:无法解析主机名[主机名]:提供节点名或服务名,或未知[关闭]
【发布时间】:2013-12-13 16:11:47
【问题描述】:

我正在尝试使用 Raspberry Pi 设置 VPN,第一步是获得从本地网络外部ssh 进入设备的能力。无论出于何种原因,这被证明是不可能的,我一点也不知道为什么。当我尝试使用user@hostnamessh 进入我的服务器时,我得到了错误:

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known 

但是,我可以使用以下命令登录服务器,

ssh user@[local IP]

服务器是运行最新发行版 Raspbian 的 Raspberry Pi Model B,而我尝试连接的机器是运行 Mavericks 的 Macbook Pro。在我设置 Raspbian 时,在 Raspberry Pi 上启用了 ssh

我已经阅读 Stack Overflow 好几个小时了,想看看其他人是否有这个问题,但我没有发现任何问题。我发现的每个ssh 教程都说我应该能够在远程机器上设置它并使用主机名从任何地方登录,但我从来没有成功过。

【问题讨论】:

  • 原始错误指向特定问题 - 无论您使用什么[hostname],都无法从您尝试的位置解决。 nslookup [hostname] 是否会返回您所期待的 [local IP]
  • nslookup [hostname] 吐出;服务器:8.8.8.8 地址:8.8.8.8#53 ** 从我的 Macbook 运行时,服务器找不到 [主机名]:NXDOMAIN
  • 只是为了确定 - 您在 [hostname] 中输入了一个实际的主机名,对吧?
  • 该输出显示您正在使用 Google 的公共 DNS 服务器,它不知道您尝试使用的任何主机名。您究竟是如何为您的主机名设置 DNS 记录的?
  • Server: 192.168.0.1 Address: 192.168.0.1#53 ** server can't find mrddr: NXDOMAIN

标签: linux networking ssh dns


【解决方案1】:

我有完全相同的配置。这个答案特别适用于从本地网络内部(而不是外部)连接到树莓派。我有一个树莓派 ssh 服务器和一个 macbook pro,都连接到路由器。在测试路由器上,当我使用 ssh danran@mypiserver 时,我的 mac 连接完美,但是,当我在主路由器上使用 ssh danran@mypiserver 时,我收到错误

ssh:无法解析主机名 [主机名]:节点名或服务名 提供或未知

正如你所得到的。看来,至少对我来说,解决方案是在通过 ssh 从我的 mac 连接时向主机名添加 .local 扩展名。

所以,为了解决这个问题,我使用了命令ssh danran@mypiserver.local(记得用你的用户名替换“danran”,用你的主机名替换“mypiserver”)而不是使用ssh danran@mypiserver

对于阅读本文的任何人,请尝试将.local 添加为您尝试连接的主机名的后缀。这应该可以解决本地网络上的问题。

【讨论】:

    【解决方案2】:

    在使用 remote-ssh 插件测试 Visual Studio Code 后,我遇到了同样的问题。在远程主机的设置过程中,软件确实询问我将配置文件存储在哪里。我认为一个好地方是'.ssh-folder'(Linux系统),因为它是一个ssh-remote配置。 结果证明这是个坏主意。第二天,重新启动计算机后,我无法通过远程服务器上的 ssh 登录。错误消息是“无法解析主机名:.......名称或服务未知”。 发生的情况是从 VSC 卸载并没有删除此配置文件,当然这不是干扰通常的过程。 'rm' 后问题解决了(我确实删除了这个配置文件)。

    【讨论】:

      【解决方案3】:

      我在 ansible 中使用格式不正确的 .yml 库存文件时遇到此错误。对于一个组中的多个主机,每个主机名都需要以硬冒号“:”结尾。否则 ansible 将主机名一起运行并产生此 ssh 错误。

      【讨论】:

        【解决方案4】:

        就我而言,我正在尝试这样的 ssh

        ssh pedro@192.168.2.179:22 
        

        当正确的格式是:

        ssh pedro@192.168.2.179 -p 22 
        

        【讨论】:

          【解决方案5】:

          对我来说,问题是我的 ~/.ssh/config 文件中的拼写错误。我有:

          Host host1:
            HostName 10.10.1.1
            User jlyonsmith
          

          问题在于host1 之后的: - 它不应该存在。 ssh 不会针对 ~/.ssh/config 文件中的拼写错误给出警告。当它找不到host1 时,它会在本地寻找机器,找不到它并打印出神秘的错误消息。

          【讨论】:

            【解决方案6】:

            似乎有些应用无法读取符号链接的/etc/hosts(至少在 macOS 上),您需要对其进行硬链接。

            ln /path/to/hosts_file /etc/hosts

            【讨论】:

              【解决方案7】:

              考虑到您允许的端口,试试这个。例如,将您的 .pem 文件存储在您的 Documents 文件夹中。

              现在要访问它,您只需cd [directory],它会将您移动到分配文件的目录。你可以先输入ls,列出你当前所在的目录内容:

              ls
              cd /Documents
              chmod 400 mycertificate.pem
              ssh -i "mycertificate.pem" ec2-user@ec2-1-2-3-4.us-compass-0.compute.amazonaws.com -p 80
              

              【讨论】:

                【解决方案8】:

                我需要连接到远程亚马逊服务器

                ssh -i ~/.ssh/test.pem -fN -L 5555:localhost:5678 ubuntu@hostname.com

                我收到以下错误。

                ssh: Could not resolve hostname <hostname.com>: nodename nor servname provided, or not known

                Mac OSX 解决方案

                ping 主机解决了这个问题。我正在使用 Mac OSX Seirra。

                ping hostname.com

                现在问题已解决。能够连接到服务器。

                注意:我也试过this solution。但它没有成功。然后ping 解决了这个问题。

                【讨论】:

                  【解决方案9】:

                  如果你的命令是:

                  $ ssh -p 1122  path/to/pemfile user@[hostip/hostname]
                  

                  你也会面临同样的错误

                  ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known
                  

                  当你错过了 ssh 的选项-i /path/to/pemfile

                  所以命令应该是:

                  $ ssh -p 1122 -i path/to/pemfile user@[hostip/hostname]
                  

                  【讨论】:

                  • 我没有使用 pemfile 选项,但仍然使用ssh -p xxxx user@hostname进行连接
                  【解决方案10】:

                  如果您使用的是 Mac,重新启动 DNS 响应程序为我解决了这个问题。

                  sudo killall -HUP mDNSResponder
                  

                  【讨论】:

                  • 我还需要 ping、nslookup 和挖掘域。不确定其中哪些有帮助。也许只是等待有帮助。
                  • 对我也有用..这个问题是在我重新启动我的 mac 后开始的..不知道在启动过程中出了什么问题
                  • 我也很想知道为什么会这样......以及首先导致问题的原因。
                  • 如果 nslookup 有效,但 ssh/ping/whatever 无效,这可以解决问题。谢谢。
                  • 这对我有用。通过“ping machostname”访问 mac 有效,但通过 ssh 的 ssh 或 git fetch 失败。在 mac 上运行此命令后,它是固定的。看起来像 mac 上的错误
                  【解决方案11】:

                  我在尝试访问 Github 时发生了这种情况。问题是我习惯这样做:

                  git remote add <xyz> ssh:\\git@github.com......

                  但是,如果您在问题中遇到此错误,删除 ssh:\\ 可能会解决问题。它为我解决了它!

                  请注意,您必须执行 git remote remove <xyz> 并重新添加不带 ssh:\\ 的远程 URL。

                  【讨论】:

                  • 你真的使用ssh:\\而不是ssh://吗?
                  • @RadonRosborough 这是不久前的事了……所以,我不确定。可能有! :)
                  【解决方案12】:

                  最近我遇到了同样的问题。我能够在我的网络上通过 ssh 连接到我的 pi,但不能从我的家庭网络外部。

                  我已经:

                  • 在我的家庭网络上安装并测试了 ssh。
                  • 为我的 pi 设置一个静态 IP。
                  • 设置动态 DNS 服务并在我的 pi 上安装软件。 我参考了这些 instructions 来设置静态 IP,还有更多的指导资源。

                  另外,我在我的路由器上设置了端口转发来托管一个网站,我什至将端口 22 端口转发到我的 pi 的静态 IP 以用于 ssh,但我将字段留空,您指定您正在执行的应用程序端口在路由器上转发。无论如何,我在这个字段中添加了“ssh”,瞧!从任何地方到我的 pi 的有效 ssh 连接。

                  我会写出我的路由器的端口转发设置。

                  (ApplicationTextField)_ssh    (外部端口)_22    (内部端口)_22   (协议)_Both    (到 IP 地址)_192.168.1.###    (已启用)_checkBox

                  不过,不同路由器的端口转发设置可能不同,因此请查找路由器的方向。

                  现在,当我在家庭网络之外时,我通过键入以下内容连接到我的 pi:

                  ssh pi@[主机名]

                  然后我就可以输入我的密码并连接了。

                  【讨论】:

                    【解决方案13】:

                    我遇到了同样的问题,我可以通过在主机名中添加一个 .local 来解决这个问题,ala ssh user@hostname.local

                    【讨论】:

                    • 这对我有用。 ping $(hostname) 正在工作,但需要做 ssh $(hostname).local。 Mac 通常很棒 .. 但是当它很糟糕时,它真的很棒..
                    • 我还有一个问题:hadoop 需要执行 ssh user@hostname 而我不能只需手动添加 .local。我被卡住了
                    • 在 Ubuntu 19.10 上添加 .local 为我做了。
                    【解决方案14】:

                    我遇到了同样的问题:首选项 -> 共享 -> 远程登录中显示的地址不起作用,我得到了一个“... nodename or servname provided, or not known”。但是,当我手动编辑设置(在首选项 -> 共享 -> 远程登录 -> 编辑中)并启用“使用动态全局主机名”时,它突然起作用了。

                    【讨论】:

                      【解决方案15】:

                      我在连接到远程机器时遇到了同样的问题。但我设法登录如下:

                      ssh -p 22 myName@hostname
                      

                      或:

                      ssh -l myName -p 22 hostname
                      

                      【讨论】:

                      • 终于成功了!语法ssh myName@hostname:myPort 一定有错误
                      • @Edoardo 如果是错误,那是用户的错误;该语法不是并且从未有效。您应该查看ssh 命令的文档。
                      • @AsteroidsWithWings 可以
                      【解决方案16】:

                      如果您需要从世界任何地方访问您的 VPN,您需要注册一个域名并将其指向您的 VPN/网络网关的公共 IP 地址。您还可以使用动态 DNS 服务将主机名连接到您的公共 IP。

                      如果您只需要从 Mac SSH 到本地网络中的 Raspberry,请执行以下操作:在您的 Mac 上,编辑 /etc/hosts。假设 Raspberry 的主机名为“berry”,ip 为“172.16.0.100”,添加一行:

                      # ip           hostname
                      172.16.0.100   berry
                      

                      现在:ssh user@berry 应该可以工作了。

                      【讨论】:

                      • 除上述之外,我还使用“windows-cmd”来了解我的 server-url 的 ip。我做了“ping url”来获取IP。因此,在“/etc/hosts”中添加了 IP 和 URL 对。它在(git pull 等)之后完美地工作!
                      • @grebneke 我有完全相同的设置。 pi + mac。我还有两个路由器要测试。在一台路由器上 ssh user@hostname 工作正常,没有问题。在另一台路由器上,发生与原始海报完全相同的问题。事实证明,要解决这个问题,我必须在主机名中添加一个 .local。因此,我必须使用 ssh user@hostname.local 而不是 ssh user@hostname 然后连接。你能解释一下吗?每个路由器对我的 mac 如何确认树莓派的主机名有何不同?
                      猜你喜欢
                      • 1970-01-01
                      • 2014-01-05
                      • 2011-04-30
                      • 2013-08-10
                      • 2019-01-05
                      • 2019-12-18
                      • 2022-01-17
                      • 2015-04-22
                      • 2019-07-31
                      相关资源
                      最近更新 更多