我看见这里实现两次 ssh 跳转的方法
ssh -L 9998:主机2:22 -N 主机1
ssh -L 9999:本地主机:1234 -N -p 9998 本地主机
我想我明白一条线路的作用,但不知道它们如何协同工作。你能继续这样做,让隧道内有隧道,实现多跳吗?会是这样的吗?
ssh -L 9997:主机3:22 -N 主机
2 ssh -L 9998:主机2:22 -N 主机1
ssh -L 9999:本地主机:1234 -N -p 9998 本地主机
答案1
这取决于您尝试通过 SSH 转发的内容。也就是您要做什么。
该-L lport:host:hport
语法使得如果您连接到lport
起始主机,您也将连接到hport
主机。
假设您在 上hostA
,并且想要访问 上的 http(端口 80),hostD
但该端口只能通过访问,而hostC
该端口只能通过 访问,hostB
并且可通过您的起始 访问hostA
。
您可以运行(从hostA
):
ssh -L 8080:localhost:8081 主机B
然后在该hostB
登录上运行:
ssh -L 8081:localhost:8082 主机C
然后在该hostC
登录上运行:
ssh -L 8082:本地主机:80 hostD
然后您可以(在 上hostA
)访问localhost:8080
并连接到hostD
的端口 80。
注意:您可以在所有机器上使用相同的 8080,因为您每台机器只使用该端口一次。我只是增加了每个连接的端口号,以更好地显示端口之间的相关性。
要记住的另一件事是主机(两个:之间)是在您正在 ssh 进入的机器的上下文中。因此,如果hostC
可以直接访问hostD
的端口 80,您可以执行以下操作:
您可以运行(从hostA
):
ssh -L 8080:localhost:8081 主机B
然后在该hostB
登录上运行:
ssh -L 8081:主机D:80 主机C