如何通过batch脚本自动化PuTTY隧道配置实现Redshift数据仓库连接
PuTTY 自动创建Redshift SSH隧道Batch脚本实现方案
实现核心原理
PuTTY官方自带命令行工具plink.exe,支持用参数直接传递所有GUI配置项,无需手动操作界面填写,Batch脚本只需要封装plink的调用逻辑即可,参数和手动配置的对应关系如下:
-l 跳板机用户名对应步骤2的「Auto-login username」配置-A参数对应步骤3的「Allow agent forwarding」开启选项-L 本地源端口:Redshift集群地址:Redshift端口对应步骤4的端口隧道添加配置- plink命令末尾追加的远程命令对应步骤5的两条固定命令执行
前置准备
- 把PuTTY安装目录下的
plink.exe放到系统PATH路径,或者和Batch脚本放在同一个文件夹 - 用户本地提前打开Pageant并添加对应SSH私钥,避免脚本运行时重复输入密钥密码
- 提前确认好跳板机地址、Redshift集群地址端口、远程执行的固定命令,可直接写死在脚本中减少用户输入成本
参考脚本实现
@echo off setlocal enabledelayedexpansion :: 可预先配置的固定参数,修改为实际业务值即可 set JUMPHOST=你的跳板机地址 例:jump.company.com set REDSHIFT_ADDR=Redshift集群地址 例:xxx.xxx.us-east-1.redshift.amazonaws.com set REDSHIFT_PORT=5439 :: 两条固定远程命令,多命令用分号分隔,最后加sleep保持隧道不中断 set REMOTE_COMMANDS=echo "隧道初始化完成"; sleep 365d :: 入参校验 if "%~1"=="" ( echo 错误:请传入跳板机登录用户名作为第一个参数 echo 调用示例:%~n0 你的用户名 本地源端口 echo 例:%~n0 wangwu 5439 pause exit /b 1 ) if "%~2"=="" ( echo 错误:请传入本地映射源端口作为第二个参数 echo 调用示例:%~n0 你的用户名 本地源端口 echo 例:%~n0 wangwu 5439 pause exit /b 1 ) set SSH_USER=%~1 set LOCAL_PORT=%~2 echo 正在创建Redshift隧道,本地端口%LOCAL_PORT%已映射至%REDSHIFT_ADDR%:%REDSHIFT_PORT% echo 请勿关闭当前窗口,关闭即中断隧道连接 plink.exe -A -l %SSH_USER% %JUMPHOST% -L %LOCAL_PORT%:%REDSHIFT_ADDR%:%REDSHIFT_PORT% %REMOTE_COMMANDS% endlocal
使用说明
- 首次运行脚本时会弹出跳板机主机密钥确认提示,选择「是」即可,后续运行不会重复弹出
- 如需后台静默运行,可在plink命令前加
start /min,最小化运行窗口 - 隧道使用完成后直接关闭脚本运行的窗口即可终止连接
内容的提问来源于stack exchange,提问作者AWS_Beginner
相关产品推荐
相关产品推荐

