如何使用带有PowerShell私钥的ssh连接到linux服务器?

时间:2017-09-24 08:15:08

标签: powershell ssh powershell-v5.0

我使用puttygen生成了一个ssh密钥对,并且可以使用我的Windows 10工作站上的putty中的私钥成功连接到我的CentOS服务器:

image of successful connection to CentOS

我想从Windows PowerShell连接到服务器,并使用Set

加载了Posh-SSH模块

我尝试使用以下命令创建新的ssh会话:

Install-Module posh-ssh

我为$Credential = Get-Credential $KeyFile = 'C:\Users\mark\Documents\ssh\privkey.ppk' $sesh = New-SSHSession -ComputerName neon.localdomain -Credential $credential -Keyfile $KeyFile 输入了root和空白密码但我收到此错误:

  

New-SSHSession:私钥文件无效。

我尝试通过读取并转换为base64编码将privkey文件转换为字符串但是我得到了同样的错误:

Get-Credential

我也试过了,但得到了同样的错误:

$privkeyString = Get-Content $KeyFile
$Bytes = [Convert]::ToBase64String([System.Text.Encoding]::Unicode.GetBytes($privkeyString))
$sesh = New-SSHSession -ComputerName neon.localdomain -Credential $credential -KeyString $Bytes

关于如何使用带有私钥文件的PowerShell连接到Linux服务器的任何想法?

3 个答案:

答案 0 :(得分:4)

New-SSHSession无法识别PuTTY的密钥格式(遗憾的是,Gallery和项目页面都没有提到这一点,但我在PowerShellMagazine article中找到了它)。您需要OpenSSH格式的私钥。您可以使用PuTTYgen convert the private key

  1. 点击文件→加载私钥
  2. 如果密钥受密码保护,请输入密码。
  3. 点击转化→导出OpenSSH密钥
  4. 输入导出密钥的文件名(不要覆盖PPK文件),然后单击保存
  5. 退出PuTTYgen。
  6. 使用新密钥文件运行New-SSHSession

    $computer = 'neon.localdomain'
    $username = 'foo'
    $keyfile  = 'C:\path\to\priv_openssh.key'
    
    $sess = New-SSHSession -Computer $computer -Credential $username -Keyfile $keyfile
    

答案 1 :(得分:0)

现在可以在Linux上使用相同的方法。

ssh username@domain.com -p 22 -i C:\ Users \ user.ssh \ private_key_id_rsa

答案 2 :(得分:0)

![输入图片说明> / com

google.android

.apps.docs.storage

/ document / ac = 1; doc =已编码

= fsqjpfgiD4T3A RrffzMZw4PTYZT

6QpUPYqwksyw V + GU9 7GS B8X / YTY4WiUiption here](https://i.stack.imgur.com/eMNpU.png