# tinysshd **Repository Path**: hu9001/tinysshd ## Basic Information - **Project Name**: tinysshd - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-05 - **Last Updated**: 2026-08-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # tinysshd — 便携 SSH 服务(Windows 10 免安装) 为**没有 OpenSSH Server 可选功能**的 Windows 10 笔记本提供 SSH 远程管理。 单个 `.exe` 文件,绿色免安装,无需管理员权限(端口默认 2222)。 ## 功能 - 密码认证 或 公钥认证(authorized_keys) - 远程 shell:`cmd.exe` / `powershell.exe` - 远程单条命令:`ssh host "dir"`(返回退出码) - SFTP 文件传输(默认开启) - 主机密钥自动生成(ed25519,`host_key` 文件) - 可选:隐藏控制台窗口、日志落盘、空闲超时 ## 快速开始(Windows) ```bat :: 1) 拷贝 tinysshd.exe 到笔记本任意目录(如 C:\tools\) :: 2) 设置密码并启动(建议用环境变量,避免密码出现在进程列表) set TINYSSHD_PASS=YourStrongPass123 tinysshd.exe -port 2222 -user admin -sftp :: 可选:日志写文件 + 隐藏窗口 tinysshd.exe -port 2222 -user admin -sftp -hide -log C:\tools\tinysshd.log ``` ### 防火墙放行(一次性) ```bat netsh advfirewall firewall add rule name="tinysshd 2222" dir=in action=allow protocol=TCP localport=2222 ``` ### 客户端连接(Mac / 另一台机器) ```bash ssh -p 2222 admin@<笔记本IP> sftp -P 2222 admin@<笔记本IP> ``` ## 公钥认证(更推荐) ```bash # 在客户端(你的 Mac)生成密钥(若已有可跳过) ssh-keygen -t ed25519 # 把公钥写到 Windows 上 authorized_keys 文件 # C:\tools\authorized_keys 每行一个公钥(格式同 OpenSSH authorized_keys) ``` ```bat tinysshd.exe -port 2222 -user admin -keys C:\tools\authorized_keys ``` ## 参数 | 参数 | 默认 | 说明 | |---|---|---| | `-port` | `2222` | 监听端口(22 需管理员,建议 2222) | | `-user` | `admin` | 允许的用户名 | | `-pass` | 空 | 密码;不设则读环境变量 `TINYSSHD_PASS` | | `-keys` | 空 | authorized_keys 文件路径(公钥认证) | | `-hostkey` | `host_key` | 主机私钥路径,缺失自动生成 | | `-sftp` | `true` | 启用 SFTP 子系统 | | `-shell` | `cmd.exe` | shell:`cmd.exe` / `powershell.exe` / 绝对路径 | | `-log` | stdout | 日志文件路径 | | `-hide` | `false` | 隐藏控制台窗口(配合 `-log` 使用) | | `-idle-timeout` | `0` | 空闲 N 秒自动断开(0=不超时) | > 注意:`-pass` 和 `-keys` 至少配置其一,否则拒绝启动。 > 密码仅做固定用户名+密码校验;如需多用户请用 `-keys` 公钥方式(一个文件可放多把公钥)。 ## 自启动(可选,开机自启) ```bat schtasks /create /tn "tinysshd" /tr "C:\tools\tinysshd.exe -port 2222 -user admin -sftp -hide -log C:\tools\tinysshd.log" /sc onlogon /rl limited /f :: 删除:schtasks /delete /tn "tinysshd" /f ``` ## 构建 需要 Go 1.21+(开发机是 macOS,交叉编译即可): ```bash ./build.sh # 产出:tinysshd.exe (Windows amd64) + tinysshd (macOS arm64) ``` ## 安全提示 - 请勿把 SSH 暴露到公网;仅在内网/VPN 使用 - 密码认证易被爆破,建议:强密码 + `-idle-timeout` + 防火墙只允许来源 IP - 更稳妥:只用 `-keys` 公钥认证,不设密码 - `host_key` 与 `authorized_keys` 注意权限,不要随意分发 ## 实现说明 - 协议层:`golang.org/x/crypto/ssh` - SFTP:`github.com/pkg/sftp` - Windows 无真实 PTY:交互 shell 直接接线 stdio;`pty-req` 被接受但忽略 - `-hide` 通过 `CREATE_NO_WINDOW` 隐藏子进程窗口 - 单文件静态编译(CGO_ENABLED=0),无运行库依赖