通过 SSH 隧道转发 SSH

通过 SSH 隧道转发 SSH

我的情况 :

我(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

从 OpenSSH 7.3(2016 年末)开始,最简单的方法是代理跳转设置。在您的~/.ssh/config

Host B
  ProxyJump A

或者在命令行上,-J B

答案4

根据 ssh 手册页,ProxyCommand 是正确的方法

语法为:

ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null

相关内容