Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Amazon ec2 从边缘设备(Rpi)到EC2的反向SSH隧道_Amazon Ec2_Ssh_Raspberry Pi_Reverse_Tunnel - Fatal编程技术网

Amazon ec2 从边缘设备(Rpi)到EC2的反向SSH隧道

Amazon ec2 从边缘设备(Rpi)到EC2的反向SSH隧道,amazon-ec2,ssh,raspberry-pi,reverse,tunnel,Amazon Ec2,Ssh,Raspberry Pi,Reverse,Tunnel,我已经在pi和EC2实例之间建立了一个ssh隧道 Pi命令: ssh -R 7100:localhost:22 [Hostname] EC2命令: sudo netstat -tulpn | grep LISTEN 产量(部分摘录): 港口似乎是按应有的方式开放的。然后在EC2上执行以下操作: ssh -p 7100 localhost root@localhost's password: Permission denied, please try again. root@localho

我已经在pi和EC2实例之间建立了一个ssh隧道

Pi命令:

ssh -R 7100:localhost:22 [Hostname]
EC2命令:

sudo netstat -tulpn | grep LISTEN
产量(部分摘录):

港口似乎是按应有的方式开放的。然后在EC2上执行以下操作:

ssh -p 7100 localhost

root@localhost's password: 
Permission denied, please try again.
root@localhost's password: 
Permission denied, please try again.
root@localhost's password: 
root@localhost's Permission denied (publickey,password).
我无法登录到端口7100上的本地主机。有人知道为什么会这样吗?作为参考,我已完成以下配置:

我将/etc/ssh/sshd_config编辑为以下内容:

- PermitRootLogin yes
- PasswordAuthentication yes
- AllowAgentForwarding yes
- AllowTcpForwarding yes
- GatewayPorts yes
- X11Forwarding yes
这是完整的sshd_配置:

PermitRootLogin yes
PasswordAuthentication yes
ChallengeResponseAuthentication no
UsePAM yes
AllowAgentForwarding yes
AllowTcpForwarding yes
GatewayPorts yes
X11Forwarding yes
PrintMotd no
AcceptEnv LANG LC_*    
Subsystem   sftp    /usr/lib/openssh/sftp-server
已将pi密钥发送到ec2服务器:

sudo ssh-copy-id [awsHostname]
将实例设置为公共授权密钥:

cat id_rsa.pub >> authorized_keys

您已经连接到EC2,因此不需要将密钥从RPI复制到EC(它们已经存在)。现在您需要将EC root的公钥复制回RPIs(到pi和/或root用户)。RPI的默认凭据为pi/raspberry。您的连接失败表明RPI上的sshd正在运行,所以您很可能已经为pi用户替换了标准密码,否则sshd将拒绝启动。我怀疑您只是使用了错误的用户名连接到RPI。试试ssh-p7100pi@localhost成功了!太棒了,谢谢!!如果我想添加另一个pi来表示端口7103,那么只需要执行ssh-p7103pi@localhost? 注意到更好的位置后-将这样做在未来!对你说得对。但我建议您将反向隧道方法替换为saltstack,以避免端口和特定设备之间的跟踪关系。另外,您的方法允许任何对单个RPI设备有物理访问权限的人访问服务器和其他设备。好的,很好,我将对此进行研究。谢谢你,麦克斯!!实际上,每个试图在项目中使用此类SBC(RPI/OPI/BPI/etc)的IoT/IIoT开发人员迟早都会开始思考在NAT后面运行时如何管理这些SBC。我希望这个问题不会因为离题而结束,因为我想稍后分享一些好的技巧。您已经连接到EC2,因此无需将密钥从RPI复制到EC(它们已经存在)。现在您需要将EC root的公钥复制回RPIs(到pi和/或root用户)。RPI的默认凭据为pi/raspberry。您的连接失败表明RPI上的sshd正在运行,所以您很可能已经为pi用户替换了标准密码,否则sshd将拒绝启动。我怀疑您只是使用了错误的用户名连接到RPI。试试ssh-p7100pi@localhost成功了!太棒了,谢谢!!如果我想添加另一个pi来表示端口7103,那么只需要执行ssh-p7103pi@localhost? 注意到更好的位置后-将这样做在未来!对你说得对。但我建议您将反向隧道方法替换为saltstack,以避免端口和特定设备之间的跟踪关系。另外,您的方法允许任何对单个RPI设备有物理访问权限的人访问服务器和其他设备。好的,很好,我将对此进行研究。谢谢你,麦克斯!!实际上,每个试图在项目中使用此类SBC(RPI/OPI/BPI/etc)的IoT/IIoT开发人员迟早都会开始思考在NAT后面运行时如何管理这些SBC。我希望这个问题不会因为离题而结束,因为我想稍后分享一些好的技巧。
cat id_rsa.pub >> authorized_keys