ssh - 如何将 ssh 端口转发到我的机器上运行的虚拟盒?

标签 ssh portforwarding

我有两台机器,A 和 B

在 B 上我有一个正在运行的虚拟机(比如说它的 VB)。 遗憾的是,VB 有一个无法更改的静态本地 IP 地址 (192.168.79.1)。

我可以通过以下方式成功地进行 ssh

A -> B B -> VB

我尝试在 B(端口 7777)上设置 ssh 端口转发以转发到 VB(端口 22)。但不知何故它没有发生。

我应该使用 -L 还是 -R ?

我尝试了很多方法..

ssh -R 7777:192.168.79.1:22 [email protected]

ssh -L 7777:192.168.79.1:22 [email protected]

ssh -L 7777:192.168.79.1:22 -l 根本地主机

可能是我没有正确理解语法或者我错过了一些愚蠢的东西?

我想连接到 A->VB(通过 B 上的某个 xyz 端口)。请指导我如何设置。

顺便说一句,所有机器都需要用户名和密码。我还没有添加 key (所以也请考虑这一点)。

谢谢!!

最佳答案

您设置隧道时使用了错误的主机地址。您尝试做的实际上不是端口转发,这通常是在防火墙级别完成的。相反,您尝试设置一个隧道,以在系统 B 上的某个端口 xyz 下的 VB 上公开您的 ssh 服务器。为此,您必须 ssh 到那个系统 B,而不是 VB。所以像这样:

ssh -L7777:192.168.79.1:22 some_user@<B>

因此,用户“some_user”通过 ssh 进入主机 B,并且在那里不执行任何其他操作( <B> 必须替换为 B 的 IP 地址或名称),除了他另外创建了一个您现在可以用于连接的“ssh 隧道”:

ssh root@<B>:7777

尝试一下,您会发现您实际上登录到了 VB,因为您的请求以透明方式通过隧道传输到主机 VB 上的端口 22。因此B充当隧道中继。

但这对于日常使用来说有点烦人。考虑使用 iptables 在防火墙级别寻找解决方案。这使您不必在使用 ssh 隧道之前创建它。另外,还有一些实用程序,例如 plasmoids 等,可以以更方便的方式设置 ssh 隧道。

关于ssh - 如何将 ssh 端口转发到我的机器上运行的虚拟盒?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13860328/

相关文章:

linux - 知道远程端口转发是否成功?

macos - 从远程端口到本地的 OSX SSH 隧道

ssh - 从不同主机连接到 SSH 转发端口

linux - Azure Add-AzureProvisioningConfig ssh key 或 key 对上传

php - 与 PHP 的 SSH 连接

Python 单元测试在所有测试后运行函数

macos - 远程端口转发 SSH 被视为从 127.0.0.1 访问的无效用户

通过 ssh/git-shell 获得 git 文件权限?

ssh - 通过SSH进入服务器并从那里进行rsync –使用非标准端口

linux - iptables 转发端口到两个 eth 卡