文章目录
环境
1)阿里云ECS远程主机8.140.111.41,开启了sshd服务,在22端口进行监听;用户root;
2)家庭树莓派192.168.18.13,开启了sshd服务,在22端口进行监听;可以连通外网,连接远程主机;用户pi;
3)一台测试机,可以通过网络,连接远程主机;
操作步骤
1)远程主机8.140.111.41:修改sshd_config配置
ssh root@8.140.111.41
vim /etc/ssh/sshd_config
#AllowTcpForwarding yes ##modify content
#GatewayPorts yes ##modify content
通过阿里云ECS控制面板,修改远程主机的开放端口10022或其他端口;
2)家庭树莓派192.168.18.13:连接远程主机,并将22端口开放到远程主机的10022端口
ssh -g -R :10022:127.0.0.1:22 root@8.140.111.41
检查远程主机10022是否处于监听状态
ssh root@8.140.111.41
#method
netstat -plant
#tcp 0 0 0.0.0.0:10022 0.0.0.0:* LISTEN 3152/sshd: root@pts
lsof -p 3152 | grep TCP
#sshd 3319 root 3u IPv4 50579 0t0 TCP iZ2ze8tuatzv95s2dt0bxrZ:ssh->www217.asd.tj.cn:25941 (ESTABLISHED)
#sshd 3319 root 8u IPv4 50837 0t0 TCP *:10022 (LISTEN)
3)测试机,连接远程主机,用pi登录;
ssh -p 10022 pi@8.140.111.41
可能遇到的问题
1)家庭树莓派连接到远程主机(同时暴漏树莓派22端口后),长期未连接可能导致远程主机连接树莓派22端口的连接中断
分析:树莓派连接远程主机的ssh通路是连通的,通过netstat和lsof能看到远程主机下TCP连接也是连通的,但通过远程主机ssh树莓派却没有反应,推断:远程主机连接树莓派22端口的连接被树莓派中断了。
sshd_config文件中ClientAliveInterval定义了,ssh服务端主动检测ssh连接活动状态的周期,如果ClientAliveInterval秒内Client没有发起连接,Server会发起通信检测包,如果收到Client响应,则不断开连接,否则根据规则,连续n次未收到回复,断开连接。
解决办法,在树莓派上,修改/etc/ssh/sshd_config
ClientAliveInterval 5
引用
利用阿里云ECS跳板机内网穿透- ssh
SSH原理与运用(二):远程操作与端口转发
SSH 端口转发
Prevent closing of SSH Local Port Forwarding
Keeping SSH Sessions Alive