当前位置: 首页 > news >正文

ssh外网访问内网服务器

现在有这样一个情况,实验室有自己的服务器(内网),并且有相关老师进行维护(公网),我们可以在内网用内网ip访问服务器,如果我们在家里只能通过公网进行登录。但是我在实验室有一个小服务器(内网),如果我在家里就没法连接了,因为相关老师不会维护我的小服务器将其映射到公网

现有:内网小服务器A,公网服务器B以及家里的电脑C,其中本地无法连接内网,但是本地和内网都可以连接公网
目的:本地也可以连接内网
解决:使用ssh反向隧道,将内网的端口反向代理到公网上。这样我们可以本地访问公网,然后用ssh隧道访问内网了

SSH隧道

下面的命令中公网、内网分别用ex、in代替(看起来方便)
内网服务器下运行下面指令

autossh -M <any_port> -fCNR <target_port>:localhost:22 <ex_user>@<ex_ip>

这条命令的意思是将内网服务器的22端口映射到公网服务器的<target_port>端口,最后面是公网的用户和ip
其中M是监视端口,如果断连的话就会重新连接

运行完上述命令后就公网和内网之间的ssh隧道就建立好了

访问内网服务器

运行如下命令就可以在本地登录内网服务器

ssh <in_user>@<ex_ip> -p <target_port>

到这里就结束了,同理也可以先登录外网服务器,然后通过外网服务器登录内网服务器

ssh <ex_user>@<ex_ip>  # 1. 此时进入到外网服务器

ssh -p <target_port> <in_user>@<ex_ip> # 2. 进入到内网服务器
ssh -p <target_port> <in_user>@localhost # 2. 也可以localhost直接进入

查看端口状态

可以使用lsof -i:22lsof -i:<target_port>查看内网和外网服务器端口状态

注意

  1. 在服务器之间访问时最好将ssh秘钥都传输到各个机器中,这样可以避免输入密码
  2. 如果设置了密钥没法登陆,可能是没开启秘钥登录。vim /etc/ssh/sshd_config,将其中的PubkeyAuthentication设为yes
  3. 如果端口无法开放的话,vim /etc/ssh/sshd_config,将其中的GatewayPorts设为yes,然后service sshd restart或者systemctl restart sshd重启ssh
  4. 在登陆的时候,我发现本地到外网不需要输入密码,但是就算加了ssh key外网到内网也一直需要输入密码,目前不知道怎么解决

相关文章:

  • XSS绕过安全狗WAF
  • Java项目:JSP高校新生报到迎新管理系统
  • Linux kprobe原理
  • 03、Spring中的静态代理JDK动态代理CGLB动态代理
  • echarts——实现3D地图+3D柱状图 效果——粗糙代码记录——技能提升
  • 从一道题到贪心入门
  • Redis缓存的雪崩、穿透、击穿
  • 腾讯云COS+PicGo+Typora十分钟搭建自己的图床
  • 第十四届蓝桥杯(Web应用开发)模拟赛1期-大学组
  • js逆向tips-某思录登录
  • 为了摸鱼,我开发了一个工具网站
  • OpenCV图像处理——(实战)答题卡识别试卷
  • 朋友电脑密码忘了,我当场拔了她的电源,结果。。。
  • SpringBoot: Controller层的优雅实现
  • LeetCode135. 分发糖果(贪心算法)
  • c语言:初识结构体
  • ASEMI肖特基二极管SBT40100VFCT规格,SBT40100VFCT封装
  • 谁能拒绝一个会动的皮卡丘挂件
  • docker 安装minio
  • 云原生系列 五【轻松入门容器基础操作】