如果调用 Plink 时使用的参数可能是主机名或已保存的 PuTTY 会话,那么如何解析它?
例如,假设我保存了一个名为“192.168.4.4”的PuTTY会话。以下操作会调用保存的会话吗?
plink [email protected]
答案1
快速回答:在该示例中,Plink 将使用 PuTTY 会话。会话配置将添加到 Plink 参数中,并可能覆盖这些参数。
建议:避免使用可能与主机名混淆的 PuTTY 会话名称。
以下是更详细的解释。我从测试中推断出这些 Plink 解析规则。
- 如果
-load
使用该选项,则加载已保存的会话,不要在参数列表中查找主机名,然后跳至步骤 5。 - HOST=主机名参数(来自参数列表)。
- 如果HOST包含
@
,则在最后进行拆分@
。USER=第一部分,HOST=最后一部分。 - 如果 HOST 与已保存的 PuTTY 会话的名称匹配,则从该会话加载参数。如果该会话有用户名,则覆盖 USER 中的当前值。
- 解析剩余参数,覆盖当前值。这包括
-l
用户和-i
ssh 用户密钥。
以下是已保存会话如何导致问题的示例。假设这是一个已保存的 PuTTY 会话:
- 已保存会话的名称:192.168.4.4
- 主持人: [电子邮件保护]
- 私钥:key.ppk
如果你使用 调用 Plink ,它实际上将使用以下内容:plink [email protected]
- 主机:192.168.5.5(来自已保存的会话)
- 用户:用户2(保存的会话值 user2 覆盖用户1在论证中)
- 私钥:key.ppk(来自保存的会话)
注 1:这是用户名的优先顺序:(1)-l
选项,(2)已保存的会话,(3)附加到主机参数@
。
注 2:PuTTY 将其会话保存在 Windows 注册表中。(Computer\HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY\Sessions)
-load
注 3:Plink 还允许您使用选项 或(已弃用)调用已保存的会话@session
。这些内容在PuTTY 文档。
注 4:我使用的是 PuTTY 版本 0.71,64 位 x86 Windows。最新版本是 0.78。
注 5:使用已保存会话中的密钥对我来说是可行的,但其他人报告了此问题: https://stackoverflow.com/questions/17689583/putty-connects-but-key-refused-when-using-plink