本文介绍一种远程访问本地电脑的一种方法
利用ssh反向代理
以一台处于公网的服务器作为媒介
从公网服务器上实现远程访问处于局域网的本地电脑
应用场景
访问处于局域网下的本地电脑
我们知道
本地电脑没有公网ip
无法实现远程访问
但在同一局域网下
是可以访问的
但是这样局限性比较大
当你出门在外却想要访问处在寝室的本地电脑时
这时如果该怎么办
实现远程访问
要求
有一台处于公网的服务器
作用:访问本地电脑的媒介
配置
在处于局域网下的本机电脑执行命令
建议在root用户下
$ ssh -NCfR 1111:localhost:22 username@IP -p 22
解释
-f 在后台执行
-N 不实际连接而是做port forwarding
-R 做反向ssh
将公网服务器A的1111端口映射成连接内网服务器与该公网服务器的反向ssh的端口22。
username是你登录公网服务器的用户名,IP为服务器的公网ip
然后输入登录服务器A的密码即可
修改公网机器A的SSH配置文件/etc/ssh/sshd_config
添加
GatewayPorts yes
这样可以把监听的端口绑定到任意IP 0.0.0.0上
否则只有本机127.0.0.1可以访问
服务器开启对应端口的防火墙
使用端口1111去映射本地端口22
那么服务器的端口1111肯定是要开启的
初步远程登录
首先在任何一台机器上登录公网服务器
windows上同样可以使用 cmd登录
$ ssh root@公网ip
$ ssh 本地登录用户名@localhost -p 1111
这个端口号可以随意设置
不要和其他一些默认的端口号一样就可以
问题
每次登录都需要密码
可以创建密匙
实现ssl免密登录
ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
#-t 指定类型,-f指定文件生成路径,-P指定文件密码(''表示无密码)
ssh-copy-id -i .ssh/id_rsa.pub username@IP
# 这里的username为公网服务器的登录名
这种反向代理不稳定
使用autossh建立稳定隧道
注意:此前提是可以本地可以免密登录服务器
$ apt-get install autossh
# 我的本机是ubuntu
# 如果是centos
#使用命令 $ yum install autossh
$ autossh -M 8888 -NCfR 1111:localhost:22 -o ServerAliveInterval=60 公网服务器登录名@公网ip -p 22
有可能长时间没有操作
会断开
用autossh 自动重连
我们用一个端口8888去监听
并且用-o ServerAliveInterval=60
每隔60秒去操作一下(比较接地气的说法)
每次开机后都要重新输入命令
可以写一个脚本
开机自启
这样就比较完美了
我的微信公众号:跨时代的jay
关注我哦,定时推送知识