现在有这样一个情况,实验室有自己的服务器(内网),并且有相关老师进行维护(公网),我们可以在内网用内网ip访问服务器,如果我们在家里只能通过公网进行登录。但是我在实验室有一个小服务器(内网),如果我在家里就没法连接了,因为相关老师不会维护我的小服务器将其映射到公网
现有:内网小服务器A,公网服务器B以及家里的电脑C,其中本地无法连接内网,但是本地和内网都可以连接公网
目的:本地也可以连接内网
解决:使用ssh反向隧道,将内网的端口反向代理到公网上。这样我们可以本地访问公网,然后用ssh隧道访问内网了
![]() | ![]() |
下面的命令中公网、内网分别用ex、in代替(看起来方便)
在内网服务器下运行下面指令
autossh -M -fCNR :localhost:22 @
这条命令的意思是将内网服务器的22端口映射到公网服务器的
其中M是监视端口,如果断连的话就会重新连接
运行完上述命令后就公网和内网之间的ssh隧道就建立好了
运行如下命令就可以在本地登录内网服务器了
ssh @ -p
到这里就结束了,同理也可以先登录外网服务器,然后通过外网服务器登录内网服务器
ssh @ # 1. 此时进入到外网服务器ssh -p @ # 2. 进入到内网服务器
ssh -p @localhost # 2. 也可以localhost直接进入
可以使用lsof -i:22和lsof -i:查看内网和外网服务器端口状态
vim /etc/ssh/sshd_config,将其中的PubkeyAuthentication设为yesvim /etc/ssh/sshd_config,将其中的GatewayPorts设为yes,然后service sshd restart或者systemctl restart sshd重启ssh
上一篇:描写“百”和“千”的成语