通过阿里云服务器实现在学校访问宿舍的linux设备
背景
需求背景,之前了解了ssh的反向隧道,想要通过ssh反向隧道实现跨越两个不同内网的设备互通。
在宿舍里有个闲置的树莓派,想在学校上课的时候使用它,奈何坑爹的校园网花了钱只能连接一个设备,正好有空闲阿里云服务器,所以想要借此实现通过阿里云服务器中转,来使用ssh连接宿舍的树莓派。
原理
原理就是,无论是宿舍的宽带,还是手机流量,都能够访问阿里云服务器。但是电脑连接手机的热点访问不了宿舍的树莓派。
实现原理大致就是这个样子
实现
首先我们需要做一些准备工作。我的树莓派安装的是ubuntu server 20.04,在后面就用ubuntu指代。
先要确保ubuntu中安装了openssh-server,一般默认是没有安装的,默认只安装了openssh-client。
- 安装openssh-server:
sudo apt install openssh-server
- ubuntu的ssh默认没有开启root登录,也就是说不能使用root用户通过ssh连接的,开启root登录
修改ssh的配置文件:/etc/ssh/sshd_config
sudo vim /etc/ssh/sshd_config
通过vim中的查找功能找到PermitRootLogin (方法就是先按 / 然后输入PermitRootLogin,然后通过上下左右找到要修改的位置,按回车确定,再按i进行编辑)
修改如下:
33 #LoginGraceTime 2m
34 #PermitRootLogin prohibit-password
35 #StrictModes yes
36 #MaxAuthTries 6
37 #MaxSessions 10
改为
LoginGraceTime 2m
PermitRootLogin yes
StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
重启ssh服务
service ssh restart
- 选择一个阿里云服务器未使用的端口号,这里以13016端口为例,先登录阿里云控制台,修改防火墙配置,添加一条规则,开放13016端口
- 然后在树莓派上建立ssh反向隧道。(因为树莓派不常操作且功耗小,就让他一直开着就行)
root -fN -R 13016:localhost:22 root@xxx.xxx.xxx.xxx(阿里云服务器地址)
- 然后通过电脑连接阿里云服务器
ssh root@xxx.xxx.xxx.xxx
- 然后连接上以后再连接Ubuntu就行了
这里是ubuntu的密码
ssh root@localhost -p 13016