SSH 隧道:第一跳用户名/密码,第二跳使用 SSH 密钥

Posted

技术标签:

【中文标题】SSH 隧道:第一跳用户名/密码,第二跳使用 SSH 密钥【英文标题】:SSH tunneling: first hop username/password, second hop using SSH key 【发布时间】:2017-08-04 15:04:50 【问题描述】:

对于我正在安装的第三方应用程序,我需要设置 SFTP 连接:

基础应用程序是一个运行在 linux/JBOSS 机器(机器 A)上的 java 应用程序。此应用程序使用 (s)ftp 连接到第二台 centOS linux 机器(机器 B)

我面临的问题如下:第三方应用程序只支持使用用户名和密码的(s)ftp授权,而目标机器(B)只允许使用提供的SSH密钥访问。

我能想到的唯一解决方案是通过机器 A 上的 SFTP 服务器建立 SFTP 连接隧道,该服务器允许用户名+密码 SSH。我不知道这是否可能,也不知道使用哪个工具来设置它。请注意,这必须是永久连接,因此应设置为在服务器启动时工作。

在仅使用 SSH 密钥和 mobaXterm 之前,我已经建立了隧道连接,但内部工作原理对我来说仍然不是很清楚。

在这种情况下的另一个挑战可能是我无法在机器 B 上进行 root 访问。

所以我的问题:是否可以设置隧道连接,使机器 A 上的应用程序可以使用用户名+密码连接到机器 B,我需要得到什么这行得通吗?

【问题讨论】:

【参考方案1】:

是的,这是可能的。通常我使用以下结构: ssh -N -L 21:127.0.0.1:21 ip_address_machine_B 在此命令中,您可以使用任何其他端口。 然后在 machine_A 上你需要连接到 localhost 端口 21

【讨论】:

啊,我希望有这样的东西!并且连接到 localhost:21 是使用运行 ssh 命令的用户的凭据完成的? 我认为您应该使用对 ftp 服务有效的凭据。 好的,谢谢,在机器 A 上,每个用户都可以连接到 ftp。一旦我可以访问机器 B 就会尝试这个

以上是关于SSH 隧道:第一跳用户名/密码,第二跳使用 SSH 密钥的主要内容,如果未能解决你的问题,请参考以下文章

如何使用反向 SSH 隧道绕过防火墙和 NAT

DBeaver 通过 SSH 隧道连接

CobaltStrike使用-第八篇-隧道技术(socks转发ssh隧道CS转发监听器)

CobaltStrike使用-第八篇-隧道技术(socks转发ssh隧道CS转发监听器)

使用 SSH 隧道的 PostgreSQL/psycopg2 密码验证

两步建立 ssh 反向隧道