Windows, ssh-copy-id & Powershell

Quand on vient du monde Linux et qu'on administre ses serveurs, on met rapidement en place l'authentification via clé ssh.

L'une des commande les plus simple pour envoyer sa clé publique vers un serveur est la commande inclus dans OpenSSH :

ssh-copy-id

Exemple d'utilisation plus complète :

ssh-copy-id -i ~/.ssh/id_rsa.pub user@remote-host

Malheureusement sous Windows, cette commande n'est pas implémentée.

Il existe cependant une alternative grâce à Powershell et la bonne utilisation des pipes :

PS C:\Users\loic> Get-Content $env:USERPROFILE\.ssh\id_rsa.pub | ssh user@remote-host "cat >> .ssh/authorized_keys"

Explications :

  • Get-Content | ssh : connecte la sortie de la commande Get-Content à l'entrée de la commande ssh
  • Get-Content $env:USERPROFILE\.ssh\id_rsa.pub : lit le contenu du fichier id_rsa.pub(clé publique)
  • ssh user@remote-host "cat >> .ssh/authorized_keys" : injecte le contenu à la fin du fichier authorized_keys de l'hôte distant

source : https://chrisjhart.com/Windows-10-ssh-copy-id/