Getting Started using SSH with PowerShell

choubertsprojects

VPN offers!

1. NordVPN

2. Surfshark

3. ExpressVPN

SSH provides secure remote access to a system over an unsecured network. PowerShell makes the use of SSH more accessible and easier
to configure properly. This article will teach you how to set up your own personal key pair for SSH authentication, install PuTTY on Windows systems so that you can connect with public keys instead of passwords, and then show you how to use it all in order to run commands on another computer without having any prior knowledge about programming or networking at all.

The “powershell ssh to linux and run command” is a very basic tutorial on how to use SSH with PowerShell. This can be used to connect to Linux servers, or even Windows computers.

Getting Started using SSH with PowerShell

Once upon a time, the types of machines you could connect to using Windows PowerShell and PowerShell Remoting were restricted. Because PowerShell Remoting only supported the WsMan provider, you had no way of connecting to Linux-based PCs. However, in 2015, Microsoft added SSH support to Windows, opening up a world of possibilities and enabling PowerShell SSH for the first time.

In this post, we’ll look at how to set up Windows’ SSH client as well as how to use SSH with PowerShell Remoting.

The #PS7Now blog series continues with this article. At the bottom of this piece, you’ll find a list of all the other contributors to this series.

Before You Begin

This post will be an instructional walkthrough. If you plan on following along, make sure you have the following requirements:

  • Windows 10 – Windows 10 Build 1903 will be used in all cases. The remote Windows Server will be in the same domain as the sample.
  • PowerShell v6+ installed on Windows 10 — PowerShell 7 RC2 will be used in all cases.
  • The use of a remote SSH server — A Windows Server SSH system will be used in all of the examples. You may skip the server setup stages if you’re connected to a Linux system.
  • On the remote server, TCP port 22 is accessible.

Setup of the SSH Client (Windows 10)

To ensure that Windows 10 can connect to a remote SSH server, you’ll need to execute a few one-time activities before opening a PowerShell terminal.

Set the PATH environment variable to the OpenSSH Folder.

OpenSSH is pre-installed on Windows 10, however it may need some assistance when using PowerShell Remoting. If you’ve previously attempted to connect to a remote SSH system using Enter-PSSession and received the error below, make sure the path to the OpenSSH executable (ssh.exe) is in the PATH environment variable.

Enter-PSSession: There was an error that PowerShell couldn’t handle. It’s possible that a remote session has terminated.

To add the OpenSSH folder path to the PATH environment variable, go to the Start button, type advanced system settings into the search box, and then select View Advanced System Settings, as shown below.

Adding the path to the OpenSSH folderAdding the path to the OpenSSH folder

Click the Environment Variables button when the System Properties window appears.

Variables in the Environment in System PropertiesVariables in the Environment in System Properties

Select Path from the System variables section of the Environment Variables window and click Edit.

Environment Variables in the System VariablesEnvironment Variables in the System Variables

Click New in the Edit Environment Variable window, then type the location of the ssh.exe program. The path is C:Program FilesOpenSSH for this instruction, as indicated below. After entering the new value, click OK twice to preserve it.

Environment Variable EditingEnvironment Variable Editing

Select the SSH Subsystem from the drop-down menu.

You’ll now need to Select the SSH Subsystem from the drop-down menu. for PowerShell to call on when connecting via SSH on the remote Windows Server. If you don’t tell PowerShell what subsystem to use, you’ll inevitably get the following error:

PSSession-Enter: An error was reported by the background process, with the following message: The SSH client connection has terminated with the following error: subsystem request on channel 0 failed.

You won’t need to complete any of these procedures if you’re not connected to a Windows Server system.

Open the C:ProgramDatasshssh config file on the remote Windows Server. Scroll down to the ssh config file’s Override the no-subsystems default. section. The section will appear as seen in the image below.

Override the no-subsystems default.Override the no-subsystems default.

Add the PowerShell subsystem underneath the current Subsystem line with the following line:

pwsh.exe -sshs -NoLogo -NoProfile pwsh.exe -sshs -NoLogo -NoProfile pwsh.exe -sshs –

Now, on the remote Windows server, save the ssh config file and restart the sshd Windows service as indicated below.

Restart-Service | Get-Service -Name sshd

You should now be able to connect using PowerShell Remoting and SSH when the service has restarted.

Using PowerShell Remoting and SSH to connect

It’s time to put PowerShell Remoting to the test now that the setup is complete.

To begin, use the Enter-PSSession cmdlet to enter an interactive session. You will not utilize the ComputerName parameter, contrary to popular belief. Instead, the HostName argument will be used to indicate the remote machine.

WsMan is still used by default in PowerShell Remoting. Use the SSHTransport argument to indicate that you want to connect over SSH instead of the default.

You’ll need to establish an SSH private key when connecting for the first time using a username and password. You’ll be encouraged to do so, as seen below. Accept by typing ‘y’ when asked.

SSH Private Key CreationSSH Private Key Creation

You’ll be asked for the password of the person with whom you’re now signed in.

The Windows 10 client and Windows Server SSH server are both in the same Active Directory domain in this example. PowerShell Remoting will try to authenticate with the currently logged in user by default. You may also supply a different username and password using the Credential option.

You should now be at a familiar Prompt for Powershell Remoting after supplying the password.

Prompt for Powershell RemotingPrompt for Powershell Remoting

Exit the session now using exit, and then use New-PSSession. The Transport now shows up as SSH when using the same HostName and SSHTransport settings as previously.

You may still use WsMan as the transport protocol without utilizing the SSHTransport argument if you use the ComputerName parameter.

For SSH, you don’t need to use a username and password. Instead, you might utilize a private key file and provide the location using the KeyFilePath argument.

SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH SSH S

Don’t forget to use Get-PSSession | Remove-PSSession to close any open sessions!

Summary

You should now be able to utilize SSH with PowerShell Remoting on both Windows 10 and Windows Server. The only difference between using WsMan as a transport protocol and SSH once setup is a few of settings!

If you want to learn more about PowerShell with SSH, see the Microsoft reference article PowerShell Remoting over SSH.

Contributors to #PS7Now

This was part of a PowerShell 7 series by the outstanding contributors listed below. Check out what they’re up to on their blogs and read their postings!

Author Twitter Blog
Josh King @WindosNZ https://toastit.dev/
Bertram, Adam @adbertram https://adamtheautomator.com/
Jonathan Medd is a writer who lives in New York City @jonathanmedd  
Thomas Lee is a well-known author. @doctordns https://tfl09.blogspot.com/
Prateek Singh is an Indian businessman. @singhprateik https://ridicurious.com
Carroll, Dave @thedavecarroll https://powershell.anovelidea.org/
Dan Franciscus is a member of the Franciscus family. @dan franciscus https://winsysblog.com/
Hicks, Jeff @jeffhicks https://jdhitsolutions.com
Duffney, Josh @joshduffney http://duffney.io/
Mike Kanakos is a Greek-American businessman. @MikeKanakos https://www.networkadm.in/
Tommy Maynard is a musician who is well-known for his @thetommymaynard https://tommymaynard.com//

Contributors to #PS7Now

The “powershell ssh cmdlet” is a command-line tool that allows users to connect to a remote computer using SSH. The user can use the command to view and manage files, run commands, or even copy files back and forth between the computers.

Frequently Asked Questions

Does SSH come with PowerShell?

A: Yes, SSH does come with PowerShell.

Does PowerShell 5.1 support SSH?

A: PowerShell 5.1 does not support SSH by default and therefore is unable to connect via SSH as of this release. However, the feature has been added in a future update which will be released soon after its initial release.

How do I use PowerShell to remot?

A: PowerShell can be used to remotely manage the computer, which is referred to as remoting. There are many ways of using it, but you would need a Windows machine that has PowerShell installed on it and some sort of remote desktop software such as TeamViewer or LogMeIn.

Related Tags

  • powershell script to ssh and run commands
  • powershell ssh command with password
  • powershell ssh example
  • ssh powershell windows 10
  • powershell ssh client