![通过 SSH 隧道转发 SSH](https://linux22.com/image/570171/%E9%80%9A%E8%BF%87%20SSH%20%E9%9A%A7%E9%81%93%E8%BD%AC%E5%8F%91%20SSH.png)
我的情况 :
我(localhost)->服务器 A(ip:100.100.100.100)=>(服务器 B(ip:192.168.25.100),服务器....)
我能够通过 SSH 进入服务器,因为它有一个真实的 ip,如果我想连接到服务器 b,我会用它的 ip(192.168.25.100)连接服务器 b。
例子:
从我的电脑:
ssh [email protected]
然后在 100.100.100.100,
ssh [email protected]
这将使我通过 ssh 连接到服务器 B
如果我想直接连接到服务器 b 怎么办?我该怎么做?
例子:
来自我的 oc:
[email protected]
我尝试了以下方法:
ssh -L 22:localhost:22 [email protected]
没有成功
答案1
您的问题在于将侦听器绑定到 localhost:22;那里已经有一个 sshd 在侦听。通过 ssh 连接隧道化 ssh 连接是完全合法的,而且我一直这样做,但您需要为转发侦听器选择未使用的端口。
尝试
me% ssh [email protected] -L 2201:192.168.25.100:22
然后
me% ssh localhost -p 2201
您最终应该位于服务器 B 上(除非某些东西已经绑定到我:2201,在这种情况下,请选择另一个端口)。
答案2
您不必使用 ssh 端口转发通过代理 ssh 进入内部计算机。您可以使用 ssh 功能在您连接的第一台服务器上执行命令,以便 ssh 进入第三台计算机。
ssh -t [email protected] ssh [email protected]
该-t
选项强制 ssh 分配一个伪tty,以便您可以运行交互式命令。
这也适用于 ssh 密钥。如果您在机器 A 上有私钥和公钥,并且在机器 B 和 C 上的授权密钥文件中有公钥,那么您可以使用该-A
选项转发身份验证代理连接。
答案3
答案4
根据 ssh 手册页,ProxyCommand 是正确的方法
语法为:
ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null