OpenSSH ProxyCommand的等效PuTTY配置(两个不同的.pem / ppk文件)

时间:2018-02-27 06:07:13

标签: ssh proxy putty tunneling

(相关问题:PuTTY configuration equivalent to OpenSSH ProxyCommand 但它是针对单个ppk / pem文件...我的问题略有不同。)

我正在尝试使用PuTTY与我的服务器建立SSH连接。这些服务器仅允许来自堡垒服务器(另一个特定服务器)的传入SSH连接。

使用Linux这对ssh命令来说没有问题...我已经在Linux中实现了这个......(〜/ .ssh / config)

HOST myprod-bastion
  IdentityFile ~/.ssh/pemfile/myprod-bastion.pem
  User bastion-user
  Hostname X.X.X.X

HOST mywebserver
  IdentityFile ~/.ssh/pemfile/myweserver.pem
  User produser
  Hostname 192.168.Y.Y
  ProxyCommand ssh myprod-bastion -W %h:%p

从我的终端,我只需要执行以下命令:

ssh mywebserver

任何人都知道如何在PuTTY中使用这样的配置? 提前感谢您的帮助。 :)

2 个答案:

答案 0 :(得分:3)

我不确定您是否仍然需要此答案。但是,由于我遇到了同样的问题,因此我将分享我的解决方案。

此站点为我提供了该方法的基础:(警告链接可能已损坏) https://www.math.ucla.edu/computing/kb/creating-ssh-proxy-tunnel-putty

我必须与PuTTY建立两个连接;一个用于堡垒,另一个用于其他盒子(mywebserver)。

创建与堡垒主机的连接,并根据您的设置指定主机名,端口和其他必要的信息。

然后在Connection > SSH > Tunnels下,添加转发的端口。设置源端口(例如:31415),然后记下该值。将类型设置为Dynamic,然后选择Auto

PuTTY Setup for Forwarded Port

请确保将其另存为配置。

接下来,输入凭据以建立到另一个框(mywebserver)的连接。您需要在此处采取的其他步骤是通过代理将其连接到第一个配置。

Connection > Proxy下,选择代理服务器类型SOCKS 5,将代理主机名设置为localhost,并将端口设置为与上一步中创建的端口相同(在本示例中:{{1 }})。其余设置可以保持不变。

PuTTY Proxy Setup

现在,您需要做的是开始与堡垒主机的第一个连接,然后再与另一个盒子(mywebserver)建立连接。

答案 1 :(得分:1)

我遇到了完全相同的问题,您通过以下方式描述并解决了它(基于 (Martin Prikryll's answer 在您也引用的线程中)。 (有关此解决方案所需的 PuTTYgenPageantplink 的详细信息,请参阅 PuTTY User Manual。所有工具都随附腻子。)

  1. 使用 PuTTYgen 将两个密钥转换为 PuTTY .ppk 文件格式 为此,您可以将 .pem 文件加载到 PuTTYgen 中并保存私钥。

  2. 启动 Pageant 并添加 bastion-user@myprod-bastion 的私有 .ppk 密钥。

  3. 在 PuTTY GUI 中配置会话参数。
    在标签中

    • 会话:输入主机名 192.168.Y.Y 和(可选)端口
    • Connection > Data:输入登录名 produser
    • Connection > SSH > Auth:导入您的 produser@mywebserver 的私钥 (.ppk) 文件
      (如果您愿意,也可以将此密钥导入 Pageant。)
    • Connection > Proxy:配置(某种)JumpProxy (myprod-bastion), 如下所述
    • 不要忘记将您的配置保存为 mywebserver

配置 JumpProxy (myprod-bastion)

如屏幕截图所示:
PuTTY proxy setting

在您的情况下,您可以将“代理主机名”、“端口”和“用户名”字段留空,并且不需要密码,因为您提供了私钥。 “本地代理命令”字段中的完整命令是:
plink -ssh bastion-user@X.X.X.X -P YYY -batch -agent -nc %host:%port
参数说明:

  • “-ssh”确定协议(我认为这是可选的)
  • “bastion-user@X.X.X.X -P YYY”您的连接数据(在您的情况下不需要端口)
    (您也可以在此处使用 PuTTY 变量 %proxyhost 和 %proxyport,如果您填写了上面的相应字段,但我不知道代理用户的变量名称。)
  • “-batch”禁止任何用户提示或输入
  • "-agent" 从 Pageant 检索私钥,您在与 mywebserver 建立连接之前启动该私钥。 (“-i keyfile.ppk”也应该可以用,但我不想弄乱路径...)
  • "-nc %host:%port" 类似于 ssh 的 "-W host:port"
    这些变量引用了“会话”选项卡中 mywebserver 的相应值。

你可以从命令行开始你的会话,非常类似于 *nix

plink mywebserver