Présentation d’une courte procédure permettant l’installation d’un serveur SSH via Powershell dans une machine cliente Windows 10, lors de l’écriture du billet la machine Windows 10 est en version 1809. La procédure peut également être accomplie manuellement via le menu « Ajouter une Fonctionnalité Facultative ».
Utilisez un shell administrateur pour procéder à l’installation, une fois celle ci faite vous trouverez dans la liste des services Windows « OpenSSH SSH Server », passez le en automatique pour pouvoir prendre la main en SSH au boot de votre Windows.
La commande ci-dessous vous permet de rechercher les paquets correspondants, à l’écriture du billet il s’agit de la version 0.0.1.0, à l’avenir pensez à vérifier que la version n’a pas évolué
Pour installer le client Open SSH
Pour installer le serveur Open SSH
Script de déploiement avec Powershell
$serviceName = 'OpenSSH SSH Server'
If (Get-Service $serviceName -ErrorAction SilentlyContinue) {
If ((Get-Service $serviceName).Status -eq 'Running') {
Restart-Service -Name "$serviceName"
Write-Host "Restarting $serviceName"
} Else {
Write-Host "$serviceName found, but it is not running."
Start-Service -Name "$serviceName"
}
} Else {
Write-Host "$serviceName not found Install en cours"
Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
}
#infos utilisateur pour connection ssh
$Password = "password"
$Utilisateur = "sshuser"
$group = "Administrateurs";
$password = ConvertTo-SecureString -String "$Password" -AsPlainText -Force
#Teste pour vérifier si l'utilisateur exist deja, si non je le cré
$op = Get-LocalUser | Where-Object {$_.Name -eq "$Utilisateur"}
if ( -not $op){
Write-Host "$Utilisateur not found creation en cours"
New-LocalUser "$Utilisateur" -Password $Password -FullName "$Utilisateur" -Description "System Account" | Out-Null
}
#Teste pour vérifier si l'utilisateur est membre du groupe administrateur
$groupObj =[ADSI]"WinNT://./$group,group"
$membersObj = @($groupObj.psbase.Invoke("Members"))
$members = ($membersObj | foreach {$_.GetType().InvokeMember("Name", 'GetProperty', $null, $_, $null)})
If ($members -contains $Utilisateur) {
Write-Host "$Utilisateur exists in the group $group"
} Else {
Write-Host "$Utilisateur not exists in the group $group"
Add-LocalGroupMember -Group "Administrateurs" -Member "$Utilisateur"
}