NiceLeeのBlog 用爱发电 bilibili~

备忘录 Putty 密钥+代理的自动设置

2025-03-18
nIceLee

阅读:


本文是Putty 免密自动登录设置这篇文章的补充。
附加需求有两个,即使用指定密钥登录而不是密码登录,以及设置代理。

批量转换密钥格式

常见的OpenSSH密钥并不能被putty识别,需要通过puttygen.exe进行转换。
但是该程序只支持图形界面,不支持命令行,量多的时候可能有点麻烦。
这时候需要用到winscp.com,该程序请自行搜索。
这里再贴一个示例代码,批量生成ed25519的密钥(OpenSSH + Putty两种格式):

@echo off
set Path=D:\Program Files\OpenSSL-Win64\bin\;%Path%
set Path=D:\Program Files\putty\WinSCP-6.3.7-Portable\;%Path%
setlocal enabledelayedexpansion

for %%i in (t1 t2 t3) do (
    mkdir %%i
    cd %%i
    ssh-keygen -t ed25519 -f id_ed25519 -P "" -C "%%i@test.com"
    winscp.com /keygen id_ed25519 /output=id_ed25519.ppk
    cd ..
)

endlocal

pause

指定密钥登录 + 设置代理

可以在Putty设置好,保存成指定配置名,使用时通过命令行-load "配置名"来加载。
当然,密钥也可以通过-i "密钥路径"覆盖。

@echo off
putty.exe -load "test" -ssh -l {用户名} -P {端口} {地址} -i "D:\Path\to\private\key\id_rsa.ppk"
REM start putty.exe -load "test"
pause

批量生成Putty配置

人工在Putty界面设置好,再保存配置可能效率有点低。
若有需要,可以通过修改注册表的方式提高效率。
若不符合预期,可以与人工保存生成的注册表配置进行对比观察。

@echo off
setlocal

REM 定义会话名称
set "sessionName=test"

REM 定义注册表路径
set "registryPath=HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions\%sessionName%"

REM 操作举例
reg add "%registryPath%" /v ProxyType /t REG_DWORD /d 0 /f
reg add "%registryPath%" /v ProxyUsername /t REG_SZ /d "%proxy_username%" /f
reg delete "%registryPath%" /v ProxyHost /f 2>nul
echo 代理已关闭。

相似文章

内容
隐藏