【问题标题】:Port forwarding to avoid the need for certificate端口转发以避免需要证书
【发布时间】:2021-04-30 13:12:03
【问题描述】:

我需要在本地设置一个通过 SSH 连接到 EC2 实例的工具,以在远程机器上执行分析。问题如下:EC2 需要使用 PEM 证书进行连接,但该工具不支持证书。有没有办法进行一些端口转发,以便该工具可以在没有密码(或至少没有证书)的情况下连接到类似 localhost:2222 的东西,然后流量被重定向到 EC2?

我不确切知道该工具使用了哪些端口,但可以肯定它可以通过 SSH 隧道传输所有流量。

如果您需要更多信息,该工具是 Nvidia Nsight Compute。

我试过了 sh -L 2222:localhost:22 -i mycertificate.pem <username_ec2>@<ip_ec2> 但随后ssh <username_ec2>@localhost:2222 返回ssh: Could not resolve hostname localhost:2222: nodename nor servname provided, or not known

【问题讨论】:

  • 我的意思是,这可能是个愚蠢的问题。但是您拥有正确的 CA 和用户传递凭据,对吗?你只是不知道如何提供它扔掉你正在使用的工具。对吗?
  • 没错。因为该工具无法在输入中获取证书
  • 我正在使用 python 应用程序进行端口转发。并且可能有示例代码。如果这是您可以使用的东西,我可以分享。但过程很简单,你只需要创建端口转发到你的 localhost 端口,然后连接你的工具。

标签: ssh certificate portforwarding nsight-compute


【解决方案1】:

您可以使用 TCP 反向代理来执行此操作。反向代理对其他高级协议也很有用,也可以由多个服务器/服务共享和使用。我个人使用了一个,因为它帮助我巩固了我的 DMZ。我过去曾使用 HAProxy 和 NGINX 来处理这类事情。由于您在这里没有使用 HTTP,因此您需要确保代理在 TCP 模式下运行,以用于将用于此连接的特定前端和后端。代理可以转发流量并根据需要应用或剥离证书。

【讨论】:

    【解决方案2】:

    将您的命令修复为:

    ssh -p 2222 <username_ec2>@localhost
    

    但如果您像这样进行端口转发,仍然需要证书:

    ssh -L 2222:localhost:22 -i mycertificate.pem <username_ec2>@<ip_ec2>
    

    我会尝试以下方法:

    运行另一个 ssh 服务器,它只在 localhost 上侦听,并且不需要另一个端口上的证书,例如 2222。See instructions

    然后我会像这样移植到它:

    ssh -L 2222:localhost:2222 -i mycertificate.pem <username_ec2>@<ip_ec2>
    

    并以同样的方式 ssh 到它:

    ssh -p 2222 <username_ec2>@localhost
    

    【讨论】:

    猜你喜欢
    • 2018-01-27
    • 1970-01-01
    • 2021-04-06
    • 2023-03-03
    • 2022-12-12
    • 1970-01-01
    • 2012-03-08
    • 2014-08-06
    • 1970-01-01
    相关资源
    最近更新 更多