比如说 派的IP是DHCP分配的,想连接SSH需要知道IP是多少。或者发起连接SSH的电脑不在路由的局域网内,需要在路由上设置静态路由,或者端口映射。
这样比较麻烦,可以在派上建立一个upnp客户端服务,自动向路由注册端口映射,这样ssh访问pi的时候直接访问路由器就可以了。
准备:
http://miniupnp.free.fr/
在这里下载miniupnpc,解压后直接make就可以,把编译出来的upnpc-static重命名为upnpc放到系统的PATH下即可
写一个服务脚本:
- #!/bin/bash
- while true; do
- cur_ip=$(ifconfig wlan0|awk '$1=="inet"{print $2}')
- if [[ $cur_ip =~ ^[0-9]{0,3}(.[0-9]{0,3}){3}$ ]];then
- upnpc -d 22022 TCP
- upnpc -e raspberry_pi_ssh -a $cur_ip 22 22022 TCP 300
- sleep 301
- else
- sleep 30
- fi
- sleep 5
- done
复制代码
设置为开机自动运行即可,如果是systemd的可以写一个service,让其在NetworkManager启动后运行
这里设置的是路由的22022映射到pi的22端口
以后只要连接
- ssh user@router_ip -p 22022
复制代码 即可
|