在 Windows 自带 OpenSSH(ssh.exe) 下,用密码(askpass 机制)或密钥以非交互方式 SSH 登录远程设备、执行命令、传输文件的 Skill。
专为 Windows 下用使用账号/密码 SSH 连接设备设计:
- 提供IP、账号/密码直接SSH连接,可执行一次性命令、上传/下载文件
- Windows下程序开发,自动SSH连接Linux服务器进行编译、部署
- ✅ 密码认证:通过临时
SSH_ASKPASS脚本非交互传入密码,无需预置密钥 - ✅ 密钥认证:支持 SSH 私钥文件(
ed25519推荐) - ✅ SCP 文件传输:上传 / 下载 / 递归目录传输
- ✅ 零依赖:仅需 bash + Windows OpenSSH
- ✅ 安全:密码只在本次执行的临时 askpass 脚本中出现,进程结束即删除,绝不落盘
- Windows 10/11 自带 OpenSSH(
ssh.exe、scp.exe在 PATH 中) - bash 环境(Git Bash / WSL 均可)
- 本 Skill 的
scripts/connect.sh与scripts/scp.sh
下文
<SKILL_DIR>指本 Skill 目录(即SKILL.md所在目录)。
SSHPASS='你的密码' bash "<SKILL_DIR>/scripts/connect.sh" root@192.168.1.10 22 -- 'uptime; df -h'仅测试连通性(不传命令):
SSHPASS='你的密码' bash "<SKILL_DIR>/scripts/connect.sh" root@192.168.1.10 22SSHKEY='~/.ssh/id_ed25519' bash "<SKILL_DIR>/scripts/connect.sh" user@192.168.1.10 22 -- 'uptime'上传:
SSHHOST='192.168.1.10' SSHUSER='root' SSHPASS='你的密码' \
bash "<SKILL_DIR>/scripts/scp.sh" upload ./config.txt /etc/app/config.txt下载:
SSHHOST='192.168.1.10' SSHUSER='root' SSHPASS='你的密码' \
bash "<SKILL_DIR>/scripts/scp.sh" download /var/log/syslog ./logs/递归传输目录:加 -r 参数即可。
- 明文密码绝不写入记忆文件、本仓库、日志等任何持久化位置(known_hosts 除外)。
- 密码仅存在于「本次执行的临时 askpass 脚本」,脚本以
mktemp生成、权限700,进程退出(trap ... EXIT)即rm -f删除。 - 若使用「设备注册表」(
~/.workbuddy/credentials/ssh_devices.json)做免密直连,密码会以明文落盘,启用前必须明确知晓风险并同意。默认行为是每次询问密码,不落盘。
ssh-askpass-connect/
├── SKILL.md # Skill 定义与说明
├── README.md # 本文件
├── LICENSE # MIT 许可证
└── scripts/
├── connect.sh # SSH 连接 / 远程命令
└── scp.sh # SCP 文件传输
- 老设备
ssh-rsa:已加-o HostKeyAlgorithms=+ssh-rsa -o PubkeyAcceptedAlgorithms=+ssh-rsa - Windows 不喝 stdin 密码:已用
SSH_ASKPASS+SSH_ASKPASS_REQUIRE=force+< /dev/null - 连接卡死:已用
timeout 30(SCP 为timeout 300)+ConnectTimeout=10 - 首次连接:已加
-o StrictHostKeyChecking=accept-new