ssh:无法解析主机名[hostname]:提供的nodename或servname,或者未知

时间:2013-11-27 20:16:41

标签: linux networking ssh dns

我正在尝试使用Raspberry Pi建立VPN,第一步是从本地网络外部获得ssh进入设备的能力。无论出于何种原因,事实证明这是不可能的,我没有丝毫的线索。当我尝试使用ssh user@hostname进入我的服务器时,出现错误:

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教程都说我应该能够在远程计算机上进行设置,并使用主机名从任何地方登录,而且我从未取得过成功。

16 个答案:

答案 0 :(得分:81)

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

ssh -p 22 myName@hostname

或:

ssh -l myName -p 22 hostname

答案 1 :(得分:70)

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

sudo killall -HUP mDNSResponder

答案 2 :(得分:22)

最近我遇到了同样的问题。我能够在我的网络上搜索到我的pi,但不是来自我的家庭网络之外。

我已经:

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

另外,我在我的路由器上设置端口用于托管网站,我甚至将端口22转发到我的pi的静态IP for ssh,但是我将该字段留空了,您指定了正在执行端口的应用程序在路由器上转发。无论如何,我在这个领域添加了'ssh',VOILA!从任何地方到我的pi的工作ssh连接。

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

  

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

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

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

  

ssh pi @ [hostname]

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

答案 3 :(得分:8)

如果您需要从世界上任何地方访问您的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应该有用。

答案 4 :(得分:6)

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

答案 5 :(得分:3)

我遇到了同样的问题:首选项中显示的地址 - >分享 - >远程登录没有工作,我提供了一个'... nodename或servname,或者不知道'。但是,当我手动编辑设置时(在首选项 - >共享 - >远程登录 - >编辑)并启用"使用动态全局主机名",它突然有效。

enter image description here

enter image description here

答案 6 :(得分:3)

如果你的命令是:

$ 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]

答案 7 :(得分:1)

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

=

但是,如果您从问题中收到此错误,则删除git remote add <xyz> ssh:\\git@github.com......可能会解决此问题。它为我解决了!

请注意,您必须执行ssh:\\并重新添加没有git remote remove <xyz>的远程网址。

答案 8 :(得分:1)

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

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 :(得分:1)

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

ln /path/to/hosts_file /etc/hosts

答案 10 :(得分:1)

对我来说,问题出在我的~/.ssh/config文件上。我有:

Host host1:
  HostName 10.10.1.1
  User jlyonsmith

问题是:之后的host1-它不应该在那里。 ssh~/.ssh/config文件中的错字没有警告。当找不到host1时,它将在本地查找机器,找不到它并打印出错误的错误消息。

答案 11 :(得分:0)

考虑到您允许的端口,请尝试此操作。例如,将.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

答案 12 :(得分:0)

就我而言,我正在尝试使用ssh

ssh pedro@192.168.2.179:22 

正确的格式为:

ssh pedro@192.168.2.179 -p 22 

答案 13 :(得分:0)

我通过使用格式错误的ansible .yml库存文件收到此错误。对于一个组中的多个主机,每个主机名都必须以硬冒号“:”结尾。否则,ansible会同时运行主机名并产生此ssh错误。

答案 14 :(得分:0)

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

答案 15 :(得分:0)

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

<块引用>

ssh: 无法解析主机名 [hostname]: nodename 或 servname 提供或未知

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

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

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