You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Windows自定义ssh://协议处理器实现PuTTY自动登录技术咨询

没问题,咱们来一步步解决这个PuTTY通过ssh://协议自动登录的需求!

实现PuTTY通过ssh://协议自动登录的方案

一、关于注册表中设置用户名和密码的说明

首先可以明确:用户名可以直接在注册表的命令行参数中配置,但明文存储密码极度不安全,强烈不推荐这么做

如果只是想自动填充用户名,你可以修改注册表的命令行部分,给PuTTY加上-l参数指定用户名。比如把原来的命令行:

putty.exe %1

改成:

"\"C:\\Program Files\\PuTTY\\putty.exe\" -l 你的用户名 %1"

对应的完整注册表片段示例:

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\ssh]
@="URL:SSH Protocol"
"URL Protocol"=""

[HKEY_CLASSES_ROOT\ssh\shell]

[HKEY_CLASSES_ROOT\ssh\shell\open]

[HKEY_CLASSES_ROOT\ssh\shell\open\command]
@="\"C:\\Program Files\\PuTTY\\putty.exe\" -l 你的用户名 %1"

要是硬要加密码,可以用-pw参数,但再次提醒:明文密码写在注册表中,任何能访问你系统的人/程序都能直接看到,风险极高,绝对不建议使用

二、更安全的最佳方案:密钥登录+PuTTY会话配置

这才是既安全又省心的做法,完全不需要明文密码:

  1. 创建带自动登录配置的PuTTY会话

    • 打开PuTTY,在「Session」界面输入服务器IP/域名和端口
    • 切换到「Connection -> Data」,在「Auto-login username」栏填入你的登录用户名
    • 切换到「Connection -> SSH -> Auth」,点击「Browse」选择你的私钥文件(.ppk格式,可通过PuTTYgen生成)
    • 回到「Session」界面,给这个会话起个名字(比如MyServer),点击「Save」保存
  2. 修改注册表调用已保存的会话
    把注册表的命令行改成调用这个保存好的会话,同时支持从ssh://链接中动态获取主机信息:

    Windows Registry Editor Version 5.00
    
    [HKEY_CLASSES_ROOT\ssh]
    @="URL:SSH Protocol"
    "URL Protocol"=""
    
    [HKEY_CLASSES_ROOT\ssh\shell\open\command]
    @="\"C:\\Program Files\\PuTTY\\putty.exe\" -load \"MyServer\" %1"
    

    如果你的ssh://链接是ssh://user@example.com这种带用户名的格式,还可以在PuTTY的「Connection -> Data」里勾选「Attempt to use username from URL」,这样PuTTY会自动从链接中提取用户名,配合密钥就能实现完全自动登录。

三、额外小技巧

如果需要兼容不同的ssh://链接(比如不同服务器),可以不用固定会话,直接在命令行里组合用户名和密钥参数:

"\"C:\\Program Files\\PuTTY\\putty.exe\" -l 你的用户名 -i \"C:\\路径\\你的密钥.ppk\" %1"

这样点击任何ssh://链接时,PuTTY都会自动用指定用户名+密钥登录目标服务器。

总结来说,明文密码的方式绝对要避免,密钥登录+PuTTY会话配置是最安全可靠的自动登录方案,既满足需求又能保护你的账号安全。

内容的提问来源于stack exchange,提问作者Stef

火山引擎 最新活动