You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在PowerShell中自动向SSH会话传递密码至本地Hyper-V虚拟机

解决PowerShell中SSH自动传递密码到Hyper-V虚拟机的问题

为什么你的原有命令失败

OpenSSH官方的ssh.exe并不支持-Credential参数——这个参数是PowerShell原生Cmdlet(比如Invoke-Command)特有的,直接在ssh.exe后添加会触发参数错误,导致连接失败。

可行方案(无需额外安装工具)

方案1:利用预装的MobaXterm命令行模式

MobaXterm的命令行工具支持直接通过参数传递SSH密码,语法简单且无需额外配置:

$User = "你的用户名"
$Password = "你的密码"
$ComputerName = "虚拟机IP或主机名"
$Command = "要执行的远程命令"

# 执行单条远程命令
& "C:\Program Files (x86)\Mobatek\MobaXterm\MobaXterm.exe" -exec "ssh $User@$ComputerName -pw $Password $Command"

# 启动交互式SSH会话
& "C:\Program Files (x86)\Mobatek\MobaXterm\MobaXterm.exe" -exec "ssh $User@$ComputerName -pw $Password"

注意:如果MobaXterm安装在非默认路径,请自行调整执行文件的路径。

方案2:PowerShell管道传递密码给ssh.exe

OpenSSH的ssh.exe支持通过标准输入接收密码,结合-o BatchMode=no参数关闭批量模式即可实现自动输入:

$User = "你的用户名"
$Password = "你的密码"
$ComputerName = "虚拟机IP或主机名"
$Command = "要执行的远程命令"

# 执行单条命令
echo $Password | ssh.exe -o BatchMode=no $User@$ComputerName $Command

# 启动交互式会话(注意:密码可能被进程工具捕获,安全性较低)
echo $Password | ssh.exe -o BatchMode=no $User@$ComputerName

警告:这种方式会明文传递密码,存在安全风险,仅建议在测试环境临时使用。

方案3:SSH密钥认证(推荐,安全无密码)

如果项目安全策略允许,密钥认证是最优解,无需传递任何密码:

  1. 本地生成密钥对:
ssh-keygen.exe -t ed25519

按提示一路回车使用默认配置即可。
2. 将公钥复制到虚拟机的授权列表:

ssh-copy-id $User@$ComputerName

首次执行会要求输入一次密码,之后即可无密码登录:

ssh.exe $User@$ComputerName $Command

内容的提问来源于stack exchange,提问作者Ron

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 13:50:24