530 comments

[ 9.4 ms ] story [ 377 ms ] thread
Wow, took them what, 20 years?

But nevertheless I'm happy. Great job

Took them? Why should Windows come with an SSH client?
Why did they include it now?
From the article:

> For years, Apple MacBooks have been the go-to choice for many admins partly because getting to a ssh shell is so easy.

How else are you going to use your Azure server? :)
haha, never thought of this. But you're right! :)
(comment deleted)
I don't work for Microsoft, but my guess would be in order to securely access a shell. (Remotely, but srsh doesn't roll off the tongue)

Honestly though, I'm more interested in an SSH server for Windows. I haven't tried for many years, but last time I did, getting something more secure than telnet was a massive pain.

I run Cygwin sshd - I wouldn't expose it to the internet, but have no qualms about using it after hopping through a Linux box.
Yeah. My memory is fuzzy... I think I got to that step, but I couldn't figure out how to have it start with the machine without a bunch of hoops and caveats. But that was many years ago and I could be mixing it up with something else.
It's very simple these days - there's a script, `ssh-host-config`, which asks a number of questions (like whether you want user isolation for the service or not) and installs the service as native Windows service (using cygrunsrv).
I'm using this in production on a Windows Server 2016

https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win...

It works but I never managed to connect to it using public/private keys, only username and password.

Luckily I don't have to type them:

sshpass -f password.txt user@windows.host "powershell Stop-Computer"

It would be great if at least Windows Server came with a built in ssh server.

Why? If you're on Windows and managing Windows, you just use WinRM for a PowerShell session. Even then, though, most of the tools support RPC so your tools already communicate with remote systems.

"No SSH" doesn't mean "no remote management capability." SSH hasn't been available because you don't need it unless you need to manage a Linux system or a network device. The only reason it's being introduced now is because people like to use git, and git fucking sucks if you're not in a POSIX environment.

At the time I wanted to manage my only Windows box remotely, and from mobile devices that had nothing but ssh and vnc. (SSH being the clear winner there.)
For the same reason Windows came with a telnet client?
This.

Every router for the past 10 years has shipped with an SSH client. If you wanted to login to it securely from a Windows box, you had to download Putty first, or enable some janky self-signed web interface.

If one's necessities are not limited to an ssh client, Cygwin has been available for years, is free software, and has a very good integration with Windows (you have read/write access to the whole filesystem, for example, something presently cannot be done with win10 subsystem for Linux)
the WSL does have full access to the file system... cd /mnt/c/ gets you access to the C drive...
It can't work with network shares or non-ntfs volumes though.
you know, i just noticed this... my ExFAT SD Card is not visible... hmmm....
I think this is because WSL uses NTFS Alternate data streams to store linux file attributes, and they don't survive when a file is copied to a non-NTFS file system.
No, I don't think so. Alternate streams are only used inside the emulated Linux filesystem, not externally.
You may have to mount it manually.
This was true in previous versions, but with the Fall Creators Update you can mount mapped network drives inside of Linux:

  sudo mount -t drvfs z: /mnt/z
Now that's pretty cool. It even works for removable fat32 media!
I highly recommend MSYS2 over Cygwin (assuming WSL isn't an option). It's much faster and the package manager (pacman) is friendly.
According to the MSYS2 devs, MSYS2 is slightly slower than Cygwin, and it has a significantly different project objective, leading to much reduced command-line environment:

https://stackoverflow.com/a/25755481/3712 (MSYS2 dev)

As for whether it's slower, I expect there'd be very little difference but MSYS2 would be a tiny amount slower due to the extra conversion work.

https://github.com/msys2/msys2/wiki/How-does-MSYS2-differ-fr...

MSYS2 provies a minimal shell required to run autotools and other build systems which get the source for software from the Internet from different repositories, configure them and build them. The shell and core tools exist mainly to allow porting Unix programs to run natively on Windows (i.e. without requiring a POSIX emulation layer). MSYS2 doesn't try to duplicate Cygwin's efforts more than necessary, so the number of provided POSIX-emulated software is very small.

(I recommend Cygwin, I've been using it for 15 years or so, and have access to almost everything I've ever needed from Linux command line. The slowest thing is forking; emulating it in Win32 executables is not easy on NT kernel. MSYS2 doesn't fix that.

Also, apt-cyg is pretty decent for installing packages on Cygwin.)

Why "according to the MSYS2 devs" from 2014 though? Have you not tried MSYS2 yourself? I tried Cygwin a handful of years ago and it was worlds slower than MSYS, which I decided to use instead. I switched to MSYS2 a couple years ago or so, and it which hasn't felt any slower than MSYS. Cygwin took forever just to traverse a directory hierarchy. Has it has gotten an enormous speed boost since?
>Cygwin took forever just to traverse a directory hierarchy.

I'm going to recompile one of my sideprojects with MSYS2 today...

Let me know how it does compared to Cygwin!
I briefly had a look at MSYS2 several years ago but it was all oriented around Win32 compilation. For example, I wanted an ffmpeg build, but I needed it to understand Cygwin paths, while the MSYS2 instructions are for a Win32 executable rather than Cygwin executable.

Directory trees are indeed another thing that are not enormously fast in Cygwin, but how often do you do recursive listings of directory trees? I don't even do that often on Linux because it's not fast there either.

Specific example: `find` has several tricks up its sleeve that it thinks are fast (e.g. looking at link counts on directories to test for leaf directories), but emulating the APIs that it uses for these tricks are part of what makes it slow on Cygwin (Cygwin will need to count the directories to emulate the link count, which makes it O(n^2) rather than O(n)). You can use -noleaf to turn this off. But `find` does other stats that make it slow.

I use a script that wraps `cmd /c dir /b /s /a` (IIRC) and cygpath for the few scripts I have that do much recursive processing, but it's very rarely a big factor. My biggest directories are on my NAS which is Linux.

My single biggest performance problem - as in, almost debilitating on Cygwin - are poorly written Emacs plugins that do filesystem access in the status line update callback (e.g., Projectile). But they're easily monkeypatched when they crop up.

> but how often do you do recursive listings of directory trees

I mean, it affected enough scripts I was running that I noticed the slowdown plainly as daylight when I started using Cygwin. I'm surprised you don't notice it!

Ever since Windows 10 was released, you could download and install the OpenSSH client. It's great that Microsoft has actually built this in now (even if it is beta).
Does it include an SSH agent to replace Pageant? And preferably with WSL integration?
I haven't tried the os feature version, but I assume it is the same one you can install from chocolatey... If so, then yes, it has ssh-agent.
Great stuff, now windows malware can use ssh to infect Linux servers!
If SSH connectivity was a major reason why Windows malware couldn't propagate to Linux servers, we'd be in very deep shit already.
you miss the point that the right ssh keys will be used by default. currently malware would have to search for and use the keys by itself. now the servers will be on a gold platter, ready to be served
What makes you believe that? Is malware targeting putty common?
Well, no more than Heartbleed would allow Linux to infect Windows servers...
Ultimately this probably helps increase the overall internet security. Although in recent years it was available from a TLS secured source [0], the putty.org site (which might or might not be operated by the maintainers) is still not https secured. Given that probably tens or hundreds of thousands downloaded it from there (imagine, getting an SSH client from an unknown source!) I'm surprised not more happened. Other than that, thanks for the great work maintaining this project which helped me and others a great deal throughout my career. Countless times have I been stranded on a Windows server and quickly needed an SSH client.

[0]https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.ht...

Putty binaries are all signed, which is what you should be looking at when authenticating a release. Whether you fetch them over SSL is of little importance.
You are, of course, absolutely correct. And I hope this is what internal package maintainers in large companies and individuals using putty as their standard SSH client do. However, for many of us putty is a backup when they are not on their linux/osx machine and just quickly need an SSH client to do something. The workflow there is google->putty->first result->download->execute. You absolutely shouldn't, but we also shouldn't drink and sleep 8h a night :)
I put a copy of putty at a short but private url at my own domain so that I can get it over https.
That still allows an attacker to deliver you an older binary than you previously had installed — potentially one with major vulnerabilities.

Signing doesn't prevent downgrade attacks, HTTPS does.

You would also look at the version number when you check the signature...
The signature is automatically verified by the system — when you open the installer, it either shows "unknown developer" or "PuTTY team" in the UAC dialog. Which is easy to verify.

Do you know the version of PuTTY you have installed without checking?

How do you know the public key is correct?
The level of assurance you get with a signing key downloaded over HTTP and one downloaded over HTTPS is roughly equivalent. Sure, HTTPS gives you a degree of protection from MitM attacks, but it won't stop attackers (whether criminals or militaries) from hacking the web server and changing both the software and the signing keys---after all, if one is possible, so is the other.
Clearly we have different concepts of "roughly equivalent" :) One means everyone on your network can trivially serve you trojanized binaries, the other doesn't.
I think hacking a web server is a lot easier than hacking a network connection. Hacking web servers is well within the capabilities of your average vandal, while hacking network links in order to perform a MitM attack requires significant resources (e.g., those of a large criminal syndicate or an intelligence service, but I repeat myself).

Edited to add: ARP-spoofing the right LAN requires spearphishing and APT, which I think also require significant resources.

Sure, against a complete stranger the web server might be more vulnerable, but sometimes the attackers are already in our LANs :)

I was thinking more about employees, or students at universities, or such. I believe I've seen tools that ARP-spoof and then automatically detect downloads of ELF or PE files and trojanize them, all without requiring almost any knowledge from the attacker. I don't know if any of these tools detect Putty and fix its signature too, but it wouldn't be hard to do.

putty.org links to the official downloads nowadays
putty.org is owned by a competitor, Bitvise
I wonder if it has some "convenient" extensions to the ssh protocol that will only be available on Windows...

At least they can't afford intentional incompatibilities in this case.

I wonder if it has some "convenient" extensions to the ssh protocol that will only be available on Windows...

Does it, or is this FUD? The source code is available.

Unfortunately I am somewhat older and I am cursed with a very good memory. The behaviour I describe in the OP used to be the standard for Microsoft.

Feel free to audit the source code if you want, I'm not using Windows any more so I don't really care.

There is clear direction where MS heads. Can’t wait the moment when they will replace WSman over SSL to native SSH
"For years, Apple MacBooks have been the go-to choice for many admins partly because getting to a ssh shell is so easy."

I really can't believe somebody ever bought a MacBook because they found installing putty too much of hassle.

Admins can not install stuff , it's quite known /s
Admins cannot install stuff? Then who can? :)
I guess the /s was not clear to indicate my attempt at humour :)
ah no, /s was unknown to me; also hard to google, what does it stand for example? /serious?
It's not only about this, you needed to install more and more things every year in windows for it to work. You needed to install Cygwin, a proper terminal (cmd.exe isn't exactly usable), python libraries, Putty, now Docker... Not to mention that since developers are only using Linux and Mac, you will have libraries which does not work on windows (because nobody even tried).
> You needed to install Cygwin

Just install Ubuntu Shell.

Also, it's not like you don't need to install iTerm, zsh, docker, python libraries etc on mac. It's not like it comes with them by default. Your argument is kind of moot.

A good terminal and python are both standard with OSX. Though I agree having homebrew does make life easier. Don't think Windows has an equivalent...
Perhaps it was more the underlying compiler tool chain. With the compilers included in MacOS you can install nearly anything.
That's an interesting point.

Mabye Homebrew, and its predecessors, were the real killer apps for mac?

You do not need to install iTerm and zsh; Terminal.app and bash will do the job just fine, alternate terminal and shell are just preferences.

cmd.exe and conhost.exe won't do the job.

Also zsh is pre-installed with the latest few versions of OS X anyway.
In addition to all the typical Bash tools, you also have C/C++/Objective-C, Apache, PHP, Ruby, Perl, Python, SQLite, and Apache.

Maybe I just don't remember installing it, but I think macs have zsh out-of-the-box too.

For PHP, MySQL and Apache on Windows I just unzip three different zip files and and then add some standard configuration. Done.
> cmd.exe isn't exactly usable

Depends, for the occasional deep into CLI world to run a script, is quite ok.

Granted, the defaults regarding mouse copy-paste and window size were only improved on Windows 10.

> Not to mention that since developers are only using Linux and Mac, you will have libraries which does not work on windows (because nobody even tried).

Not all developers are pure UNIX devs doing POSIXy stuff.

I agree - cmd.exe is quite usable, especially considering it's (almost) always available no matter what machine you use.

Why they're trying to replace it with Powershell rather than improving cmd.exe is silly, however.

I happen to like Powershell's idea, as it is the closest to the REPL experience on Xerox PARC inspired systems, we get to have on mainstream environments, by using objects and having access to the full set OS APIs on the scripting prompt.

However I do think it could have been made less verbose and dislike the ps1 extension, as the 1 (one) does not make sense.

Powershell has short default aliases for its verbose builtins, and most parameters have short versions as well.

For instance, "%" is an alias for ForEach-Object, "ls" for Get-ChildItem, etc. And you can of course define your own.

True, I was just speaking in general.
Verbosity is something I tend to reserve for scripts (which should not rely on certain aliases existing). In the shell code I write approaches golfing idioms (perhaps inspired by the fact that I learned PowerShell by golfing in it). I think they've done a good job of having the verbose things readable and understandable, while also being able to shorten parameters as long as they remain unambiguous (and offering short aliases for cmdlets that are used all the time).
I heard they wanted to use the ps extension but that has long been used for PostScript, and though very few Windows users use PostScript files directly they still didn't want to step on those toes. Particularly, they were very cautious about using anything that looked like an existing file extension because they didn't want it to be an easy vector for malware to confuse users. ps1 doesn't step on any toes, at least, and looks weird enough to an average computer user that they might hesitate to double click one.
Might be, I would have prefered something like psh, but it is just nitpicking anyway.
You'd better believe that if Windows had an acceptable terminal 10 years ago I would have never purchased my first MacBook.

The pleasant interaction with other *nix systems was and is a primary driver for my choice of OS X.

PuTTy sucks. Every other terminal I have tried on Windows sucks. Getting terminal-based software to work on Windows sucks. I stopped trying years ago because a terminal on OS X doesn't suck. It might not be a perfect 10, but I'm happy with it.

I'm also more interested in Windows more and more as time passes.

Losing as the most popular OS has made Microsoft start doing some of the right things.

> PuTTy sucks

Never been a problem for me. What are your complaints?

I barely notice the difference, but if I had to choose I'd take putty over Terminal.app, which has default keyboard-shortcuts that clash with Bash. (I believe it was Alt-b, Alt-d, or maybe Alt-f. I forget exactly.)

It's one of those things that's hard to explain. If you're used to a proper terminal emulator, you'll know immediately. PuTTy has terrible configuration and awkward default settings, and gives the impression of being pretty flimsy. Remove the network cable while in an SSH session, and PuTTy will immediately disconnect you. Try doing a port forward, and you'll need to dig around instead of just typing it into a terminal. Also aesthetically, PuTTy has nothing on Terminal.app or iTerm2 etc.
> Remove the network cable while in an SSH session, and PuTTy will immediately disconnect you.

But it's not a problem with PuTTY, it's a problem with Windows networking subsystem. Once you remove cable, the whole interface immediately goes down, IP address gets deconfigured, and all open sockets using the address get closed. (I was bitten in the ass by this when I had several Windows Server machines under my care.)

You'll get exactly the same with any other long running TCP connection.

But it still stands that using PuTTY sucks. I'll gladly give you that many of the reasons it gives a bad experience are because of various Windows characteristics.
This is so true. Another attemp to explain might be: The cmd.exe and PuTTy always feel like foreign bodies in the windows world, they don't integrate, they are an rough try to fill the gap between the "old" command line world and the "new" windows world (in the win95 language). In contrast, already the OS X terminal feels like a first class citizen in the environment.

It is worth to emphasize what has been said before here: Since Windows popularity is decending, they start to catch up with that attitude. Nowadays, for instance, you can open the terminal from every folder in explorer.exe -- this is exactly this kind of integration Windows missed for 20 years. Once they kick out cmd.exe in favour of something like Console2 (https://www.hanselman.com/blog/Console2ABetterWindowsCommand...) and update the toolchain even more than they did with PowerShell (actually integrating GNU/bash was a major step), developers will come back.

Mobaxterm is the shell Windows should have had.
If it didn't come with so much unrelated crap that could be installed independently I'd largely agree. But it takes this "... and the kitchen sink..." approach that detracts from it quite a lot. Want to install PostgreSQL running in Cygwin? Look no farther than your terminal software to do the work for you... blech.

I say all of this having been a paying MobaXterm customer in the past.

These days I use ConEmu, WSL, and Bitvise (for those rare occasions I want to easily tunnel to the Windows side).

Who doesn't use tmux or screen, anyway? Always safe from network issues and all the benefits of multi-tasking.
Well, of course, and tmux is another thing that makes PuTTY janky. I'd rather not dumb down my tmux layout to something that PuTTY's terminal emulator can understand, when Git Bash running its bundled ssh handles it just fine.
I use tmux inside PuTTY every day. Of what jankiness do you speak?
nix user going on 25 years here. I use WinSCP and PuTTY to all the time and they work just fine.

> Remove the network cable while in an SSH session...

This argument seems a bit contrived. Is this honestly something you're concerned with on a daily basis? I doubt it.

> Try doing a port forward, and you'll need to dig around instead of just typing it into a terminal.

No, you don't just type "it" into a terminal. First, you have to lookup the command syntax if you haven't used it in a while. Then you have to type it in correctly and if your syntax is off by even one character, things don't work.

> Also aesthetically, PuTTy has nothing on Terminal.app or iTerm2 etc.

Aesthetics are nice but do you even have a tool like WinSCP? It graphically displays the remote filesystem over your SSH connection and then lets you open a terminal to the path you were looking at. I don't even have to type my password when I open a new terminal from WinSCP.

Same.

I like Putty's graphical session manager; on OSX and Linux I don't want to fiddle with ~/.ssh/config.

The lock-in with Putty is annoying though, being able to export all configured sessions to a .ssh/config file would be awesome.

It's all in the registry. I forget where, but search for the hostname or ip of one of your configs in regedit (CAVEAT EMPTOR!!!!) and export the whole folder with all the configs in. You'll get a .reg file (or whatever it is) that you can double click on any other windows machine and your settings will get ported over. Paths to key files are preserved verbatim.

Again CAVEAT EMPTOR (as with anything to do with regedit).

All of the sessions are stored in the registry, which you can dump to a text file easily enough. A couple of minutes with awk or something and you'd have your ssh_config file.
As a counterpoint, I LOVE the whole ~/.ssh directory. It keeps everything in one place, is text-editable, is cross-platform between Mac and Linux, and easily transferred to new machines, or restored to existing ones after a fresh reinstall.

With Putty, if I want to change, say, the size of the terminal opened on connections, I'd have to update every Putty session individually. Been there; done that. Ridiculous. That should be a function of the terminal you run SSH under, not the SSH session itself.

The config all lives in HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY. You can export it all via regedit or: reg export HKEY_CURRENT_USER\SOFTWARE\SimonTatham\PuTTY PuttyConnections.reg

It is definitely a lot messier than working with ssh_config.

There are versions of PuTTY that store the config in files, usually with names like Porta-PuTTY. I use the hacked up Xming Portable Putty because I do a lot of X forwarding and the base PuTTY used to have some stability issues with it. They're probably fixed now, but I still use the hacked up PuTTY because my configs are in the text files instead of the Registry and regular PuTTY doesn't know about them.
> with names like Porta-PuTTY

Okay, I think I just found a new contender with GIMP for 'worst software title'...

For one, it's plainly impossible to use an existing OpenSSH private key with PuTTY. You can convert PuTTY keys to the OpenSSH format with putty-keygen (or what it's called), but not the other way around. This antifeature alone cost me two hours recently.
If I remember correctly it was possible before, is this something new?
I found the Putty .exe wasn't signed by the developer. This was a few years ago so maybe things are different now.
Text rendering is bad (and is generally unpleasant to look at), it forces UI interactions, it's not a terminal so I can't do anything locally, no tabs, IIRC text doesn't reflow on window resize.

It's generally difficult and awkward to work with and unpleasant to look at.

Text rendering (old problem) and high DPI scaling (new problem) are what keep me firmly planted in macOS land.
I quite like PuTTy as well. I have only had problems when using gdb or jdb - it doesn't translate arrows properly so history or editing current command doesn't work and some apostrophes or ticks or whatever get translated to accented characters. I always blamed the shitshow of unix tty for that. Is there an ssh client/terminal that doesn't have these problems?
PuTTY on Windows does all of those things perfectly reasonably for me (I just checked) - it might be as easy as making sure your PuTTY environment defaults to UTF-8 instead of ISO-8859-1 or various codepages.
To add to the other problems that people have mentioned, text selection is a little strange and putty doesn't pass along keys like "End" for some reason, which is useful in tools like less.

If you use git on Windows with PuTTY/plink it's also significantly slower than OpenSSH. I saw clones of a large repository go from 60 KB/s to 600 KB/s after switching from PuTTY to OpenSSH.

Wrt less: Assuming End just goes to the bottom of the document (I'm away from my computer so I can't check), G does the same thing
Is anyone really using Terminal.app? Once I tried iTerm2 I never launched it again.
Been a while since I've used a Mac, but I seem to remember that at one time, Terminal.app lacked tabs, but they were added in a later version of the OS.

What are the killer features of iTerm2?

With PuTTy you have to open a separate application and configure connection in a completely different manner. Compared to Linux/OSX which enables a "work in a terminal" model, where "ssh", "scp", etc. are commands that can be used from within an existing terminal. It feels like a completely separate tool from the terminal instead of integrated with the terminal. I think this is a similar argument that users of text-based-editors (vim, emacs) have over using GUI-based editors.
I'm a Linux guy myself, but whenever I see colleagues use a terminal on Mac OS or Windows, the amount of little annoyances on Windows really sticks out. It's nothing major (hard to configure colour schemes, awkward copy/paste operations, PuTTY), but it compounds to an unpleasant experience.
Also lack of fullscreen support (pre-windows 10), no history and it seems that command line was just a joke for MS for the longest time.

I think it's the explosion of open source and the corresponding command line tools that they started investing some time and effort to the command line.

Honestly, I think the biggest driver is the type of developers you find now. With Open-Source being such a large area for almost every CS student and budding developer - the normal work environment is becoming very Linux-heavy.

A natural result is now the Devs working at Microsoft ALSO wish they could use the command line for everything in Windows. Thus Powershell, and things like AZ CLI becoming much better.

Check out MobaXterm ( https://mobaxterm.mobatek.net/ ), it's the best terminal for windows I ever tried. Have a really handy list for remote connections, an X server, sftp browser for connected servers, Linux Subsystem fro Windows support, and a lot of other useful features. (I am not connected in any way to the developers)
Personally, I'd suggested cmder[0]. It's much more light-weight than MobaXterm and doesn't require installation.

[0] http://cmder.net/

I've been a cmder user for years and love it... but AFAIK it doesn't have an SSH client built in?
See above - Windows does now! (and it already did if you were using WSL)
Ah, right, I see what you mean!
MobaXTerm doesn't require "installation", there's a portable version as well.
Not that I have anything against MacBooks, but was installing some Linux distro (or a BSD) not an option?
Of course it is, but even with all advances in terms of UI in Linux distros, many people still prefer the MacOS/Windows GUI and ecosystems, or just like Apple hardware more.

Macs historically have always been a decent compromise for having decent GUI/Linux-like terminal/nice hardware.

It's kind of a different environment now, with PC manufacturers coming up with well designed laptops and Windows offering more Linux integration.

Personally the most annoying thing is the little UI inconsistencies like clipboard handling. In a mac it is always Command-C/Command-V - in X sometimes it is Ctrl+C/Ctrl+V, Ctrl+Ins/Shit+Ins, mouse-select/mouse-middle-click and so on. Many applications have incompatible clipboards.
Well, Terminal.app also has mouse-select/mouse-middle-click, which is a separate clipbard (from Cm-C/Cm-V) as well
I did not know this one but always rated the builtin terminal app very low. ITerm2 seems to be a better mac citizen.
The reason for the confusion is that there are two separate clipboards: one for Ctrl-C/Ctrl-V and one for mouse-select/mouse-middle-click. To use the first clipboard on terminal emulators you need to use Ctrl-Shift-C/Ctrl-Shift-V instead because the Ctrl-* shortcuts have legacy meanings in the terminal. I don't remember ever needing to use Insert for copy pasting (although you can use it if you want).

I don't know what examples you had in mind when you mentioned applications having incompatible keyboards. The only one I know that does that is Vim (which by default uses the internal clipboard when you use its cut, copy and paste commands) but Vim is definitely not your average Linux application...

Because the Linux desktop sucks. (that's the word of the day)

If I had a Linux laptop, an extraordinary amount of my time would be spent trying to make it work. Wireless breaks, sound breaks, upgrades break everything. I would have to spend a serious amount of time and research finding a laptop that had good Linux support... regardless I would still probably have to spend hours trying to get the sound or the wireless or sleep or some feature or another to work properly.

OS X just gets out of the way. I have never had to put any work into making the graphics card work or making sound work or making the network work or fixing boot... you get the picture.

If I'm using Linux on a laptop to do any sort of work, a sizable portion of the work becomes keeping Linux working on the laptop and I don't want that.

linux desktop does not suck.

Linux on unsupported laptops (which is most of them) sucks big time, but not linux desktop itself. It works great on standard desktop computers (towers)

you should make that distinction, because otherwise you'll just start a flame war.

I tend to disagree. Yes it works but I find it unpleasent to use. None of the available desktops is pleasant to use, especially fonts and symbols often look much worse than Windows or MacOS. As much as I like Linux on servers, I don't see any reason to use it with a graphic interface.
When was the last time you used Linux on a Desktop?
Almost every time I hear this complaint it was years ago and with one distro. There is so much more than Ubuntu out there people (Ubuntu sucks IMHO).

One thing I've learned is distrohopping is a must if your hardware is an edge case... that said, since moving to Manjaro, I haven't had to use anything else.

~10 months ago. Looking at screenshots on their website I still don't like it. But maybe that's just because I grew up with Windows (although I do like how macOS looks). Think it's very much a taste thing. Most of what I do is browser based (incl. IDE) anyway so the OS doesn't really matter anymore.
I've recently gotten a new laptop, and everything is supported out of the box in Debian. It has a 2160x1440 screen, and the hidpi support with gnome on Wayland is outstanding. I would say that the fonts and symbols look on par with the new MacBook pro (I was using my new computer side by side with a new model MacBook pro).

The Linux desktop has come a long way, even in just the last year or two. I know everyone always says that, so take it with a grain of salt, but I have never been happier with the state of the Linux desktop.

Interesting. Personally, I find Windows quite unpleasant to use, even basic window management is a hassle (just an example: you have to target very small hit boxes for simple things like resizing and moving windows around, and default keyboard shortcuts are not configurable). As to fonts, many if not most custom fonts you see more and more on websites look quite odd, and sometimes simply bad with Windows' font hinting (I do agree the built-in fonts work nicely, but so do fonts on certain Linux systems as well, and have done so for at least a decade since Canonical merged certain patches to their Ubuntu's version of freetype).

Might it be that we tend to like what we're used to? When I jumped from WinXP to a Gnome2-desktop, I tried to make it a bit more like WinXP, even though these days I would probably want nothing of how WinXP desktop is laid about.

Windows 10 is the exception by the way, the hotkeys for windows management are wonderfully executed — and, well thought out. Worth giving it a try.
Head on over to /r/unixporn for some inspiration on gui aesthetics. It's not hard to make it look great.
I am using Manjaro with KDE Plasma desktop, and IMO it's the best linux desktop i've ever tried. And the best part is, you can customize it yourself.
I'm pretty sure that I've spent less time maintaining my laptop than my colleagues who are on OS X. That obviously isn't the case for every laptop, but I don't think that your statements generalize well either.
...meh, just limit yourself to the tops of the lines like Thinkpad, XPSs etc., make sure any networking components are branded Intel, pick Intel CPUs' integrated graphics or not-low-end Nvidia, and everything will just work fine out of the box with an LTS Ubuntu or latest Fedora (basically pick whatever's closest to what you use on your servers).

But yeah, if you buy anything that's not part of the "top of the line developer notebook" category, specifically the Intel not AMD ones, then almost nothing will work out of the box :)

It is worth reminding that lower-end laptops are also a bit of a gamble if you try to use Windows on them
Linux Mint worked perfectly on my T420, and I expect it to work perfectly on the T440 I'm picking up today to replace it.

Sure, not the very newest hardware, but it's not like laptops have gotten significantly more powerful for anything that actually matters, for the last couple of years.

Oh, they did more powerful, just in departments you don't pay attention to.

The biggie is the GPU. T420 has no oomph to run an external 4K display (at more than 24 Hz, i.e. in usable mode). Broadwell and newer do have the capability to run 2 of them.

The CPUs got less power-hungry. You can do the same work with less juice, so your battery lasts longer.

The SSDs with the new interfaces got much faster. There is simply no comparison between M.2 nvme drive and SATA3 SSD.

Sadly, wifi took a step back, with almost universal unavailability of anything better than 2x2 MIMO 802.11ac. In the past, MIMO 3x3 used to be available (Broadcom, but the option was there).

So yes, modern laptop is significantly different experience than few years old one, despite the CPU having the same GHz.

That's not my point.

My point is that they're not noticeably faster for the things most people use their computers for. They still run browsers, Spotify, email, word processors and all of that just fine and last "long enough" on a charge.

The improvements have been incredibly marginal for most people.

The difference is noticable, the modern laptops are subjectively perceived by users as faster, even if they have slower CPUs.

Also, they do not have a problem with Electron apps. for most people, they are just apps like anythig else, and do not perceive any performance problems with them.

That is mostly due to SSDs, which can also be fitted perfectly well to older laptops, SATA has been standard for a long time now.

And where did Electron apps come into the discussion?

The difference between NVME SSD and SATA SSD is like between classic HDD and SATA SSD. It has to; NVME can push 4GBps, SATA3 only 600MBps.

Even the Apple 2015 M.2 drives, which are "only" AHCI, but with much deeper queue (i.e. nonstandard), can do 1.something GBps and the difference compared to standard SATA SSD is noticable by normal users.

Electron apps are something normal people use and some of them compain about the speed/lag/memory usage. Usually those with older computers, who think nothing changed in the last years ;).

But for most people, that speed difference is purely academic, and doesn't actually benefit them. Sure, if you're compiling stuff or otherwise moving around a lot of data, it matters. But for most people, it's just some numbers on a spec sheet.
If you do not perceive a difference between HDD and SATA SDD, then you won't perceive the difference between SATA and NVME SSD either, that true.

If you do the first, you will do also the second. It makes a difference even when launching Excel or Firefox.

There is a definite difference between old-fashioned spinning rust and SSD.

Between SATA SSD and PCIe? Sure, for extremely IO-heavy tasks there's a difference to be felt, but not really in everyday use.

I put Ubuntu (Mate) on an old Macbook of mine because it was absolutely crawling with MacOs on it. The only driver it needed was a Wifi driver. Everything else worked fine out of the box.

Also, I run an Intel Nuc (laptop hardware, essentially) with Ubuntu as a main development machine. 0 problems. 0% in the way.

OSX is great, don't get me wrong. But, it's been years since I've ran into driver problems with desktop Linux.

"Sucks" is subjective; you're allowed to think that.

In years past you may have spent hours getting wireless or sound working. These days, if you buy decent, mainstream hardware it just works. Ubuntu does a great job of getting out of the way.

I'm a Fedora guy, myself, but find myself recommending Xubuntu to more and more people for casual computing because 1) it really does just work, and 2) Xfce is lightweight and lets you use your CPU for doing real work vs. holding up a bloated windows manager.

> If I had a Linux laptop, an extraordinary amount of my time would be spent trying to make it work. Wireless breaks, sound breaks, upgrades break everything.

At our office, the macOS laptops tend to have the most problems with sound & graphics; the Linux desktops, OTOH, Just Work™. I find that pretty funny, actually, because I would have expected it to be the other way around.

The most problems I ever had with Wifi was a mac machine (rMBP13). In the office, usually during RDP sessions, it often lost the connection and couldn't reconnect until reboot.

I've never had anything similar happen with a PC (we use Thinkpads), whether running Linux or Windows.

My Mac problem was solved using ethernet adapter.

Just to be clear, if a Macbook works better for you or if you just prefer macOS, by all means, go ahead. Macbooks, from what I hear, must be superb machines, and while I prefer Linux with a Mate or XFCE desktop, I have used a Mac for a while and there are things I do miss. And a lot of software is available for Windows and Mac only; given the choice between Windows and macOS, I wouldn't have to think long.

I hear that argument frequently. On macOS (or even Windows) things just work(tm), while on Linux (or some BSD), there is always something that does not work correctly.

I guess I must be quite lucky. A long time ago, I positively enjoyed spending an entire weekend getting a sound card to work or something. To be honest, these days I consider myself too old for that stuff. I, too, like it when things just work. But really, Linux as a desktop system has come a long way, and for the past couple of years, things have pretty much just worked(tm) for me.

Picking hardware that is supported by Linux takes a little care, so does picking a distro[1], especially with laptops. But I prefer to do a little research before buying a laptop anyway, because I am usually on a budget.

[1] In my experience, the more recent the hardware, the more unlikely Debian is to work. OpenSuse has worked well for me, though.

If you want to get some work done, and not just fiddle around with getting wifi, sleep, graphics working, then installing Linux is not an option.

Linux could be the new Mac os X if all the Linux distributions chose to focus on one platform and way to do things, but nobody in the Linux world is going to do this.

Also, Mac has unified hardware, so they pretty much can optimize so that stuff Just Works.

You can buy a laptop that ships with Linux, and then you get the same works-out-of-the-box experience as a Mac.

The Dell XPS 13 is a good choice if you want something from a major manufacturer, but there are loads of smaller companies, too.

Thanks for the tip. Might consider that in the future. Probably not though, as mac OS is such a better OS. But the hacker in me still kinda likes the idea of Linux, used to run it as my main OS for long time before Mac Os X.
I haven't had any trouble with Linux desktop on mainstream laptops for the past 15 or so years. The days of hand tweaking your Xfree86 configuration files and refresh rates are gone.

Of course there are things that are not working so nicely, and are not meant to. For instance, running RHEL (which is a server OS) on a laptop (which typically has new optimized hardware which is not meant to be server) and then expecting graphics and WiFi work on a kernel that is much older than your hardware and thus has no drivers.

Perhaps you might expect some trouble also when running Windows Server 2012 on a new laptop? I don't know, I haven't tried, but wouldn't be surprised.

> I haven't had any trouble with Linux desktop on mainstream laptops for the past 15 or so years.

And so therefore, no one else has either!

One of the big reasons Linux Desktop still sucks is the outright refusal of the community to acknowledge any of its problems.

I haven't had any trouble with Linux desktop on mainstream laptops for the past 15 or so years.

How do you define "mainstream laptop"? Or is it a laptop that can run desktop Linux without problems?

That resolves that issue, but has its own downsides.

There’s a lot of things I like about macOS [eg: better power management], but the main reason I switched was because it was a Unix I could put Photoshop and InDesign onto.

Well, if you need certain applications that are not available on Linux, all the hardware support in the world does not help you.

That argument trumps pretty much everything else. If my boss came into my office today and told me to switch all of our desktop computers to Linux, as much as I would enjoy that, I would have to tell him that it cannot be done, because we use a lot of software that just is not available for Linux. (And a fair amount of it is not even available for macOS.)

Not to forget iTerm 2 on macOS is amazing. I find it much more pleasurable to use than the default Terminal.app
Because *nix kernels provide terminal devices, making a new terminal program is relatively easy on OS X compared to Windows where a lot of the free things have to be written in userspace.

I usually use iTerm2 as well.

I try it every few years, but always seem to end up going back to plain Terminal.app. The main issue is speed and memory usage— iTerm2 seems to be much slower and laggier, especially on a busy laptop (running VMs).
The big problem is the filesystem is still vastly different.

The web, Unix, Linux, OSX, pretty much everything other than Microsoft uses properly namespace driven forward-slash separated paths with no drives and case sensitivity.

That you can't fix, merely abstract it away. I am tired of mapping between the two.

   scp myfile.txt winmachine:/d/Users/Whoever/Documents/Projects/X/File.txt
Then I cut and paste. Oh no wait I can't. Now I have to replace all the /'s with \'s and d with d:...

Or

   scp myfile.txt linmachine:/home/whoever/documents/projects/x/file.txt
I'm done and moved over the fence. \ means escape. / means path separator. No \\ problems either.
Totally agreed, I always use slash, and never use backslash, because I'm a 20 year nix user, and: powershell doesn't care. try it.
Powershell doesn't but not everything is powershell. Win32 underneath pokes its head out occasionally. And I don't want to use powershell. It's horrid in so many ways.

I'm a Unix user since about '93 for ref as well. I am poisoned with forward slashes everywhere :)

That makes sense: I don't do anything on Windows command line that isn't powershell. Give it a chance: install PSCX, openssh, and conemu, configure your emacs keybindings, steal my profile (https://github.com/mikemaccana/powershell-profile) and learn, at minimum, 'where', 'get-member' and 'select' before you make your mind up on anything.
MS-DOS (and Windows) have supported forward slashes as path separators since PC-DOS 2.0, despite defaulting to backslash. Anywhere where the forward slash isn't supported is a bug either in Windows or (more likely) in the app that won't accept them.
I use forward slashes a lot on Windows but tab completion in cmd.exe only works with backslashes.
Yeah, that's a shortcoming with cmd.exe. At least PowerShell will switch slashes to whichever is default for the platform, but I doubt that supporting fore-slash tab completion in cmd.exe would be able to crawl out of the -100pt hole.
> And I don't want to use powershell. It's horrid in so many ways.

Name one that isn't just "Bourne Shell does it different".

OS X’s filesystem isn’t case sensitive by default.
I've recently discovered cmder and it actually makes Windoze bearable to use. Of course I would never give up Linux if it were my own choice, buy work is work. So they've got an SSH client at last, but still no decent terminal, I suppose.

I think the question is not whether someone would buy a MacBook because it has these tools built in but rather, why would someone buy Windoze given that it doesn't have these tools built in?

I really like the Windows 10 OpenSUSE terminal. Just install it from the Windows Store. OR you could install the Ubuntu Terminal. Either way they have replaced cmder for me.
One thing you need to be careful with regarding WSL is that it still doesn't correctly handle umask[0].

There are some workarounds if you use particular terminals (for instance you can't use Mobaxterm as it forces 777 regardless) but it's not exactly 'it just works' yet.

[0] https://github.com/Microsoft/WSL/issues/352

That mobaxterm 777 bite me bad one time.
Primary reason I'm on OSX is due to working 100% Linux servers. The hardware of a MBP is unbeatable to me.
Can't agree more. This was also what made me to buy my first Mac: the fact I have a natively supported terminal (that's blazingly fast), with ssh client (and server too, whenever I need it), with shell that's not some kind of ugly hack (geez, CygWin nightmares) and BSD userland tools at my fingertips is the quality no computer/OS maker can deliver up till today, so despite being displeased with some recent design choices (I love my 'old school' Mac keyboard, I love my MagSafe adapter, I love my 2015 MBPR ports and form factor, thank you) I keep buying Macs.
Try Cygiwin + ConEmu + MinTTY . It was I used when I was force to work on Windows to get a decent shell & terminal.
> Losing as the most popular OS has made Microsoft start doing some of the right things.

While Microsoft has started doing good things which I can agree on, when did they lose OS market share to the point of not being number one? If we're talking about Apple hardware outselling any one vendor, that's true, but there's volume. Also, one of the first things I did after getting my MacBook Pro (and others I know who don't want to leverage VMs/Parallels. I like Windows and OSX being separate from a context point of view) was dual boot Windows.

Likely a reference to this view of the OS war: https://en.wikipedia.org/wiki/Usage_share_of_operating_syste...

Android is first by a large margin. iOS almost outnumbers Windows as well.

Microsoft post iPhone needs to prove that it's worth using a desktop at all, not that they deserve to have the highest share of desktop users. Stopping the bleeding inflicted by Macs, which sync so well with iOS, is part of that.

Desktops and laptops have lost much ground to phones and tablets. There was a time where comparing a desktop to a phone was silly, that time has passed.

The number of people using Windows to do their "computer things" has gone down dramatically. Even if they have a Windows computer, much of the time spent doing computer things has moved to Android and iOS.

> PuTTy sucks

PuTTy is amazing, and my experience of using windows over the years would have been far worse without it.

However I do understand the point - compared to using a real terminal, it does indeed suck to be stuck on windows using PuTTy

For a terminal on windows, I have now taken to install cygwin, X on cygwin, and then xfce-terminal on top. It's not perfect either, but it is better.

This. 10 times this. I moved to MacOS 10.3 in 2004 because the things I did professionally were almost all in Linux (which I had been running in the data center literally since 1994), and MacOS felt and acted like Linux with a nice GUI. I lived most of my life in Terminal and rarely noticed the difference between when I was ssh'd in to a server or working locally. Awesome stuff.

I doubt Windows 10's inclusion of ssh alone addresses this use case; for that you'd want a full cygwin or something. I don't know anymore - I don't use Windows for any purpose other than games on dedicated gaming computers these days. Despite Apple going backwards with each successive macOS release (probably since 10.8) it's still a much more usable OS for the majority of the things I do than Windows 10. I do like Windows 10 better than Vista and 7, though, on my current gaming computer.

Bitvise SSH Client is the best one on Windows that I have ever tried. I agree - using Putty sucks massively.
Maybe not, but having used both Putty and ssh (Linux) for many years, I'm so happy I don't have to run Putty again. I stopped using it at the end of 2008 when I reformatted my work laptop to Ubuntu. Not only Putty is a worse terminal than gnome-terminal but the key management was insane.
I can. Putty sucks. For a decent key management you need cmder + keypass, and i doubt people want to waste the time i did to experiment until they arrive to such conclusion.
I have a Win10 XPS13 after 15 years of OSX. And Putty is bad. Not the ssh, but the tool support. And it's not only SSH but the missing shell. I currently use Ubuntu on Win10 just to use a proper shell with ssh.

And of course my next computer will be a MacBook again.

It's not installing PuTTY, it's using it.

Normally you have a fully-fledged programming language that sometimes runs a command being SSH client, and universal one at that (you can pipe data through it, you can pipe data out of it, you can run remote commands non-interactively with it, you can jump through SSH on other hosts with it, you can set up TCP tunnels in ad-hoc manner without going through the configuration, and obviously you can run an interactive shell). Plus you get scp for file transfer out of the box, and lftp (which understands sftp protocol) and rsync after installing some barely related software, all of them still able to jump through other hosts.

Now compare it to the glorious ability to open a window with remote shell (and only direct one, no jumping through a bastion host), and maybe a TCP tunnel with some clicking through every single time (you can't recall the history of commands, because there was no command in the first place; the best you can do is to save the tunnel configuration permanently). And maybe file transfer if you remembered to download PuTTY's scp client.

You can do all that stuff using Cygwin at least as far back as 2005, because I was running Unix dump and rsync through ssh from a Windows backup server back then. Cygwin eventually adapted PuTTY as its terminal emulator too, in the form of MinTTY.

You can do SSH proxying with PuTTY, too. It's just called something different:

https://stackoverflow.com/questions/28926612/putty-configura...

Plus PuTTY has a command line interface and everything. You can do all the things you mention with PuTTY from a cmd.exe or PowerShell prompt.

Yeah, Mintty is great. Install Cygwin just for Mintty if you like. Still better than Putty.
(comment deleted)
If you think PuTTY is even half the environment bash+ssh is, you probably won't understand what the people buying Macbooks, or using Linux directly on Whatever{books,tops,pads}™ are getting from their choice.

Not trying to be condescending, but it seems to need highlighting that just having SSH access isn't enough.

Not to mention that these other environments have offered other benefits [especially] to developers looking for a programming environment that works for them. The VS.Net IDE-play-button approach to automating testing and deployment doesn't scale for everybody.

Microsoft are writing a proper, tabbed multiprocess terminal for a future Windows 10 release.
Or maybe some people just need PuTTY for the SSH stuff, because they feel Powershell is superior to bash and related Unix shells.
You missed a bit.

> the people buying Macbooks, or using Linux directly [...]

... don't give two hoots about Powershell. Sorry, but I did limit what I was saying to describe people not using Windows.

Technically the "you" in your statement is not the same person/people as "the people buying Macbooks or using Linux directly". But I see what you mean. Hopefully you also see what I mean - that nobody in their right minds would think that PuTTY is trying to be bash+ssh. PuTTY is the ssh part of that combination, and there are plenty of options to cover for the bash part too.

PS: From the fact that you refer to Visual Studio as "VS.Net", I take it that you haven't been in Microsoftland for a while. No serious developer uses these "play-buttons" to do their automated testing and/or deployment.

> I take it that you haven't been in Microsoftland for a while

It's been about a decade since I moved to Linux. Just skimming the latest VS docs though, the structure of unit testing within VS pretty identical to how it was. The feedback is a little more inline and I guess the extensions are a fairly big deal... But that sort of lends to my point that the IDE is still pushing itself down your throat for an IDE-centric build environment.

The thing I've liked about collaboration since moving away from VS is our build and testing toolchains sit completely separate from development settings and IDE projects. It's very simple to switch things out and script in new workflows. It also means we don't need to install things like VS to test on a new (eg rebuilt production test) machine.

I'm sure the same is possible in Microsoftland, I've just never —even recently, I still interact with .Net developers and their work product— seen people making use of it, falling back on what Mother thinks best. Maybe they're not serious enough developers.

On reflection, my last reply was a little short-sighted. Of course the untethering and later freeing of MSBuild has certainly helped Microsoft-tethered developers.

The historical bias towards the IDE and component kits still exists —and probably will forever— but some of those things are reasons I found it so easy to pick and run with VB.NET and C#. I won't pretend it took me a while to work out what I was supposed to do when I left it all behind.

That all said, they are getting closer to the point (may be there already) where you can go from Powershell to remote Powershell over SSH.. But that still assumes you're lunatic enough to want to host anything on Windows. I think I've had too much freedom for too long now to ever consider that a good idea.

Exactly; bash+ssh comes with decent options for terminal-based text editing. That's a huge win over Notepad and friends.
> I really can't believe somebody ever bought a MacBook because they found installing putty too much of hassle.

No, but something like installing putty was the last straw.

Putty is a terrible experience; very difficult to use. It's like every misstep or disconnection involves a dozen or so clicks back into the configuration area to "try again". This feels like normal on Windows though.

I recently tried to port my workflow to Windows for a year, but I eventually gave up simply because of something like this. I might've made it 6-7 months and I can't recall exactly where it was, death from a thousand cuts maybe.

> I might've made it 6-7 months

Hat's off to you, I didn't even make it that many weeks.

Between filenames/paths being too long, poor terminals with janky colour schemes (save for Mobaxterm, it's great), WSL issues (like umask handling), gvim/vim issues with plugins, and loads of other annoying bits I just went back to Linux.

Linux is FAR from perfect, especially as I have an Nvidia graphics card, but there's a lot to like there too. Having run Fedora 27/Ubuntu 17.10 I've found I really really like Gnome. I seem to be in a club of one there (and it's buggy as hell on 17.10) but for me it's been great to use.

Not that I wouldn't use Mac if I found a couple grand down the back of the sofa, but as a daily driver Linux has been less painful. Even on the laptop, though I do have one of those Dell certified ones.

Happens all the time. The basic Unix tools are valuable assets - it's more than just ssh.
Given how critical good terminal experience is to modern IT the fact that putty is the go to tool for this in windows is a bad joke. Not to put down putty.

From the point of resourcing, I mean. Here we have Microsoft on a gazillion dollars of capital and one of the most critical tools for several people is developed by a single talented hobbyist who gives it for free.

Not to disagree with you on anything but same gazillion dollar company is now doubling down of a Javascript code editor because writing high quality native code is so difficult and expensive.
putty isn't a great client it just that it worked. I personally haven't used putty from a windows machine for over 5 years. I use cmder and just use it like I was on Linux. http://cmder.net/
I wouldn't buy them because of that but I always use the iMacs in the university computer lab just because SSH is already installed.
Of course it's easy to straw-man this particular sentence. However many people - including me, once - bought a MacBook because it was the easiest way to get proper Unix tools like SSH at your fingertips.

Using PuTTY or Mingw tools on Windows sucks compared to using them on a Unix-based system. I gotta say the Windows Subsystem for Linux really helps in that regard - as does native SSH in cmd an PowerShell (PowerShell by itself is also pretty awesome once you get the hang of it). Linux did not use to be such a great competitor for the rest of desktop usage (some will argue it still isn't).

I bought a MacBook because the terminal on Windows, including PuTTY, is just.. bad. It's my main environment, I want it to be top notch. I'm shocked I've yet to see something that feels like iTerm2 on Windows.
I don't mean any offense because it is a useful tool in a pinch. But I would never use putty on a regular basis for real work
I swapped to mac for this very reason, actually. Now that windows has WSL, I've been straddling the fence on whether to swap back (tried it back in Dec., might give it another try soon).
It's not putty. It is every single terminal application out there.
Well not just ssh but I did leave Windows for Fedora because Windows lacked a solid terminal emulator and all third party ones did was act as a wrapper around cmd.exe which solved some UX issues but not the core limitations of cmd.exe itself.
> I really can't believe somebody ever bought a MacBook because they found installing putty too much of hassle.

I'm one of these somebodies.

It's not that installing Putty is a hassle, but my choice to buy a MacBook was very heavily driven by the fact that macOS is Unix based. My time spent between Windows 10 and macOS is pretty even, but it is a much more enjoyable experience to develop in macOS partly because of the Unix-based shell.

Seems like they're missing support for a lot of algorithms.

It's a good step to be sure, but not a replacement for Putty by any means.

Which algorithms are they missing?
ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1

without these you'll likely be unable to connect to Cisco devices, vCenter, etc.

I never thought I'd say that, but maybe Microsoft needs to work more on backwards compatibility. :)
The SHA1 variants are deprecated on modern OpenSSH as well, although they're still supported if you explicitly enable them.

I agree that it would be nice to have them "opt-in" in Windows as well, in my experience a significant amount of legacy equipment still uses these deprecated algorithms.

Can’t wait when the WSman in powershell will be replaced with SSH. This is one of the obstacles for PS for Linux, due lack out of the box
Can we finally proclaim 2017 as the year of the Linux desktop?
If it wasn't proclaimed yet that would be the first time in 15 years or so. Don't break the chain!
2017 was certainly the year of Linux on the Windows desktop. :)
No, i think you meant that 2017 was the year of linux ideas that were implemented on desktops. ;-)
Looks like there's a server too, sounds good.
I'm interested how well the client works under cmd.exe. Last I tried to use ssh via cygwin, I remember having a lot of issues with escape codes not working, to the point that I had to go ahead and install puTTY anyway, just because it was a much better terminal emulator. Microsoft has neglected their terminal emulator for 20 years now[0]. I hope they improve it soon. I'm aware that some cosmetic features were added in Windows 10 but frankly it still sucks compared to even the most basic Unix terminals. Making the terminal a first class citizen in Windows would do a lot to win developer market share.
You’re right, and I think Microsoft are finally listening. The terminal itself has had its first true upgrade in decades recently.
PowerShell has been around forever and it's super powerful. Just never got much adoption.
Terminal and shell are two different things.
(comment deleted)
You're missing [0]

As for the terminal, it went under quite a revamp for lxss support (linux subsystem / Windows Subsystem for Linux)

Oops, that was supposed to be a a footnote (just my acknowledgement that there had been some changes to cmd for Windows 10), but I decided to put it inline. Can't edit with the HN app I'm using currently.
I use ConEmu/Cygwin[0] and have no such problems (YMMV).

[0]: http://conemu.github.io/

I know all about the alternative terminals for Windows and none of them are much better. ConEmu feels so hacky and way out of scope for what it's supposed to be doing. Does it still require Administrator, and hook directly into the framebuffer?
> feels so hacky and way out of scope

You can blame MS for first part. Don't really get what you mean by "out of scope".

But anyway, from my personal point of view, ConeEmu is by far the best console terminal out there (including the Linux ones). It's by far the most customizable one and with some work the result can be pretty amazing.

Windows Console has improved a lot since Creators Update, adding built-in support for many VT escapes (including all the common ones) and even 24-bit color in the console. They're doing their best to make it first class for developers. You should follow the command line team's blog: https://blogs.msdn.microsoft.com/commandline/
Although it's appreciated as a UNIX admin I can honestly say I don't use Windows by choice but because my enterprise says I must. That's partially because all the productivity tools are found there and partially because the desktop guys are massive Microsoft bigots and refuse to host anything else. (It's OK I can say that as a massive UNIX bigot and besides they'll tell you the same.)

And frankly with the tiniest bit of effort I can crank up a local xterm and then ssh which gives me lovely things like color, font choice, easy window size changes and thousands of lines of scrollback. Why in 2017 would I want to use a bare naked ssh client unless there is simply no other choice?

Default packages are extremely important. That you can walk up to any computer and get work done without installing anything, even downloading putty.exe is far too much effort in some cases. Also it is kind of rude to just download and execute things on friends/colleagues computers ad hoc.

If this will be installed by default it will be awesome, and imho even the process described here by enabling a feature is still better than putty.exe (it will get managed by windows and updated if need be etc.).

For my own windows computers though, the first thing I install is WSL and a proper terminal app (cmder).

Yeah it's handy to have by default, no doubt. But unless it also includes all the other client modes as well (scp, sftp, etc) and all the features found in Putty to boot I think the author's conclusion that Putty's days are numbered is a bit unrealistic.

I will say if this includes active directory integration so that ssh'ing from a windows box to a kerberos-protected unix one that could be slightly helpful. And if not that's just another reason to keep using putty. LOL.

Downloading putty.exe (or executing on a USB or share) is less invasive than installing the OpenSSH client feature.
Oh you fancy people with the ability to download and execute things.
Great. Microsoft. That's just great. Now could you please remove the spy/adware that is also included in Windows 10?
It's in beta and you still have to use the bag of sh*t windows terminal.

I'll skip and continue supporting and using PuTTY.

The PuTTY developers should get a trophy for an essential dev tool that has been around for ages, free and just works.

1:47 video on how to install it.

If you do not want to watch go to “Manage Optional Features” then + “Add a feature”. You can then scroll down the list and find the OpenSSH Client (Beta) and OpenSSH Server (Beta) features in Windows.

Do you really need a video when the installation instructions are 2 sentences?

Even if the installation instructions are more than 2 sentences, I absolutely hate if video is the only documentation method. It has its value as a supplement to a text description, but not without the text.

(The worst offender that I've come across for this stuff is Minecraft mods. I want to know how this machine block works, not watch you chat about random stuff for 30 minutes hoping that the explanation is somewhere around minute 19!)

Maybe YouTube should have a "kudos, this video was so good that I'll watch an extra 30-second ad just to thank you"-button.

(I assume most of these videos are so unnecessarily long because it increases ad earnings for the content creators.)

I'm not seeing the OpenSSH client there. Is there a minimum version of Windows 10 that's needed?
You have to join Windows Insider preview program to get it today. Should be in retail when the current build is released.
Yeh, at least provide a command-line method of installing it. If you're the type to install ssh, I'm guessing you're not a typical Windows user who is horrified by the command-prompt.
This is from memory so it might be slightly wrong, but in PowerShell you can write:

Add-WindowsCapability -Online -Name OpenSSH.Client

Correct.

   Get-WindowsCapability -Online | Where-Object{$_.Name -like “OpenSSH.Client*”} | ForEach-Object{ Add-WindowsCapability -Online -Name $_.Name}
Yeah, they probably found out that sending the data from their own adware/spyware over unencrypted channels back to their own servers was too insecure. just kidding ;-)

No seriously: Congratulations MS and please evaluate again if you really need that extra money you make with your advertising deals.

If open source isn't a requirement and you want a polished GUI client, https://www.bitvise.com/ssh-client has been free as in beer for about 1.5 years. It will be tough for them to beat being part of the default install!

Odd licensing (free for up to 4 users/machines, but crossing to 5 required $45/seat) really crimped adoption before the license was changed. https://web.archive.org/web/20160329203117/https://www.bitvi...

Bitvise sells a solid Windows-friendly SSH server for $100. I am not affiliated apart from being a happy user since before OpenSSH supported AuthenticationMethods (multiple required) in 2013; it has been my straightforward licensing alternative to Remote Desktop Gateway.

They're also squatting the putty.org domain to advertise their software, which is pretty bad-mannered.
Thanks for pointing this out; I'd forgotten about that (having given up on Putty after discovering the difficulty of sharing configuration https://stackoverflow.com/q/13023920).

Putty.org links to the Putty download page with a disclaimer separating promotion of Bitvise software below. The contrast in marketing language between "source code [...] developed and supported by a group of volunteers" vs. "developed and supported professionally" definitely appeals directly to the Windows mindset! Unfortunately Bitvise's "growth hacking" makes commercial sense, even if it does cost them potential users.

It is always interesting to contrast various SEO approaches; for example: contrasting https://www.chiark.greenend.org.uk/~sgtatham/putty and https://winscp.net. It would be neat if the Putty author would chime in here; perhaps a funding drive for putty.net is in order!

What I'd really like to see is an OpenSSH server for Windows. My biggest gripe is not being able to SSH into a Windows machine and use one of the 3 major shells available now (cmd/powershell/bash).
it has a ssh server, too. but I do not know which shell you get after ssh'ing into (trying out right now)
If it doesn't have to be OSS, Bitvise have one that is free for personal use, otherwise available under a commercial license.

Ive been using it for probably > 5 years, and it's been rock solid.runs as a Windows service, supports both Windows and custom credentials, comes with a nice GUI configuration tool too, can highly recommend it.

Even if installing Putty is not a hassle, i see no reason why we can't try SSH . If it makes IT admin's job easier, we should give it a try.
I've been using this from the daily builds for a year, maybe two, to SSH into my app servers, DB boxes and load balancers and start tunnels,

It works. Really well.

Microsoft are going to try and get the forked Windows support merged into OpenSSH ports upstream.

As someone who makes online training courses, the whole putty dance for Windows was so cumbersome. This is excellent news.

Personally I would recommend anyone on Windows to use WSL (which supports ssh and scp out of the box) but it's nice to see this is available for people who don't want to use WSL.

> the whole putty dance for Windows

Do you have something you can share publicly to demonstrate to the uninitiated how painful this has been?

Putty's dedication to the Windows registry has caused me tremendous grief.

Helping end users (Windows developers) configure Putty is the bane of my "discount" remote access strategy (SSH port forwarding).

I usually point people to specific steps of this DO guide https://www.digitalocean.com/community/tutorials/how-to-use-....

It gets even worse too because in some of my courses (like my Let's Encrypt course) I request people to securely transfer files to their DO server.

So now they have to set up WinSCP or a comparable tool, which has its own set of lengthly instructions.

And for comparison on MacOS, Linux or WSL it's just:

Create SSH key: ssh-keygen -t rsa (hit enter a couple of times)

SSH into a server: ssh user@host

SCP a file to a server: scp foo.conf user@host:/tmp

So this is why Microsoft is such a leader in technology. After only 22 years, ssh is now in it's operating system! Wouldn't it be nice to have a monopoly that actually is innovative, rather than simply a lackluster follower?