用 OpenSSH 登录远程主机、执行命令和建立加密隧道。
Windows 10 1809 及以后和 Windows 11 提供 OpenSSH 客户端,通常以“可选功能”形式存在,部分镜像默认安装;Windows Server 2019+ 也支持。前提是版本和功能满足:先执行 ssh -V 确认,找不到就在“设置 → 应用 → 可选功能”添加 OpenSSH Client,或在管理员 CMD 执行 dism /online /Add-Capability /CapabilityName:OpenSSH.Client~~~~0.0.1.0。装好后通常无需重启,但要新开 CMD 让 PATH 生效。
它提供 ssh、scp、sftp、ssh-keygen、ssh-add 等客户端工具。用户配置在 %USERPROFILE%\.ssh\config,私钥和 known_hosts 也在该目录;Windows 的 ssh-agent 是系统服务,默认手动启动。首次连接会要求确认主机指纹,确认后写入 known_hosts。
边界:客户端只负责发起连接;要让别人 SSH 登录这台 Windows,需要另装 OpenSSH Server 功能、启动 sshd 并放行防火墙。SSH 不能替代 RDP 的图形会话,文件传输用 scp/sftp。PowerShell 里调用的仍是 ssh.exe,参数与 CMD 相同,但引号解析要注意。
# 1. 确认客户端存在和版本;Windows 构建会带 OpenSSH_for_Windows 标识
C:\> ssh -V
# 2. 用当前用户名登录,首次连接会提示确认主机指纹
C:\> ssh user@example.com
# 3. 指定端口和私钥,适合非 22 端口或密钥不在默认路径
C:\> ssh -p 2222 -i C:\Users\me\.ssh\id_ed25519 user@example.com
# 4. 详细输出密钥协商和认证过程,定位 publickey 失败
C:\> ssh -v user@example.com
# 5. 本地端口转发:访问本机 8080 即到远端 localhost:80,-N 不打开 shell
C:\> ssh -N -L 8080:localhost:80 user@example.com
# 6. 经跳板机登录内网主机,跳板机和目标机都要能解析
C:\> ssh -J jump.example.com user@internal.example.com
# 7. 生成 Ed25519 密钥,默认写到 %USERPROFILE%\.ssh
C:\> ssh-keygen -t ed25519 -C "me@example.com"
# 8. 脚本模式:禁用交互密码提示并设置连接超时
C:\> ssh -o BatchMode=yes -o ConnectTimeout=5 user@example.com "hostname"
ssh 不是内部或外部命令:客户端可选功能未安装或 PATH 未刷新;先 where ssh,安装功能后新开 CMD。不要从第三方站点随便下载 ssh.exe。ssh-keygen -R host 清理旧记录并重连。Permission denied (publickey) 先用 -v 看客户端有没有提供密钥;常见原因是 -i 路径错、%USERPROFILE%\.ssh\config 里 IdentityFile 写错、服务器 authorized_keys 权限不对。permissions are too open 时,用 icacls "C:\Users\me\.ssh\id_ed25519" /inheritance:r /grant:r "%USERNAME%:R" 收紧 ACL;不要照搬 Linux 的 chmod 600 思路,NTFS 权限才是关键。.ppk 私钥不能直接被 OpenSSH 读取;用 PuTTYgen 导出 OpenSSH 格式,或改用原生 OpenSSH 密钥,别把 PPK 改扩展名。ssh-agent 服务默认手动启动,ssh-add 前先启动服务;否则每次都要输入私钥口令。共享机器上不要让 agent 长期缓存生产密钥。Connection timed out 多半是网络/防火墙丢包,Connection refused 是目标回了 RST;先 Test-NetConnection host -Port 22,再看 sshd 是否监听。StrictHostKeyChecking=no 绕过校验;改用预置 known_hosts 或 accept-new 并配合明确的指纹校验,避免把中间人风险带进自动化。合上页面,先回答,再展开对照。
ssh 时怎么确认和安装?Permission denied (publickey) 应该先看哪三处?Windows 私钥权限如何修?ssh -V/where ssh,再用可选功能或 DISM 能力名 OpenSSH.Client~~~~0.0.1.0 安装。-v 是否提供密钥、-i/config 的 IdentityFile 路径、服务器 authorized_keys 权限;Windows 私钥用 icacls 收紧到当前用户只读。
小程序版
微信扫码,随时查命令