这可能是一个简单的问题,但是由于我已经从几种资源中读取了矛盾的信息(互联网上的矛盾是什么?),我想知道我是否做了我应该做的一切。设置到我的RasPi的SSH连接,以便我可以通过Internet访问它。


我首先使用raspi-config工具在运行Raspbian的Pi上激活SSH。
然后,我在Pi上安装了no-ip.com客户端,主机名指向我的动态IP地址。
我使用ifconfig在树莓派上查找了我的LAN ip

最后,在路由器的配置实用程序的端口转发下,启用了端口22的转发在TCP和UDP中都连接到我的pi的本地ip。当我尝试使用本地IP而不是主机名或Internet IP地址连接局域网内部时,它可以工作。我还尝试过从其他位置进行连接,但没有任何效果。

我的问题:我是否缺少任何步骤?我应该在pi上编辑配置文件以使所有功能正常工作吗?

评论

请在您的Pi上包含iptables -L的输出。

您解决了这个问题了吗?如果是这样,您是否可以标记解决问题的答案,或者创建一个自我答案以说明您所做的事情,然后将其标记为答案?那就太好了,因为我们正在尝试提高网站的Q:A比率,而您@Zeta似乎已经解决了一段时间这个问题。谢谢!

我正在使用no-ip.com通过Internet连接到我的Pi,以进行Web和SSH,因此可能是因为您的路由器或ISP阻止了传入流量?
这听起来很像不支持NAT环回的路由器。

我找到了此链接:raspberryanywhere.com也许可以有所帮助。我从几周以来一直在使用该服务,效果很好!该链接提供了一个简单的软件teamviewer,可以随时随地访问您的树莓派。此外,您可以使用常规的SSH客户端。它们只是提供一个虚拟地址,以通过SSH或HTTP连接到您的电路板。值得一试!

#1 楼

如果您仅打算通过SSH通过SSH连接到Raspberry Pi,则ngrok.com可能会以最舒适的方式解决您的问题。

它以某种反向隧道,甚至可以绕过防火墙或ISP的限制。您必须在网站上免费注册才能转发TCP流量。

我与该项目没有任何关系;我只是用它来实现相同的想法(在我的情况下,是转发OpenVPN服务器),到目前为止并没有遇到任何问题。

评论


我也有这个问题,甚至比ngrok更容易使用servo.net。完全免费,0配置只需使用自定义别名粘贴到22端口命令中,然后进行连接。

–玛达瓦·杰(Madhava Jay)
18年5月16日在20:32

#2 楼

问题的一部分可能是因为Pi正在使用路由器上DHCP的动态IP,所以您设置的端口转发不起作用,因为Pi的本地IP已更改。

解决此问题的最简单方法(至少我已经知道)是设置静态IP。只要您不介意配置文件中的内容,它就相对简单。您可以在此处和此处进一步阅读更多内容。我还将在下面说明简单的方法:


通过家庭网络中的SSH或通过屏幕连接到您的Pi,都可以。
用笔和一些纸,您将要写下一些信息。

运行命令ifconfig。我知道您已经运行过,但是这次我们需要收集更多有关您本地IP的信息。这将显示您的路由器信息,您想要的位在eth0(以太网连接)之后。 。 。 。

eth0      Link encap:Ethernet  HWaddr b8:27:eb:b3:fc:2c
          inet addr:192.168.1.81  Bcast:192.168.1.255  Mask:255.255.255.0


写下以下信息...

inet addr – 192.168.1.81 (Pi's Current IP Address)
Bcast –  192.168.1.255 (The Broadcast IP Range)
Mask –  255.255.255.0 (Subnet Mask Address)


显然,您的信息会有所不同在本教程中,因此请确保使用在Pi上运行的ifconfig命令中的信息。


现在运行netstat -nrroute -n。我们需要:

“网关”地址– 192.168.1.254“目标”地址– 192.168.1.0


现在我们有了该信息,我们可以编辑用于设置动态IP的interfaces文件。运行sudo nano /etc/network/interfaces。它应该看起来像这样:




更改行:

iface eth0 inet dhcp




iface eth0 inet static


然后在此行正下方输入以下内容(请注意。您将需要我们上面收集的自己的地址)。 。 。 。

address 192.168.1.81
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255
gateway 192.168.1.254


基本上,地址部分就是您想要IP地址的部分。越高越好,因为发生IP冲突的机会越少。网络掩码–我们之前写下的“掩码”地址。

网络–路由器IP地址,这是先前找到的“目标”地址。您也可以从路由器上取下来,它应该在旁边的侧面说。

广播–我们之前写下的“广播”地址。

网关–这是我们之前找到的“网关”地址。

按Ctrl + O并按Enter或Y,然后按Enter。完成后,请按Ctrl + X。


运行sudo reboot,您的IP应该就位了!重新登录并再次运行ifconfig命令,现在看起来应该像这样:




然后配置端口转发到新的静态IP,它应该都能正常工作!祝你好运!

评论


投票否决的人可以解释为什么吗?我认为这是一个完全有效且可行的解决方案。我想知道为什么,所以我可以改善我的答案。

–RPiAwesomeness
14年2月24日在16:22

这仅在本地网络上有效,而不能从外部使用。 OP询问如何通过Internet而不是从同一网络连接到Pi。

–钦迈·萨鲁普里亚(Chinmay Sarupria)
16年11月12日在19:26

像192.168.1.100这样的地址是本地地址,我可以在城市的2个不同地区使用相同的本地地址拥有2个Pi。因此,当然,我将无法从网络外部访问它们中的任何一个。

–钦迈·萨鲁普里亚(Chinmay Sarupria)
16年11月12日在19:52

如果为RPi提供一个静态IP地址,则应将其从DHCP池中排除,否则网络中的另一台设备可能会获得它,并且您将发生IP冲突。

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
16年12月14日在9:20

#3 楼

您似乎配置错​​误的唯一原因是SSH是仅TCP协议,因此您无需在端口22上转发UDP流量。路由器不支持NAT环回。这意味着当连接源来自内部局域网时,NAT规则(例如您的转发规则)不适用。并非所有路由器都启用此功能。因此,如果您的路由器不支持NAT环回,那么在使用no-ip.com域名以及通过LAN进行操作时,您将无法使用SSH连接到RPi。如果您的配置有效,请尝试使用具有某些数据连接(3G,LTE等)的智能手机,并且上面有ssh客户端,请尝试使用数据计划而非WiFi连接连接到RPi。如果您没有ssh客户端,并且可以进行网络共享,请通过为本地网络拔出智能手机并使用网络共享链接,将智能手机与其中一台计算机一起使用。

#4 楼

除非您使用无线适配器进行连接,否则Raspberry Pi的本地IP地址是不固定的,它将保留其IP地址。如果要将SSH用于RPI,则可以使用以下步骤:


将Pi启动到终端提示符。键入以下命令
“ sudo apt-get install xrdp”如果得到提升,请输入密码(
默认值为“ raspberry”)键入“ Y”并按Enter。现在,这是
将xrdp安装到您的Pi上,这是我们将用于远程桌面连接的软件。等待它完成。重新启动您的Pi。我们将检查xrdp是否将自动启动
。当您的Pi启动到命令提示符后,查找
[ok]启动远程桌面协议服务器:xrdp sesman。这
向您显示xrdp已安装并自动在Pi上启动
最后一步是记录Pi的IP地址
,该IP地址也应显示在启动屏幕。在
下,我的情况是192.168.1.9。这是您的Pi在网络上的地址,也是我们从第二台计算机连接到您的Pi的地址。

第二台计算机设置


启动远程桌面连接,可以在开始->所有程序->附件->远程桌面连接中找到
输入上面提到的Pi的IP地址。
单击连接(如果这样做,您可能会收到安全警告,只需单击“确定”即可。毕竟这是您网络上的Pi,因此
不用担心安全问题)。
将模块保留为默认状态sesman-Xvnc并输入您的Pi的用户名和密码。 (如果尚未更改,则默认值为pi和raspberry
。)
单击“确定”,过一会儿,您应该会看到我的Raspberry Pi桌面!从Pi的桌面注销。



我从这里找到了这些步骤,它们为我工作了

这是使用SSH的另一种方法:


SSH进入Raspberry Pi我通常登录到Raspberry Pi通过SSH或
Secure Shell为其提供全名。这允许命令行
从另一台计算机访问您的Raspberry Pi。尽管可以从世界上任何地方SSH进入Raspberry Pi,并且
我可以,但这篇文章仅涵盖了通过本地网络的SSH访问。我将在以后的博客文章中介绍远程连接。

尽管这不能访问GUI(图形用户界面),但通常可以使用命令行我
做我需要做的95%。我可能可以通过SSH来完成另外5%的工作,但有时您无法超越GUI的舒适性。 :-)

首先,您需要知道要登录的Raspberry Pi的IP地址。如果不确定如何找到它,请阅读
我的博客文章,其中介绍了如何使用称为nmap的优秀工具进行远程操作。

通过SSH进入Raspberry Pi在Linux或Apple Mac计算机上,此操作非常简单。您可以使用以下格式在
命令行中键入用户名和IP地址:


确保用用户名替换用户名想要
登录到远程计算机。 IP地址应采用
格式192.168.1.66

您可能会收到一条消息,说明无法建立主机的真实性,并且如果您确定要继续
连接。只有在您第一次通过SSH
进入Raspberry Pi时,才会看到此消息。只需键入yes。

然后将要求您输入密码,输入要尝试连接的用户名的密码。

对于Windows,设置起来有些麻烦,因为它需要一个名为PuTTY的附加软件。但是,一旦安装,此
确实非常易于使用。

首先转到PuTTY网站www.putty.org,下载并安装
软件。

安装后,加载PuTTY

在“主机名”(或IP地址)下,键入您要连接的IP地址。选择SSH单选按钮。在“已保存的会话”下的框中,键入名称以标识此计算机,例如Raspberry
Pi,然后单击“保存”。单击“打开”现在应开始SSH
会话。

下次您要将SSH导入Raspberry Pi时,只需加载
PuTTY,请单击已保存的会话以突出显示它,然后单击“打开”。
输入密码后,当被询问时,您可以远程访问Raspberry Pi。从这里

评论


我看不到这些说明如何帮助通过Internet访问RPi

–德米特里·格里戈里耶夫(Dmitry Grigoryev)
16年12月14日在9:27

#5 楼

尝试使用免费域名(例如co.cc或类似域名)和freeDNS(它们还提供范围广泛的子域)来指向路由器。我想您还可以获取更新脚本,以防路由器具有动态IP。您拥有哪种路由器?

评论


尝试使用免费域名...他确实做到了,那就是无IP客户端。这比麻烦手动DNS和路由器要简单得多。

–RPiAwesomeness
2014年2月21日在15:12

@RPiAwesomeness抱歉,不知道。

–vktec
2014年3月23日14:32

没问题。我只是在做我的职责,成为Stack Exchange成员并审核网站。这只是有益的批评。请不要把它当作对您的攻击,我只是想帮助使本网站上的内容有用和有益。请继续尝试提供帮助并回答问题并参与其中,您将开始获得帮助。 :)另外,不时弹出聊天室。他们所处的人们都喜欢拥有公司,这表明该网站是有用且蓬勃发展的,拥有良好的,参与的用户群。

–RPiAwesomeness
2014年3月23日14:39



#6 楼

我在芬兰遇到这种情况:rpi已连接到移动wifi路由器,华为e5776,我想通过SSH通过Internet连接到rpi,到目前为止没有成功,最后我知道这是我的Internet服务提供商阻止了双向连接移动宽带客户。对他们来说,两种方式的流量是额外的服务(您必须付费),即我的ISP所称的“开放式门”。因此,请转到您自己的ISP站点,看看是否是这种情况。

#7 楼

Slubbix指出了一个可能的问题,即Raspberry Pi的本地IP地址未固定。这会使路由器中的端口转发不可靠。默认情况下,Raspberry Pi配置为使用DHCP。这意味着IP由路由器提供。默认情况下,该IP也是不固定的。有两个缺点:网络中没有易于维护的IP全局列表,并且您不能在另一个网络中使用Raspberry Pi(IP已被使用或不同的子掩码)。建议执行以下操作:将路由器配置为为Ra​​spberry Pi的MAC地址分配一个固定的IP。可使用命令ifconfig找到该MAC地址

#8 楼

我在互联网上注意到的一件事是,当我端口转发我的网络服务器并尝试使用公共IP连接到它时,它将说它不可用,但是当我通过电话或学校网络连接到它时我可以连接到它,您也可以尝试做的一件事是去google,在搜索栏中输入“ IP”,复制它给您的ip,然后去google翻译并粘贴到您的ip中然后单击右侧窗口中的蓝色ip地址,这应该显示您是否成功移植了Web服务器。

#9 楼

要允许默认SSH端口(22)上的传入流量,您可以告诉iptables允许该端口上的所有TCP流量进入。

sudo iptables -A INPUT -p tcp --dport ssh -j ACCEPT


返回到在上面的列表中,您可以看到它告诉了iptables:


将此规则附加到输入链(-A INPUT),因此我们查看传入流量
检查是否为TCP (-p tcp)。
如果是,请检查输入是否到达SSH端口(--dport ssh)。
如果是,请接受输入(-j ACCEPT)。您可能需要添加20-21的ftp端口,只需将ssh更改为2021即可。

#10 楼

我不确定这个问题是否还需要其他答案,但是非常简单。 1.1

查找端口转发或虚拟服务器,并添加以下内容:

外部端口开始:1234外部端口结束:1234

内部端口起点和终点22。

服务器IP是RPi的静态IP(在我的情况下为192.168.1.50

一旦在路由器端全部设置好,请记下注释通过在Google上搜索IP来确定WAN IP。
现在,您应该可以通过Internet SSH到pi了。就我而言,我使用的是Chromebook,然后添加安全外壳。我输入的用户名是raspi-config和端口1234。

基本上,步骤3中的防火墙规则将WAN IP的端口1234上的所有流量转发到内部LAN IP的端口22。

#11 楼

在通过Internet设置SSH之前,我付出了很多努力,直到找到了这个简单的方法:您可能需要编辑配置文件,仅此而已。我今天测试了它,它像魅力一样工作。我也尝试了不同的SSH android应用程序。

评论


忘了提及:请在路由器上设置端口转发!

– alkopop79
2014年10月11日在16:51

仅供参考:该项目似乎已经终止。

– bobstro
15年8月29日在19:42