我有以下布局。
- A(NAT/防火墙后面的机器)
- B(用于反向 ssh 连接的服务器 - 堡垒主机?)
- C(我的笔记本电脑)
A 与 B 建立反向 ssh
/usr/bin/autossh -M 0 -N -q -o "ServerAliveInterval 60" -o "ServerAliveCountMax 3" -o "StrictHostKeyChecking=no" [email protected] -R 22000:localhost:22 -C -i ~/id_rsa
C 通过 B 与 A 建立 ssh 连接(B 是我的跳转主机)
我使用以下 ssh 配置执行此操作(.ssh/config
)
Host B
ForwardAgent yes
HostName xxx.xxx.xxx.xxx
IdentityFile ~/.ssh/b.id_rsa
Host A
HostName 127.0.0.1
ProxyJump B
StrictHostKeyChecking no
IdentityFile ~/.ssh/a.id_rsa
Port 22000
此时,我可以输入内容ssh A
,并且可以按预期访问服务器终端。
现在我希望能够通过隧道连接一个工具(例如 Robo T3),从我本地使用端口 27000 连接到安装在主机 A 上的 MongoDB,并监听 localhost:27017。
我应该在 SSH 命令中添加什么(或在配置中修改)来实现这一点?
答案1
感谢这篇文章(如何进行 ssh 隧道端口转发?)我设法找到了一个非常简单的解决方案。
ssh -N -L 27000:localhost:27017 A