没有公网ip的情况下,本地能ping服务器服务器不能ping本地,让服务器能访问本地某端口的简单方法

前言

只是一个ssh的基础命令,介绍一种应用场景。

背景

在没有公网ip的情况下,且不在同一个局域网内,但是it部门建了vpn,于是本地能连上服务器,但服务器连不上本地。为了安全或其他原因,不一定能让it帮你直接让服务器也连你本地。

下面此时以java的一种场景为例。

作为java开发,本地调试时,会把本地的服务注册到nacos,于是服务器的其他服务就会请求到本地,此时假设服务器连不到本地,那么当服务器负载到本地服务时,就会报错。本地调试就会很不方便。如果和你配合的前端,也在其他网络,无法直连你本地,也不好联调。

此时就可以用本文的方法,让本地联调不会受网络原因的限制增加难度。

参考网址

https://blog.csdn.net/DeepLens/article/details/155201359

https://www.php.cn/faq/2426394.html

方法

基础转发

假设本地有个服务端口是10000,此时本地可用如下命令配置转发

bat 复制代码
ssh -R 10000:localhost:10000 server_user@server_ip 的作用

上面的命令可以让在服务器 curl localhost:10000 请求会转发到本地的 localhost:10000

注意:此处只能是localhost 或 127.0.0.1,不能是服务器ip地址

可通过服务器ip转发

假设想用服务器ip地址,需要修改 服务器/etc/ssh/sshd_config 将配置中的 GatewayPorts 改为 yes

复制代码
GatewayPorts yes

服务器重启sshd

bash 复制代码
sudo systemctl reload sshd

本地电脑配置转发

bat 复制代码
ssh -R 0.0.0.0:10000:localhost:10000 server_user@server_ip 的作用

此时假设服务器ip为192.168.1.100,就可以访问服务器的 192.168.1.100:10000 转发到本地的 localhost:10000

ssh的其他配置

-N:不执行远程命令,仅建立隧道;

-f:后台运行。

-L 和 -R 相反,配置请求本地的端口转发到服务器的端口

如果是java nacos的负载问题,yaml要改成如下

yaml 复制代码
spring:
  cloud:
    nacos:
		discovery:
			server-addr: ${server-addr}
			namespace: ${namespace}
			# ip 看具体配置看是要 localhost,亦或是服务器ip。
			ip: ${ip}
			port: 10000

其他方法

frp 应该也能做到类似的效果,但配置更复杂,还要额外装服务

相关推荐
SDWAN_Cheap1 小时前
BGP是什么,广播IP是什么?两个容易混淆的概念拆解
网络·tcp/ip·bgp·广播ip
程序员JerrySUN1 小时前
PCIe Gen5 SSD 为什么读得快、写得慢?从存储原理到 Linux 性能实测
linux·服务器·网络
Android系统攻城狮1 小时前
Linux FFmpeg深度解析之avcodec_parameters_copy调用流程与实战(二十五)
linux·运维·服务器·ffmpeg·音视频·车载音频
guizhoumen1 小时前
net core下WebSocket请求总是断开的解决方案
网络·websocket·网络协议
Liuqy-052 小时前
IO模型与并发服务器
服务器·网络·select·多线程·epoll·并发服务器·io多路复用
小园子的小菜2 小时前
Netty 核心组件 Channel、ChannelHandler 与简易 RPC 架构实战详解
网络协议·rpc·架构
一条泥憨鱼11 小时前
【计算机网络】短连接、长连接与连接池:从 TCP 握手到池化复用的完整链路
网络·数据库·网络协议·tcp/ip·计算机网络
知已难寻13 小时前
03 · OpenStack的计算管理 Nova
运维·服务器·开发语言·云原生·云计算·openstack·开源软件