如何通过SSH将本地端口转发到远程端口?[重复]


2

这个问题在这里已有答案:

例如,我想将localhost:2222绑定到remote:22

我希望能够这样做:

ssh user@localhost -p 2222

并通过SSH结束远程服务器

这是可以使用SSH完成的吗?我见过的所有例子都是从其他地方的远程机器转发端口。我只想将LOCALLY前移到远程服务器。

编辑:这不是建议的副本的副本。我不是试图通过本地端口访问远程计算机上的端口。

我只想将我的机器上的端口X别名为远程机器上的22。我不是想在这里隧道,我认为这是我的例子。

Edit2:它使它更清楚,我基本上想要将localhost 2222代理到端口22上的远程服务器。


你的例子很奇怪。要使用本地端口转发,首先需要SSH访问远程端,因此该命令ssh user@localhost -p 222只是一个不必要的复杂替代方案。除非有两台远程计算机:“代理”和目标。如果你无法达到目标,但是你可以到达“代理”,它可以达到目标,那么它更有意义。或者您可能希望允许其他计算机通过本地计算机访问远程计算机(使本地计算机成为其他计算机的“代理”)。你的目标是什么?
Kamil Maciorowski

@KamilMaciorowski对不起,你的回复几乎听起来像“你为什么要那样做?” 我有理由想要这样做。我只是想看看它是否可能。
life359

我见过用户要求不幸的解决方案,主要是因为XY问题
Kamil Maciorowski

您将只获得通用答案,因为SSH通过端口转发通常涉及四台计算机:(1)启动的客户端ssh,(2)侦听服务器sshd,(3)通过隧道到达的目标,(4)计算机使用隧道到达目标。在某些情况下,它们中的一些可能是同一台机器,因此可能涉及三到两台真正的计算机,如果你的目标很麻烦,甚至可能有一台。还有本地或远程转发。在您的情况下,可能会有一些混乱,因为您似乎想使用SSH来隧道SSH。
Kamil Maciorowski

也许通过“我只想将LOCALLY前移到远程服务器”你的意思是(1)和(2)是你的本地主机,(3)就是你所说的“远程服务器”。如果是这样,我希望(4)是另一台机器。是这样的吗?
Kamil Maciorowski

Answers:


1

本地端口转发,即到远程主机的隧道本地端口:

ssh <gateway> -L <local port to listen>:<remote hostname/IP>:<remote port>

或者将远程端口隧道连接到本地服务器:

ssh <gateway> -R <remote port to bind>:<local hostname/IP>:<local port>

在这种情况下,网关应该是什么?
life359

我轻微误解了这个问题,即另一台远程机器,用于通过网关远程机器将另一台远程机器隧道连接到本地机器。该原理仍适用于2台机器。Localhost <远程主机<另一个远程主机。
TheJulyPlot
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.