tom*_*136 36 linux ssh port-forwarding ssh-tunnel
我的情况 :
我(本地主机) -> 服务器 A(ip:100.100.100.100) =>(服务器 B(ip:192.168.25.100),服务器....)
我可以通过 SSH 连接到服务器,因为它有一个真正的 ip,如果我想连接到服务器 b,我会用它的 ip(192.168.25.100) SSH 服务器 b
例子:
从我的电脑:
ssh user@100.100.100.100
Run Code Online (Sandbox Code Playgroud)
然后在 100.100.100.100,
ssh user@192.168.25.100
Run Code Online (Sandbox Code Playgroud)
这将使我使用 ssh 连接到服务器 B
如果我想直接连接到服务器 b 怎么办?我怎样才能做到这一点?
例子:
从我的 oc:
ssh@192.168.25.100
Run Code Online (Sandbox Code Playgroud)
我尝试了以下方法:
ssh -L 22:localhost:22 user@100.100.100.100
Run Code Online (Sandbox Code Playgroud)
没有成功
Mad*_*ter 33
您的问题是将侦听器绑定到 localhost:22; 已经有一个 sshd 正在监听。通过 ssh 连接建立 ssh 连接是完全合法的,我一直这样做,但您需要为转发侦听器选择未使用的端口。
尝试
me% ssh user@100.100.100.100 -L 2201:192.168.25.100:22
Run Code Online (Sandbox Code Playgroud)
然后
me% ssh localhost -p 2201
Run Code Online (Sandbox Code Playgroud)
您应该最终在服务器 B 上(除非某些东西已经绑定到我:2201,在这种情况下,选择另一个端口)。
Jef*_*unk 29
您不必使用 ssh 端口转发通过代理 ssh 进入内部计算机。您可以使用 ssh 功能在您连接的第一台服务器上执行命令,以便通过 ssh 连接到第三台计算机。
ssh -t user@100.100.100.100 ssh user@192.168.25.100
Run Code Online (Sandbox Code Playgroud)
该-t选项强制 ssh 分配伪 tty,以便您可以运行交互式命令。
这也适用于 ssh 密钥。如果您在机器 A 上拥有您的私钥和公钥,而您在机器 B 和 C 上的授权密钥文件中拥有您的公钥,那么您可以使用该-A选项来转发身份验证代理连接。
小智 13
从 OpenSSH 7.3(2016 年末)开始,最简单的方法是ProxyJump设置。在您的~/.ssh/config:
Host B
ProxyJump A
Run Code Online (Sandbox Code Playgroud)
或者在命令行上, , -J B。
lio*_*ori 11
我使用了不同的解决方案。我使用了一个ProxyCommand选项(在 中~/.ssh/config):
Host myinsidehost1 myinsidehost2 myinsidehost3
ProxyCommand ssh externalhost ssh %h sshd -i
Run Code Online (Sandbox Code Playgroud)
这不会设置任何端口到端口隧道,而是使用标准 stdin/out 建立隧道 ssh。这种方法有一个缺点,即实际上需要三个 ssh 连接进行身份验证。但是要连接到内部主机,您只需键入:
ssh myinsidehost2
Run Code Online (Sandbox Code Playgroud)
...因此您无需关心为该隧道选择任何 IP。
小智 8
根据 ssh 手册页, ProxyCommand 是正确的方法
语法是:
ProxyCommand ssh -W %h:%p user@jumphost 2> /dev/null
Run Code Online (Sandbox Code Playgroud)
虽然ProxyJump已经提到过,但它对于您保持连接的静态主机最有用。如果机器不断变化,使用-J(跳转主机)命令行参数会更容易:
一旦你知道它在做什么,语法就非常简单:
ssh -J user1@100.100.100.100 user2@192.168.25.100
上面的命令以 user1 身份建立到 100.100.100.100 的连接,然后以 user2 身份从那里“跳转”到 192.168.25.100