我正在尝试使用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
教程都说我应该能够在远程计算机上进行设置,并使用主机名从任何地方登录,而且我从未取得过成功。
答案 0 :(得分:81)
我在连接远程计算机时遇到了同样的问题。但我设法登录如下:
ssh -p 22 myName@hostname
或:
ssh -l myName -p 22 hostname
答案 1 :(得分:70)
如果您使用的是Mac,重新启动DNS响应程序会为我解决问题。
sudo killall -HUP mDNSResponder
答案 2 :(得分:22)
最近我遇到了同样的问题。我能够在我的网络上搜索到我的pi,但不是来自我的家庭网络之外。
我已经:
另外,我在我的路由器上设置端口用于托管网站,我甚至将端口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,或者不知道'。但是,当我手动编辑设置时(在首选项 - >共享 - >远程登录 - >编辑)并启用"使用动态全局主机名",它突然有效。
答案 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
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
作为您尝试连接的主机名的后缀。这应该可以解决本地网络上的问题。