在校园网内设置内网穿透。建议提前给内网及公网主机都配置好使用sshkey免密登录并保管好密码文件。

在内网主机

将公网主机的RSA私钥复制到.ssh下。为保证内网主机可以实现开机自启动跳转登录,使用systemctl来注册一个能够开机自启动的服务。

创建文件autossh.service,内容如下

1
2
3
4
5
6
7
8
9
10
11
12
13
14
[Unit]
Description=autossh
Wants=network-online.target
After=network-online.target

[Service]
Type=simple
Environment="AUTOSSH_GATETIME=0"
User=user22
WorkingDirectory=/home/user22/
ExecStart=/usr/bin/autossh -M 6777 -NR 7000:localhost:22 username@112.112.112.112 -i /home/user/.ssh/public_net.pem

[Install]
WantedBy=multi-user.targetp

部分参数解释:

“user22”是内网主机用户名。

“-M 6777”中,-M指定内网主机的监控端口,此处是6777。

“7000:localhost:22”中, 7000表示需要在远程主机上开启的端口,22表示本地的ssh端口。这个含义表示我们希望通过公网ip和7000端口访问树莓派的22端口。

“username@112.112.112.112”中,username为公网机器上的用户,112.112.112.112为公网主机ip。

autossh.service复制到/etc/systemd/system/目录下,使用如下命令设置自启。

1
2
sudo systemctl enable autossh.service # 开机启动autossh服务
sudo systemctl start autossh.service # 开始autossh服务

公网主机

使用公网主机的RSA私钥登录,配置本地端口转发

1
sudo ssh -fCNL *:8000:localhost:7000 user22@localhost -i public_net.pem

部分参数解释:

“8000:localhost:7000”中,8000代表其他主机登录时使用的端口,7000表示远程主机上开启的端口。

以公网主机为跳板登录内网主机

在PC机上使用如下命令登录

1
ssh  -i intranet.pem -p 8000 user22@112.112.112.112

参考文献

autossh实现树莓派内网穿透 – 胡超博客 (imhuchao.com)