通过ssh远程端口(隧道)转发使外网能访问到内网机器

本文详细介绍如何通过SSH设置远程端口转发,实现对树莓派的远程访问,包括使用GatewayPorts、ClientAliveInterval等配置项,以及如何利用expect、ssh-keygen和autossh简化登录过程,同时讲解了防火墙端口开放的步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

家里有两台树莓派平时在外面想访问下

 

首先启用服务器端GatewayPort来使远程网卡可以绑定,设置连接保持

vim /etc/ssh/sshd_config
#修改以下属性
GatewayPorts yes
ClientAliveInterval 60
ClientAliveCountMax 3

#然后退出vim编辑器,重新加载sshd配置
service sshd reload

建立远程端口转发隧道

ssh -N -f -p 远程ssh端口 -R 远程网卡:远程要暴露的端口:本机网卡:本机要转发的端口 root@远程host

如果不想手动输入密码可以用expect或者ssh-keygen

expect如下

#!/usr/bin/expect
spawn ssh -N -f -p 远程ssh端口 -R 远程网卡:远程要暴露的端口:本机网卡:本机要转发的端口 root@远程host
expect "password:"
send "密码\r"
expect eof

ssh-keygen如下

ssh-keygen -t rsa
#然后将公钥传到远程机器
ssh-copy-id -p 远程ssh端口 -i ~/.ssh/id_rsa.pub root@远程host

然后还可以用autossh来自动重连

autossh -p 远程端口 -M 自动重连监听端口 -NR 代理端口:127.0.0.1:被代理端口 root@host

 

然后如果有防火墙还得开启下端口

#开启防火墙
systemctl start firewalld.service
#开机启动防火墙
systemctl enable firewalld.service
#开启端口
firewall-cmd --zone=public --add-port=端口/tcp --permanent
#重新加载配置
firewall-cmd --reload
#查看端口是否开启
firewall-cmd --zone=public --query-port=端口/tcp

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

山间明月江上清风_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值