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

qax*_*uux 111 linux dns ssh networking

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

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known 
Run Code Online (Sandbox Code Playgroud)

但是,我可以登录到服务器,

ssh user@[local IP]
Run Code Online (Sandbox Code Playgroud)

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

我已经仔细阅读了Stack Overflow几个小时,试图看看是否有其他人遇到过这个问题而且我还没有找到任何东西.ssh我找到的每个教程都说我应该能够在远程计算机上进行设置,并使用主机名从任何地方登录,而且我从未取得过成功.

tok*_*khi 85

我有同样的问题连接到远程机器.但我设法登录如下:

ssh -p 22 myName@hostname
Run Code Online (Sandbox Code Playgroud)

要么:

ssh -l myName -p 22 hostname
Run Code Online (Sandbox Code Playgroud)

  • 这对我也有用.为什么会这样? (22认同)

小智 82

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

sudo killall -HUP mDNSResponder
Run Code Online (Sandbox Code Playgroud)

  • 我也很想知道为什么会这样……以及首先是什么导致了这个问题。 (4认同)
  • 如果“nslookup”有效,但 ssh/ping/whatever 无效,则可以解决问题。谢谢。 (2认同)

小智 23

最近我遇到了同样的问题.我能够在我的网络上搜索我的pi,但不能从我的家庭网络外部访问.

我已经:

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

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

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

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

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

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

ssh pi @ [主机名]

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


Ped*_*dro 14

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

ssh pedro@192.168.2.179:22 
Run Code Online (Sandbox Code Playgroud)

当正确的格式是:

ssh pedro@192.168.2.179 -p 22 
Run Code Online (Sandbox Code Playgroud)


gre*_*eke 9

如果您需要从世界上任何地方访问您的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
Run Code Online (Sandbox Code Playgroud)

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


hor*_*uzz 8

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


小智 6

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

在此输入图像描述

在此输入图像描述


jly*_*ith 6

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

Host host1:
  HostName 10.10.1.1
  User jlyonsmith
Run Code Online (Sandbox Code Playgroud)

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


kar*_*vee 5

如果您的命令是:

$ ssh -p 1122  path/to/pemfile user@[hostip/hostname]
Run Code Online (Sandbox Code Playgroud)

你也会面临同样的错误

ssh: Could not resolve hostname [hostname]: nodename nor servname provided, or not known
Run Code Online (Sandbox Code Playgroud)

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

所以命令应该是:

$ ssh -p 1122 -i path/to/pemfile user@[hostip/hostname]
Run Code Online (Sandbox Code Playgroud)