外出时如何使SSH正常工作? (最好与该应用一起使用。)
#1 楼
以下是我在debian上使用的步骤,这些步骤可能会有用。1.为Pi设置静态IP。
a。使用以下命令打开interfaces文件
sudo nano /etc/network/interfaces
b。将interfaces文件更改为以下内容(这对我有用,我不确定是否可以排除一些行)。
auto lo
iface lo inet loopback
iface eth0 inet static
address 192.168.1.2 #static ip you want for the pi
netmask 255.255.255.0
gateway 192.168.1.1 # the ip address of the router
2.设置动态DNS
您的ISP分配的IP地址是动态的,因此我们需要一种解决IP地址更改的方法。我使用dnsdynamic和ddclient软件来实现此目的。两者均可免费使用。
a.Sign注册一个具有dnsdynamic
的帐户b。添加一个新域,然后从列表中选择一个名称和域。您可以选择子域中的任何可用域。然后添加
3.在Pi上设置ddclient
a。使用com安装ddclient mand
sudo apt-get install ddclient
b。使用以下命令打开ddclient的配置文件并添加以下几行。
sudo nano /etc/ddclient.conf
< br并将文件更改为以下文件。
# /etc/ddclient.conf
daemon=600
timeout=10
ssl=yes
protocol=dyndns2
use=web, web=myip.dnsdynamic.com
server=www.dnsdynamic.org
login=x@gmail.com #userid for dnsdynamic.com
password='xxxx' #password for the same put inside quotes
x.dnsdynamic.com #the domain name you created
并保存文件。
sudo nano /etc/rc.local
在退出0(最后一行)之前添加以下命令br />
保存文件。要启动ddclient,请重新启动pi或在提示符下执行上述命令。它将使您的域名更新,并在必要时更改当前IP地址。
4.Port Forwarding
a。查找路由器的型号。
b。转到portforward.com
c。输入路由器品牌和型号以找到有关转发端口的详细指南。
d。选择路由器品牌和型号后,单击重定向页面上的默认指南。
e。在“静态Ip”文本框中,输入在步骤1中给出的Pi的静态IP。
f。按照步骤操作并转发端口22。 22和目标端口可以是任何端口。请切入pi时使用目标端口。为避免混淆,我倾向于使用相同的源端口和目标端口。
如果您正在阅读本教程,
通过使用域名替换IP地址从任何地方登录到您的pi。
例如-我使用pi@hometorrent.dnsdynamic.com:22来登录我的pi。
评论
非常感谢!当我返回埃克塞特回来时,我会尝试一下!
– xxmbabanexx
13年4月3日在21:18
+1很好的答案,但是,您真的需要在/etc/rc.local中使用sudo,不是已经以root身份运行吗?
–热火约翰
2013年9月25日20:49在
这样就完全搞砸了我的Ngrok和Weaveed配置。现在我根本无法连接!
– IgorGanapolsky
16年8月7日在23:48
#2 楼
首先,您需要设置端口转发。每个路由器都略有不同,因此您必须查找路由器的详细信息。有适用于大多数路由器的通用端口转发方法指南,但是我建议您为您的路由器找到一个指南。实际的路由器型号。
设置一个难忘的端口以链接到您的树莓派,例如23456之类。注意不要覆盖公用端口号。
最后,使用ssh执行以下操作:
$ ssh -p 23456 user@IP
其中:
IP是家庭路由器的IP地址
-p
命令告诉ssh尝试隧道连接到哪个端口评论
为什么不能使用端口22而不是自定义23456?
– IgorGanapolsky
16年8月12日在15:55
@IgorGanapolsky您可以执行此操作,但是1)如果您想在家外通过SSH连接到另一台计算机,则会发生冲突; 2)由于许多“黑客”试图通过端口22登录,因此风险更高,因此通常建议在服务器上将其关闭
– Meneldal
19年2月24日在10:59
#3 楼
从家庭网络外部(意味着从Internet)访问RaspberryPi(甚至笔记本电脑/服务器)不是一件容易的事,因为您的家用笔记本电脑或RaspberryPi只有本地IP地址(在10.xxx范围内或192.168.xx范围内)范围)。它没有可从Internet看到的公共IP地址。您的问题的简单答案是使用免费的在线服务,例如SocketXP,它提供安全的公共隧道终结点,以从本地网络外的SSH进入RaspberryPi 。
SocketXP提供了一种从外部网络访问家庭RaspberryPi的简单,安全和简便的方法。 SocketXP不需要您破解WiFi路由器中的任何设置。开箱即用。要了解如何从外部将RaspberryPi设置为SSH,请阅读此博客,了解如何使用SocketXP将SSH远程连接到RaspberryPi。
如何设置SocketXP:
步骤1:
在您的计算机上安装SocketXP客户端使用以下命令运行RaspberryPi。
$ curl -O https://portal.socketxp.com/download/linux/socketxp && chmod +wx socketxp && sudo mv socketxp /usr/local/bin
步骤2:
使用以下命令将SocketXP客户端与SocketXP Cloud Service连接。您需要在https://portal.socketxp.com上注册以获得唯一的身份验证令牌。
$ socketxp -register "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1NDk1MTg0MDAsImlkIjoiZ2FuZXNodmVscmFqYW5AZ21ha6K208n0.cB2uYevpH4lWIQGQUJdQ0eiEDqS8OiP_YOiqernnui3rjjadfadsfsfas34"
步骤3:
获取公共隧道终结点以从Internet访问您的RaspberryPi。
$ socketxp -connect tcp://localhost:22
Tunnel Access -> tunnel.socketxp.com:35277
第4步:
使用以下命令从Internet SSH到您的RaspberryPi。 SSH登录到您的RaspberryPi。
#4 楼
这个问题是古老的,随着时间的流逝,获得公共可访问的IPv4地址的机会越来越少。您很可能在CGNAT后面,这意味着您与ISP的其他客户共享单个公用IPv4。因此,无法将端口转发到您的PI或其他任何东西。如果您具有IPv6,则可以为您的PI提供一个静态地址,并允许在路由器上对其进行访问。现在,许多移动服务提供商都将IPv6提供给电话。
旧的“基于陆地”的ISP(光纤,DSL,同轴电缆等)经常拖延脚步。
您还可以获得便宜的VPS (虚拟专用服务器)在云中某处具有公共IPv4的地方,并从PI到VPS建立SSH隧道。
#5 楼
除了phalt的答案之外,您还应该签出动态DNS服务之一,例如No IP。它们使您可以使用静态主机名访问家庭网络,尽管由于DSL或电缆提供商断开您的连接,您的IP地址可能每天都会更改。他们还有一个不错的入门页面,该页面还向您介绍如何相应地设置路由器。您可能希望在Raspberry Pi上安装
inadyn
软件包以在以下情况下更新No-IP DNS条目: IP发生变化。您可以通过运行以下命令来执行此操作:sudo apt-get install inadyn
从inadyn自述文件中,我调用了此示例调用:
inadyn --dyndns_system default@no-ip.com -u USER-p PASS -a HOST
希望这会有所帮助。
评论
No-Ip具有DUC(动态更新客户端),它将确保您的IP地址不变。
– IgorGanapolsky
16年8月12日在15:57
#6 楼
史蒂夫·欧文的答案的补充:步骤1:
如果通过无线局域网连接,请使用:
iface wlan0 inet static
wpa-ssid "xxx" #<=your ssid
wpa-psk "yyy" #<=your pw
address 192.168.1.xxx #<=preferred static ip (xxx<255)
netmask 255.255.255.0
gateway 192.168.1.1 #<=router's ip
步骤2:
更改上述内容后,需要重新启动
networking
:sudo /etc/init.d/networking restart
评论
我还在静态块前添加了2行,即auto wlan0 allow-hotplug wlan0,我在这篇文章中找到了它raspberrypi.stackexchange.com/a/10320/10148我也尝试着在没有它们的情况下进行操作,但是没有任何效果。
– XandruCea
2013年12月31日19:23在
由于Raspbian的网络配置和初始化系统发生了变化,因此该答案应被视为过时的。
– goldilocks♦
16-4-22在13:42
#7 楼
此外,某些路由器的确对某些动态DNS服务提供了内置支持,您可以在路由器中启用此选项(如果存在),以避免在PI上安装客户端(并节省一些开销)。#8 楼
因此,您在防火墙(路由器)后面有一个ssh服务器(您的Raspberry PI),并且您想从任何地方连接它。假设您的ssh服务器已正确设置,即在Raspberry上运行'ssh username @ localhost date'将显示当前日期/时间。您必须解决两个问题:
您的路由器必须将固定端口转发到树莓ssh端口(通常为22)。
您必须知道您的路由器公共IP地址(通常在路由器重新连接时更改,并且每24小时最多更改一次)。
端口转发和DynDNS
解决方案存在(如前所述)其他人):
在路由器上打开端口转发是特定于每个路由器的,通常是在路由器设置网站上完成的。
通过外部网站(https://www.google.com/search?q=whats+my+ip)最容易确定当前ip。如果您的IP定期更改,则可以获取动态dns条目(https://www.noip.com/、https://dyn.com/dns/等)。
如果正确设置,可以通过以下方式连接rasbperry pi:
ssh username@[yourIP] -p [port]
# or using dyndns
ssh username@myname.dyndns.org -p [port]
SSHHub(揭秘者,我是作者)。它使用ssh自己的转发从任何地方访问您的Rasperry PI。它可靠,免费且设置简单。注册一次:
ssh info@sshhub.de register
在您的Raspberry PI上运行:
while true; do ssh [username]@sshhub.de -R 22:localhost:22 -N -o ServerAliveInterval=10; sleep 10; done
...就是这样!您可以从任何地方连接Raspberry Pi:
ssh -J [username]@sshhub.de localhost
评论
您好,欢迎来到Raspberry Pi!请参观并访问帮助中心,以了解此处的工作方式。感谢您的贡献,但请注意,我们请您在回答中公开您的隶属关系。 (我假设您是推荐软件的作者。)
–加纳马♦
20 Jan 14 '21:46
感谢您指出正确的方向。我是作者。我当然想为寻求解决方案的人们提供有价值的答案。我希望自己的表现和sshhub一样好。
–奥利弗
20年1月14日在22:58
#9 楼
您可以使用VPN启用对pi的传入访问。 OpenVPN是一种解决方案,要求您有一台可从Internet(传入端口)访问的计算机。但是,只要您可以访问一台计算机,其他计算机就不必成为OpenVPN服务器的客户端。另一种选择是使用服务如ZeroTier,该服务提供用于创建VPN的集中式服务器,因此您无需运行自己的服务器。这也是免费的。
评论
另一个非常好的选择是使用线护。
– Ingo
20 Jan 20 '20 at 12:32
评论
可以从路由器转发端口吗?@SteveIrwin我很可能可以,但是由于我不是网络专家,所以我希望使用简单的解决方案,例如Port Map。其实...如果我与我的Pi共享Mac的Internet,是否可以共享转发的端口?
设置端口转发至少与使用端口映射一样容易。您需要告诉我们有关如何设置局域网的更多信息
最好的选择是安装Weaved服务(www.weaved.com),然后完成它。您将在互联网上找到的所有其他教程都将带您走上令人沮丧的道路。
对于建议使用socketxp的帖子,请使用以下命令在RPI curl -O portal.socketxp.com/download/arm/socketxp && chmod + wx socketxp && sudo mv socketxp / usr / local / bin而不是linux上下载socketxp文件。