在我的Pi上通过Internet设置SSH


16

这可能是一个简单的问题,但是由于我从几种资源中读取了矛盾的信息(互联网上的矛盾是什么?),我想知道我是否做了我应该做的一切。

因此,我想建立与RasPi的SSH连接,以便可以通过Internet访问它。

  1. 我首先使用该raspi-config工具在运行Raspbian的Pi上激活SSH 。
  2. 然后,我在Pi上安装了no-ip.com客户端,使其主机名指向我的动态IP地址。
  3. 我使用覆盆子在LAN IP地址上查找 ifconfig
  4. 最后,在路由器的配置实用程序中,在端口转发下,我启用了将TCP和UDP中的端口22转发到pi的本地ip的功能。

此后,我似乎无法通过Internet SSH到我的pi。当我尝试使用本地IP(但不使用主机名或Internet IP地址)连接LAN内部时,它可以工作。我也尝试过从其他位置进行连接,但没有任何效果。

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


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

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

我正在使用no-ip.com通过Internet连接到我的Pi,以进行Web和SSH,因此可能是因为您的路由器或ISP阻止了传入流量?
Alastair Montgomery 2014年

这听起来很像不支持NAT环回的路由器。
flakeshake

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

Answers:


12

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

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

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


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

3

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

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

  1. 可以通过家庭网络中的SSH或通过屏幕连接到您的Pi,两者都可以。

  2. 拿起笔和纸,您将要写下一些信息。

  3. 运行命令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

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

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

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

    接口文件

  6. 更改行:

    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,要么EnterYEnter。完成后,按Ctrl+ X

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

    看中!

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


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

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

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

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

2

您似乎配置错​​误的唯一一件事是SSH是仅TCP协议,因此您无需在端口22上转发UDP通信。

现在,为什么它似乎不起作用,可能是因为您的路由器不支持NAT环回。这意味着当连接源来自内部局域网时,NAT规则(例如您的转发规则)不适用。并非所有路由器都启用此功能。因此,如果您的路由器不支持NAT环回,那么在使用no-ip.com域名以及从LAN进行域名转换时,您将无法使用SSH连接到RPi

要尝试配置是否正常工作,如果您的智能手机具有某些数据连接(3G,LTE等),并且上面有ssh客户端,请尝试使用数据计划而非WiFi连接连接到RPi。如果您没有ssh客户端,并且可以进行网络共享,请通过为本地网络拔出智能手机并使用网络共享链接,将智能手机与其中一台计算机一起使用。


0

例如,尝试使用免费域名 co.cc或相似,freeDNS(他们还提供大范围的子域),以点到路由器。我认为,如果路由器具有动态IP,您也可以获得更新脚本。

如果这样不起作用,则可能是您的端口转发设置错误?您拥有哪种路由器?


Try using a free domain name...他做到了,这就是no-ip客户端的目的。这比麻烦手动DNS和路由器要简单得多。
RPiAwesomeness

@RPiAwesomeness很抱歉,不知道。
萨马迪2014年

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

0

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


0

Slubbix指出了一个可能的问题,即Raspberry Pi的本地IP地址未固定。这会使路由器中的端口转发不可靠。默认情况下,Raspberry Pi配置为使用DHCP。这意味着IP由路由器提供。默认情况下,此IP也未固定。

Slubbix已经指出了解决此问题的一种方法:固定Raspberry Pi的IP。

我认为这有两个缺点:网络中没有易于维护的IP全局列表,并且您不能在其他网络(已使用IP或其他子掩码)中使用Raspberry Pi。

因此,我建议执行以下操作:配置路由器以为Raspberry Pi的MAC地址分配固定的IP。使用以下命令可以找到MAC地址ifconfig


0

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。

第二台机器设置

  1. 启动远程桌面连接,可以在“开始”->“所有程序”->“附件”->“远程桌面连接”中找到
  2. 输入您上面提到的Pi的IP地址。

  3. 单击“连接”(如果这样做,您可能会收到安全警告,只需单击“确定”即可。毕竟这是您网络上的Pi,因此无需担心安全性)。

  4. 将模块保留为sesman-Xvnc的默认值,然后输入您的Pi的用户名和密码。(如果尚未更改,则默认值为pi和树莓派)。

  5. 单击确定,过一会儿,您应该会在我的Raspberry Pi桌面上打招呼!

  6. 完成后,只需从Pi的桌面注销即可。

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

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

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

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

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

要从Linux或Apple Mac计算机SSH进入Raspberry Pi,这非常容易。您可以使用以下格式在命令行中输入用户名和IP地址:

ssh用户名@IP地址

确保将用户名替换为您要用来登录远程计算机的用户名。IP地址的格式应为192.168.1.66

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

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

对于Windows,设置起来有些棘手,因为它需要附加的软件PuTTY。但是,一旦安装,这真的很容易使用。

首先访问PuTTY网站www.putty.org,下载并安装该软件。

安装完成后加载腻子

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

下次您想通过SSH进入Raspberry Pi时,只需要加载PuTTY,请单击已保存的会话以使其突出显示,然后单击“打开”。键入密码后,一旦被询问,您就可以远程访问Raspberry Pi。

我从这里找到这些指示


我看不到这些说明如何帮助通过Internet
Dmitry Grigoryev

0

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


0

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

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

回到上面的列表,您可以看到这告诉了iptables:

  1. 将此规则附加到输入链(-A INPUT),以便我们查看传入流量
  2. 检查是否为TCP(-p tcp)。
  3. 如果是这样,请检查输入是否进入SSH端口(--dport ssh)。
  4. 如果是这样,请接受输入(-j ACCEPT)。

希望这对您有用,您可能还想添加20至21的ftp端口,只需ssh20和更改为即可21


0

我不确定这个问题是否需要其他答案,但它很简单。

  1. 安装OpenSSH或从中启用它 raspi-config

  2. 在我的情况下,转到路由器/防火墙主页192.168.1.1

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

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

    内部端口的起点和终点22。

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

  4. 在路由器端完成所有设置后,通过在Google上搜索您的IP,记下您的WAN IP。

  5. 现在您应该可以通过Internet SSH到pi了。就我而言,我使用的是Chromebook,并添加了安全外壳。我输入用户名pi@mywanip和端口1234。

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


-1

在通过互联网设置SSH之前,我付出了很多努力,直到找到了这种简单的方法:

http://raspctl.com

只需注册并复制粘贴命令。您可能需要编辑配置文件,仅此而已。我今天测试了它,它就像魅力一样工作。我也尝试了不同的SSH android应用程序。


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

1
仅供参考:该项目似乎已终止。
bobstro
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.