Tag Archives: PowerShell Programming language

PowerShell is a task automation and configuration management program from Microsoft, consisting of a command-line shell and the associated scripting language. Platforms are Windows PowerShell .NET Framework, Implementation language on C#.

PowerShell remoting over SSH Posh-SSH

As Microsoft announced, SSH will be supported by PowerShell Posh-SSH remoting in Windows 10

This is a third-party solution called Posh-SSH. To use SSH remoting in PowerShell, you must first install the Posh-SSH module from the PowerShell Gallery. It is required that Windows 10 is used, or that the Windows Management Framework 5 is installed.

Install-Module Posh-SSH

Posh SSH can be installed from PowerShell as follows as Administrator.

Install-Module Posh-SSH
Get-Command -Module Posh-SSH
New-SSHSession -ComputerName "" -Credential (Get-Credential)
Invoke-SSHCommand -Index 0 -Command "uname -a"

This makes it possible to execute commands on the Linux host and copy files.

PowerShell remoting over SSH - Posh-SSH

Posh-SSH is a PowerShell module for session remoting and automating tasks against the system using the SSH protocol (OpenSSH). The module supports only a subset of the capabilities defined in RFCs https://de.wikipedia.org/wiki/Secure_Shell.

PowerShell remoting over SSH

PowerShell remoting normally uses WinRM for connection negotiation and data transport. SSH is now available for Linux and Windows platforms and allows true multiplatform PowerShell remoting.

WinRM for PowerShell

WinRM provides a robust hosting model for PowerShell remote sessions. SSH-based remoting doesn’t currently support remote endpoint configuration and Just Enough Administration (JEA).

PowerShell SSH Posh-SSH remoting

SSH remoting lets you do basic PowerShell session remoting between Windows and Linux computers. SSH remoting creates a PowerShell host process on the target computer as an SSH subsystem. Eventually we’ll implement a general hosting model, similar to WinRM, to support endpoint configuration and JEA.

PowerShell SSH cmdlets

The New-PSSession, Enter-PSSession, and Invoke-Command cmdlets now have a new parameter set to support this new remoting connection.

To create a remote session, you specify the target computer with the HostName parameter and provide the user name with UserName. When running the cmdlets interactively, you’re prompted for a password. You can also use SSH key authentication using a private key file with the KeyFilePath parameter. Creating keys for SSH authentication varies by platform.

PowerShell 6 or higher, and SSH must be installed on all computers. Install both the SSH client (ssh.exe) and server (sshd.exe) so that you can remote to and from the computers. OpenSSH for Windows is now available in Windows 10 build 1809 and Windows Server 2019. For more information, see Manage Windows with OpenSSH. For Linux, install SSH, including sshd server, that’s appropriate for your platform. You also need to install PowerShell from GitHub to get the SSH remoting feature. The SSH server must be configured to create an SSH subsystem to host a PowerShell process on the remote computer. And, you must enable password or key-based authentication.