一个 PowerShell SSH 可以不将密钥存储在磁盘上吗?
Posted
技术标签:
【中文标题】一个 PowerShell SSH 可以不将密钥存储在磁盘上吗?【英文标题】:Can one PowerShell SSH without storing key on disk? 【发布时间】:2021-11-25 03:06:57 【问题描述】:如何在 Azure 中创建从 Windows10 VM 到 RHEL8 VM 的 PowerShell 会话而不将 SSH 密钥存储在磁盘上? 看起来New-PSSession
cmdlet 不接受 SSH 密钥作为字符串。
$pssession = New-PSSession -Name RHELSession -HostName <> -Port 22 -Subsystem powershell -UserName <> -KeyFilePath .\<>.pem -SSHTransport
Invoke-Command -Session $pssession -ScriptBlock hostname
一个Get-AzSshKey 或Get-AzKeyVaultSecret 可以在不将.pem 文件存储在磁盘上的情况下从内存中提供密钥吗?
(Get-AzSshKey -ResourceGroupName <> -Name <>).publicKey
【问题讨论】:
SSH.NET 程序集支持从内存中加载密钥。 【参考方案1】:你是对的,New-PSSession
目前(pwsh v7.1)只允许从文件加载 SSH 密钥。已经有 some requests 添加该功能,但使用 PSSession
cmdlet 启动 SSH 会话仍然非常有限。
目前,使用基本的ssh.exe
更直接,应该能够完成您想要的操作。
【讨论】:
感谢您的指出。库中是否有任何其他 cmdlet 可以将密钥作为字符串接受,还是 PowerShell 限制? @AyanMullickPosh-SSH
可能允许字符串值,但我自己没有测试过。大多数只是 Windows OpenSSH 客户端的包装器,它似乎不支持从命令行加载密钥。
它接受密钥作为字符串。但随后也会提示输入密码。 New-SSHSession -ComputerName <> -Port 22 -Credential <> -KeyString $(Get-AzSshKey -ResourceGroupName <> -Name <>).publicKey -AcceptKey
无法正常工作。以上是关于一个 PowerShell SSH 可以不将密钥存储在磁盘上吗?的主要内容,如果未能解决你的问题,请参考以下文章
启动 Pageant SSH-Agent 并加载文件夹中的所有密钥