使用阿里云服务器和autossh实现内网穿透

问题:有台式机放在寝室,处于电信的内网之中,不能直接被访问到。而我大部分时间在实验室,无法直接操作该台式机,因此需要内网穿透来进行ssh远程访问。

解决方案:使用阿里云学生服务器,利用其公网IP固定的特性,在服务器端做一次本地端口转发,然后再内网机器上做ssh反向代理即可。而ssh长时间放置后会断开连接,因此使用autossh来保持ssh隧道的连接。

机器 IP 用户名 备注 系统
A x.x.x.x ccc 位于内网的机器,不知道公网IP,是我们访问的目标机器 Ubuntu 16.04
B 123.123.123.123 root 阿里云服务器,有固定的公网IP(或任何有公网IP的机器) Ubuntu 16.04

服务器端设置(机器B)

  1. 对阿里云安全组策略进行设置,开放2315(外网的机器C进行ssh链接),7280(服务器端用来做本地端口转发),1234(用作autossh的自动监听端口)端口。优先级随意

  2. 编辑服务器上的sshd的配置文件 /etc/ssh/sshd_config ,将GatewayPorts的开关打开 
    GatewayPorts yes。 
    如果sshd_config 中没有该项,手动加入即可。

  3. 设置服务器端的本地端口转发 
    ssh -fCNL *:2315:localhost:7280 localhost 
    参数解释如下: 
    -f 后台执行ssh指令 , 
    -C 允许压缩数据 , 
    -N 不执行远程指令 , 
    -L 将本地机(客户机)的某个端口转发到远端指定机器的指定端口 , 
    *:2315:localhost:7280 表示将任何IP的2315发来的数据转发给本机的7280端口 
    注意区分参数大小写!

  4. 至此,服务器端的设置已经完成

内网机器的设置(机器A)

  1. 为了能实现内网机器A免密码ssh连接外网服务器B,我们要将A的ssh密钥生成出来,然后传输给B。在A上执行下面的命令来完成密钥的生成和传输操作: 
    ssh-keygen -t 'rsa' -C 'ccc@B' , 
    ssh-copy-id [email protected] , 
    在进行ssh-keygen操作时,一路回车,什么都不要输入。

  2. 安装autossh,Ubuntu系统下直接执行命令: 
    sudo apt-get install autossh 就完成了autossh的安装 
    然后执行autossh命令就可以: 
    autossh -M 1234 -fCNR 7280:localhost:22 [email protected] 
    参数解释如下: 
    -M 表示监视端口,用于监视7280这个ssh隧道是否中断,中断的话就进行重连

    至此,已经可以从任意一个外网电脑C,实现对内网电脑A的ssh访问。

机器A的开机自动连接

虽然前面我们已经实现了内网穿透,但是每次重新开机的话,都需要手动启动autossh命令,这是比较麻烦的,因此我们这里设置一下,让机器A开机,就以用户ccc的身份去自动运行一下autossh命令(只用用户ccc能免密登陆外网服务器B,因此需要指定运行命令的用户)

我们通过对/etc/rc.local文件的修改来达到我们的目的,输入命令: 
sudo vim /etc/rc.local 
运行后,在exit 0命令前加上下面的命令 
su -c 'auto ssh -M 1234 -fCNR 7280:localhost:22 [email protected]' ccc & 
这样,我们就可以实现开机自动建立连接了。

同理,服务器B端也可以进行同样的操作,以实现开机自动建立连接。

参考资料

  1. http://arondight.me/2016/02/17/%E4%BD%BF%E7%94%A8SSH%E5%8F%8D%E5%90%91%E9%9A%A7%E9%81%93%E8%BF%9B%E8%A1%8C%E5%86%85%E7%BD%91%E7%A9%BF%E9%80%8F/
  2. https://www.cnblogs.com/kwongtai/p/6903420.html
  3. https://blog.csdn.net/gw569453350game/article/details/53018952

转至https://blog.csdn.net/sinat_30032087/article/details/79927972

猜你喜欢

转载自blog.csdn.net/m0_37673307/article/details/80957256