Every once in a while I hear of Windows users trying to find a good SSH client for Windows to connect to their Linux boxes. For the longest time, a couple of the more popular choices have been Cygwin and Putty.
These still work today but I personally find the experience of both to be sub-optimal. There are lots of annoyances I find in each but the main thing they both lack is an integrated SSH experience in the shell console I use for everything else (mainly PowerShell) day in/day out. Cygwin and Putty run in separate console experiences. I just want to type 'ssh mwrock@blahblah' in my console of choice and have it work.
You Already Have the Software
Ok, maybe not...but it's very likely that if you are reading this and find yourself needing to SSH here and there, you also use Git. Well many are unaware that Git for windows bundles several Linux familiar tools. Many might use these in the git bash shell.
Friends Don't Let Friends Use the Git Bash Shell on Windows
Don't get me wrong here - I'm not anti-bash when I am on Linux. It's great. But I find tools like bash and Cygwin offer a "worst of both worlds" experience on Windows. You don't need to run in the bash window to access SSH. You just need to make a small modification to your path. Assuming git was installed to C:/Program Files/Git (the default location), just add C:/Program Files/Git/usr/bin to your path:
$new_path = "$env:PATH;C:/Program Files/Git/usr/bin" $env:PATH=$new_path [Environment]::SetEnvironmentVariable("path", $new_path, "Machine")
Bam! Now type 'ssh':
C:\dev\WinRM [psrp +1 ~1 -0 !]> ssh usage: ssh [-1246AaCfgKkMNnqsTtVvXxYy] [-b bind_address] [-c cipher_spec] [-D [bind_address:]port] [-E log_file] [-e escape_char] [-F configfile] [-I pkcs11] [-i identity_file] [-L [bind_address:]port:host:hostport] [-l login_name] [-m mac_spec] [-O ctl_cmd] [-o option] [-p port] [-Q cipher | cipher-auth | mac | kex | key] [-R [bind_address:]port:host:hostport] [-S ctl_path] [-W host:port] [-w local_tun[:remote_tun]] [user@]hostname [command] C:\dev\WinRM [psrp +1 ~1 -0 !]>
Don't Have Git?
Well, that's a problem easily solved. Just grab chocolatey if you don't have it already and install git:
iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1')) choco install git -params "/GitAndUnixToolsOnPath"
Note that the "GitAndUnixToolsOnPath " param sets the environment variable for you. You will need to open a new shell for git and ssh to be available in your console and then you are ready to SSH to your heart's content!