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


131

我正在尝试使用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。ssh当我设置Raspbian时,在Raspberry Pi上启用了。

我已经仔细阅读了数小时的Stack Overflow,试图看看是否有人遇到了这个问题,但是我什么也没发现。ssh我发现的每个教程都说我应该能够在远程计算机上进行设置并使用主机名从任何地方登录,而我从未成功过。


原始错误指向特定的问题- [hostname]您无法从尝试使用的地方解决所使用的任何内容。是否nslookup [hostname]退给你[local IP]你期待?
admdrew

2
nslookup [hostname]吐出来 服务器:8.8.8.8地址:8.8.8.8#53 **从我的Macbook运行时,服务器找不到[主机名]:NXDOMAIN
qaxf6auux 2013年

2
只是要确保-您要在中输入实际的主机名[hostname],对吗?
admdrew

该输出表明您正在使用Google的公共DNS服务器,该服务器不了解您要使用的主机名。您如何精确设置主机名的DNS记录?
admdrew

2
Server: 192.168.0.1 Address: 192.168.0.1#53 ** server can't find mrddr: NXDOMAIN
Nakilon 2014年

Answers:


29

最近,我遇到了同样的问题。我可以在网络上ssh到pi,但不能从家庭网络外部。

我已经:

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

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

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

(ApplicationTextField)_ssh(外部端口)_22(内部端口)_22(协议)_两者(至IP地址)_192.168.1。###(启用)_checkBox

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

现在,当我不在家庭网络中时,可以通过输入以下内容连接到我的pi:

ssh pi @ [主机名]

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


109

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

sudo killall -HUP mDNSResponder

我还需要ping,nslookup和挖掘域。不知道这些帮助。也许只是等待帮助。
Samizdis

我也工作了..这个问题在我重新启动我的mac ..开始后就开始了。不知道启动时弄乱了什么
murli

1
我也很想知道为什么会这样...首先是什么引起了问题。
神秘可乐

如果nslookup可以,但是ssh / ping /无论如何,则可以解决此问题。谢谢。
Erik B

93

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

ssh -p 22 myName@hostname

要么:

ssh -l myName -p 22 hostname

1
终于成功了!语法必须有一个错误ssh myName@hostname:myPort
Edoardo '18

10

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

如果只需要从Mac到本地网络内的 Raspberry ssh,请执行以下操作:在Mac上,编辑/etc/hosts。假设Raspberry的主机名是“ berry”,而IP地址是“ 172.16.0.100”,则添加以下一行:

# ip           hostname
172.16.0.100   berry

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


除了上述内容外,我还使用“ windows-cmd”来了解我的服务器URL的IP。我做了“ ping URL”,以获取IP。因此,在“ / etc / hosts”中添加了IP和URL对。之后(git pull等),它就可以完美地工作了!
parasrish

9

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


对我来说就做到了。ping $(hostname)在工作但需要做ssh $(hostname).local。Mac通常很棒..但是当它糟透了时,的确是..
javadba

我还有一个问题: hadoop需要做ssh user@hostname,我不能简单地.local手动添加。我被卡住了
javadba

添加.local是在Ubuntu 19.10上为我完成的。
prkos

5

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

ssh pedro@192.168.2.179:22 

正确的格式是:

ssh pedro@192.168.2.179 -p 22 

1
哇-永远被端口转发卡住了!这是圣洁的文字。
FrozenOne

4

如果您的命令是:

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

您还将面临同样的错误

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

当您错过-i /path/to/pemfilessh 选项时

因此,Command应为:

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

我没有使用pemfile选项,但仍使用ssh -p xxxx user@hostname
Yoku

4

我需要连接到远程Amazon服务器

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解决了问题。


3

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

在此处输入图片说明

在此处输入图片说明



2

尝试访问Github时,这发生在我身上。问题是我习惯这样做:

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

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

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


1
您是否真正使用ssh:\\而不是ssh://
Radon Rosborough

@RadonRosborough这是前一段时间了...所以,我不确定。可能有!:)
Monkpit '17

1

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

Host host1:
  HostName 10.10.1.1
  User jlyonsmith

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


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

0

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.