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

本地PowerShell调用Azure Ubuntu虚拟机中Ansible时凭据获取失败

解决PowerShell调用New-SSHSession连接Azure Ubuntu虚拟机时的凭据错误问题

我来帮你排查这个凭据获取失败的问题——毕竟直接用Bitwise这类SSH工具能正常连接,但PowerShell里就报错,大概率是参数配置、密钥格式或者模块用法的小问题,咱们一步步来捋:

1. 先把密钥文件的问题确认清楚

  • 首先确保-KeyFile的路径是完整且正确的,PowerShell里路径如果包含空格或者特殊字符,一定要用双引号括全,比如"C:\Users\Reza\.ssh\id_rsa",别只写半截路径。
  • 另外,Azure Ubuntu虚拟机默认兼容OpenSSH格式的私钥,如果你用的是PuTTY生成的.ppk格式,得先转换成OpenSSH格式(用PuTTYgen工具导出成「OpenSSH私钥」即可),不然PowerShell的SSH模块识别不了。

2. 纠正-Credential参数的用法

你直接写-Credential ubuntu是不对的,PowerShell的-Credential参数需要的是一个PSCredential对象,不是单纯的用户名。正确的用法分两种:

  • 方式一:先创建凭据对象再调用命令
    # 会弹出窗口让你输入ubuntu用户的密码
    $cred = Get-Credential -UserName ubuntu
    New-SSHSession -ComputerName "13.**.**.***" -Credential $cred -KeyFile "C:\Users\Reza\.ssh\your_private_key"
    
  • 方式二:如果想用密钥登录,其实可以跳过-Credential,直接指定用户名+密钥:
    New-SSHSession -ComputerName "13.**.**.***" -UserName ubuntu -KeyFile "C:\Users\Reza\.ssh\your_private_key"
    

3. 检查Azure虚拟机的SSH服务配置

登录到Ubuntu虚拟机里,确认SSH服务的配置没问题:

  • 打开/etc/ssh/sshd_config文件,确保PubkeyAuthentication yes(允许公钥登录)和PasswordAuthentication yes(如果需要密码辅助的话)这两项是开启的,注释掉的话去掉前面的#。
  • 修改后重启SSH服务生效:
    sudo systemctl restart sshd
    

4. 用测试命令定位问题根源

先试试用更轻量化的测试命令排查,比如:

Test-SSHConnection -ComputerName "13.**.**.***" -UserName ubuntu -KeyFile "C:\Users\Reza\.ssh\your_private_key"

这个命令会返回具体的连接状态,能帮你快速判断是密钥无效、网络不通还是权限问题。

5. 更新PowerShell的SSH模块

如果你用的是Posh-SSH模块,旧版本可能存在兼容性问题,建议更新到最新版:

# 先确保模块已安装
Install-Module -Name Posh-SSH -Force
# 更新到最新版本
Update-Module -Name Posh-SSH

按照上面的步骤排查下来,应该能解决凭据获取失败的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:55