SSH:无法解析主机名[hostname]:nodename或提供的servname,或者无法识别

我正在尝试使用Raspberry Pi设置VPN,第一步是获得从本地网络外部将ABC_0_到设备的功能。不管出于什么原因,这被证明是不可能的,我一点也不知道为什么。当我尝试使用user@hostname将ABC_0_到我的服务器时,出现错误:

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上启用了ABC_0。

我花了几个小时仔细阅读堆栈溢出,试图看看是否有其他人有这个问题,但我没有发现任何问题。我找到的每个ssh教程都说,我应该能够在远程计算机上设置它,并使用主机名从任何地方登录,但我从未成功使用它。

692882 次浏览

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

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

我已经:

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

此外,我在路由器上设置了端口转发,用于托管网站,我甚至将端口22转发到我的PI的SSH静态IP,但我将指定在路由器上执行端口转发的应用程序的字段留空。总之,我在这个字段中添加了“ SSH ”,瞧!从任何地方到我的PI的工作SSH连接。

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

(应用程序文本字段)_SSH ; ; ;(外部端口)_22(内部端口)_22(协议)_ ; ; ;(到IP地址)_192.168.1.### ; ; ;(启用)“_”复选框

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

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

SSH PI@[主机名]

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

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

ssh -p 22 myName@hostname

或:

ssh -l myName -p 22 hostname

我遇到了同样的问题:“首选项”->“共享”->“远程登录”中显示的地址不起作用,我得到了一个..NODENAME或SERVNAME均未提供,或未知。然而,当我手动编辑设置(在首选项->共享->远程登录->编辑)并启用“使用动态全局主机名”时,它突然工作了。

enter image description here

enter image description here

我遇到了同样的问题,我可以通过向主机名添加.local来解决,alassh user@hostname.local

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

我在尝试访问GitHub时遇到了这种情况。问题是我习惯于这样做:

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

但是,如果问题中出现此错误,删除ssh:\\可能会解决此问题。它为我解决了这个问题!

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

如果你在Mac上,重新启动DNS响应器为我解决了这个问题。

sudo killall -HUP mDNSResponder

如果您的命令是:

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

你也会面临同样的错误。

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

当您错过选项时,_ABC_SSH的0

所以命令应该是:

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

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

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

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

注意:我也尝试了这个解决方案。但没有成功。然后,ping解决了问题。

似乎有些应用程序无法读取符号链接的/etc/hosts(至少在MacOS上),您需要硬链接它。

ln /path/to/hosts_file /etc/hosts

对我来说,这个问题是我的~/.ssh/config文件上的一个输入错误。我有:

Host host1:
HostName 10.10.1.1
User jlyonsmith

问题是:host1之后-它不应该在那里。ssh~/.ssh/config文件中没有输入错误警告。当它找不到host1时,它会在本地查找该计算机,但找不到它,并打印隐含的错误消息。

在我的例子中,我是这样尝试SSH的。

ssh pedro@192.168.2.179:22

当正确的格式为:

ssh pedro@192.168.2.179 -p 22

我在Ansible中使用未正确格式化的.yml清单文件时遇到此错误。对于组中的多个主机,每个主机名都需要以硬冒号“:”结尾。否则,Ansible将同时运行主机名并生成此SSH错误。

在用远程SSH插件测试VisualStudio代码后,

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

我有完全相同的配置。这个答案特别适用于从本地网络内部(而不是外部)连接到Raspberry Pi.我有一台Raspberry Pi SSH服务器和一台苹果笔记本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作为您尝试连接的主机名的后缀。这应该可以解决本地网络上的问题。