我最近在Raspberry Pi上设置了SSH。它一直在进行中,特别是因为我可以使用应用服务器审核程序通过iPhone控制计算机。可悲的是,这只能通过本地网络工作。
外出时如何使SSH工作?(最好与该应用一起使用。)
我最近在Raspberry Pi上设置了SSH。它一直在进行中,特别是因为我可以使用应用服务器审核程序通过iPhone控制计算机。可悲的是,这只能通过本地网络工作。
外出时如何使SSH工作?(最好与该应用一起使用。)
Answers:
这是我在debian上使用的步骤,这些步骤可能会有用。
1.为Pi设置静态IP。
使用命令打开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
c。使用ifconfig命令检查Ip是否已更改
2.设置动态DNS
您的ISP分配的IP地址很可能是动态的,因此我们需要一种解决IP地址更改的方法。我使用dnsdynamic和ddclient软件来实现此目的,两者均可免费使用。
a.Sign了用一个帐号dnsdynamic
b。添加一个新域并从列表中选择一个名称和域。您可以选择子域中的任何可用域。单击“ 检查可用性”,然后添加
3,在Pi上设置ddclient
使用以下命令安装ddclient
sudo apt-get install ddclient
b。使用以下命令打开ddclient的配置文件,并添加以下行。
sudo nano /etc/ddclient.conf
并将文件更改为以下内容。
# /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
并保存文件。
d。我们希望ddclient服务在重新启动时自动启动。请执行以下操作。
sudo nano /etc/rc.local
在出口0之前添加以下命令(这是最后一行)
sudo /usr/sbin/ddclient -daemon 600 -syslog
保存文件,要启动ddclient,请重新启动pi或在提示符下执行上述命令,这将使您的域名保持更新,并在必要时更改当前IP地址。
4.端口转发
找到路由器的型号。
b.Go到portforward.com
c。输入路由器的品牌和型号,以找到有关转发端口的详细指南。
d。选择路由器品牌和型号后,请从重定向页面单击默认指南。
e。在“ 静态IP文本”框中,输入您在步骤1中输入的Pi的静态IP。
f。按照步骤操作并转发端口22,源端口必须为22,目标端口可以是任何端口。在将ssh转换为pi时请记住使用目标端口。为避免混淆,我倾向于使用相同的Source和Destination港口。
如果您正在学习本教程,请通过使用域名替换IP地址从任何地方登录到pi。例如-我使用pi@hometorrent.dnsdynamic.com:22 SSH进入我的pi。
sudo
的/etc/rc.local
,是不是已经以root运行?
首先,您需要设置端口转发。每个路由器略有不同,因此您必须查找路由器的详细信息。
有适用于大多数路由器的通用端口转发方法指南,但我建议您为实际的路由器模型找到一个指南。
设置一个难忘的端口以链接到您的树莓派,例如23456之类。注意不要覆盖通用端口号。
最后,使用ssh执行以下操作:
$ ssh -p 23456 user@IP
哪里:
-p
命令告诉ssh尝试进入哪个端口从家庭网络外部(意味着从Internet)访问RaspberryPi(甚至笔记本电脑/服务器)不是一件容易的事,因为您的家用笔记本电脑或RaspberryPi只有本地IP地址(在10.xxx范围或192.168.xx范围内)范围)。它没有可从Internet看到的公共IP地址。
您问题的简单答案是使用免费的在线服务,例如SocketXP,它提供了安全的公共隧道端点,可以从家庭网络外部将SSH SSH到您的RaspberryPi。
SocketXP提供了一种从外部网络访问家庭RaspberryPi的简单,安全和简便的方法。SocketXP不需要您破解WiFi路由器中的任何设置。开箱即用。要了解如何从外部将RaspberryPi设置为SSH,请阅读此博客,了解如何使用SocketXP将SSH远程连接到RaspberryPi。
如何设置SocketXP:
步骤1:使用以下命令在RaspberryPi上安装SocketXP客户端。
$ 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 raspberry-username@tunnel.socketxp.com -p 35277
其中“ raspberry-username”是用于SSH登录到RaspberryPi的用户名/密码。
在phalt的答案之上,您应该签出动态DNS服务之一,例如No IP。它们使您可以使用静态主机名访问家庭网络,尽管由于DSL或电缆提供商断开您的连接,您的IP地址可能每天都会更改。他们也有一个不错的入门页面,该页面还向您介绍如何相应地设置路由器。
inadyn
当IP更改时,您可能需要在Raspberry Pi上安装软件包以更新No-IP DNS条目。您可以通过运行以下命令来执行此操作:
sudo apt-get install inadyn
从inadyn自述文件中,我进行了以下示例调用:
inadyn --dyndns_system default@no-ip.com -u USER-p PASS -a HOST
希望这可以帮助。
史蒂夫·欧文的答案的补充:
如果通过WLAN连接,请使用:
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
更改以上内容后,您需要重新启动networking
:
sudo /etc/init.d/networking restart
因此,您在防火墙(路由器)后面有一个ssh服务器(您的Raspberry PI),您想从任何地方连接它。假设您的ssh服务器已正确设置,即在Raspberry上运行“ ssh username @ localhost date”会显示当前日期/时间。
您必须解决两个问题:
存在解决方案(正如其他人指出的那样):
如果设置正确,则可以通过以下方式连接您的rasbperry pi:
ssh username@[yourIP] -p [port]
# or using dyndns
ssh username@myname.dyndns.org -p [port]
到目前为止尚未提及的另一个非常方便的解决方案是SSHHub(Disclamer,我是作者)。它使用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