2017-09-24 11 views
0

J'ai généré une ssh paire de clés à l'aide puttygen et peut se connecter avec succès à mon serveur CentOS avec ma clé privée de mastic sur mon poste de travail Windows 10:Comment se connecter au serveur Linux en utilisant ssh avec une clé privée de PowerShell?

image of successful connection to CentOS

Je veux connecter au serveur à partir de Windows PowerShell et ont chargé le module Posh-SSH avec Install-Module posh-ssh

J'ai essayé de créer une nouvelle session ssh avec:

$Credential = Get-Credential 
$KeyFile = 'C:\Users\mark\Documents\ssh\privkey.ppk' 
$sesh = New-SSHSession -ComputerName neon.localdomain -Credential $credential -Keyfile $KeyFile 

Je mets le mot de passe root et blanc pour Get-Credential

Je reçois cette erreur:

New-SSHSession : Invalid private key file.

J'ai essayé de convertir le fichier privkey à une chaîne en lisant et la conversion en base64 mais je reçois le même erreur:

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

J'ai aussi essayé

$sesh = New-SSHSession -ComputerName neon.localdomain -Credential $credential -KeyString $privkeystring 

mais obtenir la même erreur.

Des idées sur la façon de se connecter à un serveur Linux en utilisant PowerShell avec un fichier de clé privée?

Répondre

2

New-SSHSession ne reconnaît pas le format de clé de PuTTY (malheureusement ni la galerie ni la page du projet ne le mentionnent, mais je l'ai trouvé dans un PowerShellMagazine article). Vous avez besoin de la clé privée au format OpenSSH. Vous pouvez convert the private key avec PuTTYgen:

  1. Cliquez Fichier → Charge clé privée.
  2. Entrez le mot de passe si la clé est protégée par mot de passe.
  3. Cliquez sur Conversions → Exporter la clé OpenSSH.
  4. Entrez le nom de fichier pour la clé exportée (ne remplacez PAS le fichier PPK) et cliquez sur Enregistrer.
  5. Quittez PuTTYgen.

Run New-SSHSession avec le nouveau fichier clé:

$computer = 'neon.localdomain' 
$username = 'foo' 
$keyfile = 'C:\path\to\priv_openssh.key' 

$sess = New-SSHSession -Computer $computer -Credential $username -Keyfile $keyfile