请问一个关于 ssh 访问生产环境不具备公网 ip 机器方式的问题.
各位大佬, 我之前有了解到, 生产环境一般是配置 NAT 网关, 来控制服务统一进出口流量. 网关后面的机器一般都使用内网 IP.
我有一个疑问, 这种情况下, 想要 ssh 上内网的某台机器, 一般是采用什么方案?
我记得有看过说有一台具有公网 ip 的机器当跳板, 然而我找不到帖子了.
谢谢~
各位大佬, 我之前有了解到, 生产环境一般是配置 NAT 网关, 来控制服务统一进出口流量. 网关后面的机器一般都使用内网 IP.
我有一个疑问, 这种情况下, 想要 ssh 上内网的某台机器, 一般是采用什么方案?
我记得有看过说有一台具有公网 ip 的机器当跳板, 然而我找不到帖子了.
谢谢~
我也只是个用户,没搭过这玩意
原理是,先通过 SSH 连接到一台能同时访问内网机器与外网的 “跳板机”上。
然后再从跳板机连接到内网,这次连接有两种方式:
一种是隧道方式,先打通本地到内网的通道,然后从本地通过隧道连接到内网,此时跳板机只是数据转发作用。
另一种是远程方式,SSH 连接到跳板机,再在跳板机上通过 SSH 连接到内网,此时对于内网机器来说,是跳板机在连接。
安全不是绝对的,尤其生产环境。v2ex 之前就有过擅自把端口暴露到公网然后出了安全事故的帖子
假设你所有服务器默认的 SSH 端口都是 22. 且都只允许密钥验证. 并且确保你添加了你自己的公钥到下面提及的所有服务器内.
生产环境只有一台服务器公网暴露. 服务器的公网 IP 地址是 A.
你有另外的两台内网服务器, 对应的内网 IP 是 B 和 C. 这两台服务器的 22 端口只能通过内网 IP 访问. 公网 IP 不允许访问 22 端口.
添加如下配置到你本地的如下文件内(如果不存在, 请创建) `$HOME/.ssh/config`:
“`ssh_config
Host jump
Username <username>
Port 22
Hostname A
Host host-b
User <username>
Port 22
Hostname B
PorxyJump jump
Host host-c
User <username>
Port 22
Hostname C
PorxyJump jump
“`
你在本地, 通过执行:
“`shell
ssh host-b
“`
“`shell
ssh host-c
“`
就可以分别登陆 B 和 C 内网 IP 对应的服务器了.
优点:
简单. 不依赖其他服务.
安全. 只有一台设备的 SSH 服务暴露到了公网访问.
感谢各位大佬的建议, 我会去了解各位提供的方案.
参考:前段时间小米实习员工 frp 穿透导致公司电脑被黑