如何从本地 Windows 10 到远程 Ubuntu 设置 SSH 隧道?

如何从本地 Windows 10 到远程 Ubuntu 设置 SSH 隧道?

我已经安装适用于 Linux 的 Visual C++ 2015它的作用是,它获取服务器名称、端口号、用户名和密码,然后连接到远程机器,在该机器内部编译 C++ 程序,然后将结果返回到我的本地电脑。

在此处输入图片描述

现在,我面临的问题是,我必须通过堡垒主机连接到远程 PC。

假设堡垒服务器的IP地址和端口号分别为yyy.yy.y.208081远程机器的IP地址为xxx.xxx.x.180但不知道端口号。

从我的本地 Windows 10 到远程 Linux 机器创建隧道的命令是什么?

ssh -L 22:xxx.xxx.x.180:22 yyy.yy.y.20:8081

上述命令给出了错误信息:

Microsoft Windows [Version 10.0.19045.2846]
(c) Microsoft Corporation. All rights reserved.

C:\Users\pc>ssh -L 22:xxx.xxx.x.180:22 yyy.yy.y.20

C:\Users\pc>ssh -L 22:xxx.xxx.x.180:22 yyy.yy.y.20:8081
ssh: Could not resolve hostname yyy.yy.y.20:8081: No such host is known.

C:\Users\pc>

如何从本地 Windows 10 到远程 Ubuntu 设置 SSH 隧道?

答案1

openssh 客户端不支持该hostname:port方案。请使用-p

ssh -L 22:xxx.xxx.x.180:22 -p 8081 yyy.yy.y.20

答案2

要通过堡垒主机创建从本地 Windows 10 计算机到远程 Ubuntu 计算机的 SSH 隧道,可以使用以下命令:

ssh -L <local_port>:<remote_ip>:<remote_port> <bastion_username>@<bastion_ip> -p <bastion_port> -i <path_to_bastion_private_key>

对于你的情况,命令看起来应该是这样的:

ssh -L 2222:xxx.xxx.x.180:22 [email protected] -p 8081 -i path/to/bastion/private/key

命令中每个参数的含义如下:

  • -L:指定本地端口转发。在本例中,我们将本地端口转发2222到远程 Ubuntu 机器的 SSH 端口(22)
  • <local_port>:您要将流量转发到的本地计算机上的端口号。在本例中,我们使用2222
  • <remote_ip>:您要连接的远程 Ubuntu 机器的 IP 地址。
  • <remote_port>:远程Ubuntu机器的SSH服务的端口号。
  • <bastion_username>:用于连接堡垒主机的用户名。
  • <bastion_ip>:堡垒主机的IP地址。
  • -p:指定堡垒主机上要连接的端口号。在本例中,我们使用8081
  • -i:指定堡垒机的私钥文件路径。

运行该命令后,系统会提示您输入堡垒主机用户名的密码。输入正确的密码后,隧道将建立,您可以使用 Visual C++ 2015 for Linux 通过隧道使用地址连接到远程 Ubuntu 计算机localhost:2222

相关内容