Hacker News new | past | comments | ask | show | jobs | submit login
Microsoft Adds an OpenSSH Client to Windows 10 (servethehome.com)
793 points by awiesenhofer on Dec 12, 2017 | hide | past | web | favorite | 522 comments



Hey there, everyone! I'm the PM for this project, and it looks like I'm a little late to the party, but I wanted to drop in some notes to add to the discussion:

* we also shipped OpenSSH's sshd server, but it's a little tricky to configure right now. Expect a blog post this week. * This is not production-ready in the current version of Windows 10 (hence the "(Beta)" in the label), but we hope to be soon. * All of this is being done in open-source out of a fork at https://github.com/powershell/Win32-OpenSSH (code work is technically checked into https://github.com/powershell/openssh-portable/ first, but those will be consolidated at some point). Check the Wiki there for a ton of info. * We've been working closely with the official OpenSSH Portable maintainers to get upstream at some point in the future. They've been awesome to work with so far, and we're really looking forward to moving Windows onto the definitive SSH implementation of the world.

This is been a super fun project to work on over the last couple years, and I'm glad that there's such a groundswell of excitement around it. Like I said, I hope to be publishing a lot more documentation/material on our plans as we get to a production-ready state.

I've also been super swamped with the release of PowerShell Core 6.0 [1] for Windows/macOS/Linux coming early next year, hence the lack of a good release announcement on these beta bits...Thanks to Patrick Kennedy for finding it and letting everyone know! :) )

[1]: https://github.com/powershell/powershell


Having no idea how an SSH server is intended to work on Windows, I have a question:

When I connect to a Windows box running an sshd, what exactly happens? Do I just get dropped into a command prompt or PowerShell session or what?


It drops into cmd, but it is configurable (and there's actually a Chocolatey community package for it that I believe prompts you for which default shell you want at install-time).

With PowerShell Core 6, we also support PowerShell Remoting Protocol (PSRP) over SSH as a transport, which means that you can do stuff like New-PSSession and Enter-PSSession without WinRM. (PowerShell just gets registered as a "subsystem" of sshd, same thing sftp-server does.) You can check that out here: https://github.com/powershell/powershell/tree/master/demos/S...


That's really odd. Are you going to fix this before the final release?


Please say powershell... Please say powershell...


cmd.exe, but it is probably configurable, and you can always just type 'powershell' to get it.


Invoking via cmd is not comparable at all.

If it was direct to Powershell, you could pipe objects directly into remote cmdlets.


Posted above, but just in case, we also support this with PowerShell Core 6: https://github.com/powershell/powershell/tree/master/demos/S...


Nice work. Is it fair to ask for even a ballpark answer on what the licensing story will be?

Windows Client Access Licensing is annoying, but they have some web exception for web servers. SSH remote access is a whole new ballgame! I assume it is encouraged for one-at-a-time administrator use in much the same way Remote Desktop currently works, but even that isn't really communicated clearly yet (even from a high-level perspective).

It seems like getting the plans out there as soon as possible to begin collecting feedback and managing expectations is going to be win-win for everyone.


I don't have a good answer for you right now, but we're tracking it here and I'll be responding back here with some info when I have it: https://github.com/PowerShell/Win32-OpenSSH/issues/926


Don't worry, you'll also be able to license your OpenSSH server per core (minimum 4 per-core licenses).

I'm joking.


I am having difficulty creating a new keypair using ssh-keygen.exe and a passphrase - should this be working? I receive the error ``Saving key "[...]/.ssh/id_ed25519" failed: invalid argument''.

It works fine without a passphrase.


Haven't seen that error message before but I highly encourage you to use our GitHub builds where we've fixed a ton of issues related to path parsing and VT100/ANSI compatibility.

Those builds will also be showing up in Insider builds over the next few weeks (if they haven't already).


I had the same issue, plus -t rsa didn't work, and my existing keys weren't accepted anymore. I ended up uninstalling it.


As part of the beta, we only support crypto algorithms that ship as part of OpenSSH itself, as opposed to algorithms that ship in OpenSSL/LibreSSL. Hence, we only support ed25519 in Fall Creators Update.

If you grab our GitHub bits, we compile against LibreSSL there, and you should see LibreSSL showing up in future Insider builds of Windows. That brings support for all the other crypto algorithms you'd expect (RSA, DSA, etc.)


Does it work with older Windows versions?


Yup! We support down to Windows 7 and Windows Server 2008R2. You just have to install the bits from GitHub (but they're actually more up-to-date because we can ship there a lot faster).


Probably not. The Windows Subsystem for Linux was introduced with Windows 10.


This is a win32 port of OpenSSH, it does not use Windows Subsystem for Linux. WSL can already run Ubuntu elf-binaries of ssh.


Will this support network drives? That has been a sore spot in every ssh on windows attempt I have seen so far.


What kind of network drive support are you looking for specifically?

If you mean, "interact with them from an interactive shell like cmd or PowerShell", yes, you can absolutely do that. Our implementation literally stands up a console host on the server side, so whatever you can do in that console host with the privileges you have, you can do over SSH.

If you mean, "do you support SCP and SFTP for transferring files in a network-drivey way" the answer is also yes. SCP is supported directly against sshd, and we ship both an SFTP server and client.

If you're talking about something NFS or SMB related, I'd be curious to hear more details.


Nice one! Now, can we get a terminal with tabs? Will that be a thing with the new windows tabbing approach?


I don't sit within the console host team, but I do work very closely with them and their PM Rich Turner is very active on Twitter (@richturn_ms). They're tracking the (very popular) request for tabs at https://wpdev.uservoice.com/forums/266908-command-prompt-con...


Thanks for the link.

It says "ON THE BACKLOG" since October 01, 2014. You have a pretty long backlog, if you didnt implement the second top voted request in three years, out of backlog ;-)


Again, not my backlog personally, but I'd wager that the VT100 work that they've been doing in the console host is going to do a lot more for the ecosystem (WSL/"Bash on Windows" included) than tabs.

That being said, yeah, I also want tabs. In the meantime, I switch back and forth between conhost and Cmder. :shrug:


Tabs are actually coming to every windows application as part of a W10 feature update: https://arstechnica.com/gadgets/2017/11/tabs-come-to-every-w...


When I have to work on a Windows machine the first thing I install is git: https://git-scm.com/downloads

It comes with bash and all the standard tools (including ssh IIRC), so I can work on a real command line. Especially as a vi user, I'm right at home.

I find this a lot easier to manage than Cygwin: a lighter install, no packages to select, and smoother integration.


These days you go to the Microsoft App store and download Ubuntu. It loads up actual bash and comes with everything you'd expect. (ssh being just one of the things). The terminal emulation is improving (there are still a couple of glitches) but pretty much all of my daily tools work exactly correctly.


For me, this is a huge thing.

When I bought my first Mac, back in the days of MacOS 10.2, I did so because of the BSD system underneath. Having a Unix system, whether its GNU or BSD, gives me access to tools that I'm familiar with and sometimes prefer to their GUI counterparts (e.g., scp/sftp vs FileZilla).

Now that Windows has this, switching back is something that I'm giving serious consideration to.


"Now that Windows has this, switching back is something that I'm giving serious consideration to."

It's not clear to me that Windows has this ...

I, like you, adopted the MacOS ecosystem because it was UNIX underneath ... but there's a big difference between underneath and alongside.

Although it is not commonly done, you can control and interact with your OSX system with UNIX commands ... there's one single filesystem namespace and you can interact with it from the command prompt as well as kill GUI apps or set preferences or ifconfig, etc.

It's my understanding that the Ubuntu subsystem in recent windows is sort of a parallel environment ... but is not meant to control the system directly or as an alternate path of interaction with Windows, correct ?


Alongside is an apt description. It feels a bit like running Linux in a Docker container.

The Windows Subsystem for Linux (WSL) has it's own directory in the Windows filesystem that corresponds to /. It's uses some NTFS magic to store the Linux file attributes that don't directly correspond to NTFS file attributes.

It also, within the Linux environment, mounts your host drives under /mnt.

For what I generally use the OSX terminal for, WSL probably hits about 80-90% of my use cases. A lot of lower level utilities have weird issues - e.g., 'ip addr' seems to present the Windows network interfaces as though they were typical Linux ones, 'ss -a' gives a bunch of netlink errors, dmesg says "dmesg: read kernel buffer failed: Function not implemented", 'tcpdump' doesn't work, etc. On the other hand, curl, scp, ssh, etc do exactly what you'd expect.


My limited experience with WSL gave me the impression that anything that needed /low level/ packet constructs either wasn't mapped correctly or might have required administrative privilege blessing on the Windows side of the environment ACLs.

I hope that these get filled out, at least with more constructive error returns, at some later date.

For now, I'm happy that they have enough of the low hanging fruit ripened sufficiently to make it possible to do 'normal' things from within WSL. I'd honestly rather they make the local (and network) filesystem more performant and robust; maybe they have.

My use case for WSL is coming around in the calendar year again so I'll be revisiting it soon.


> It's my understanding that the Ubuntu subsystem in recent windows is sort of a parallel environment ... but is not meant to control the system directly or as an alternate path of interaction with Windows, correct ?

I am not so sure about this. I think Dustin Kirkland sheds some more light here:

http://blog.dustinkirkland.com/2016/03/ubuntu-on-windows.htm...

And he seems to be relatively excited about it so he benched it more recently:

https://www.linux.com/learn/howdy-ubuntu-windows-how-fast-it

It seems more like an inverse Wine than a parallel environment.


The windows drives are mounted as /mnt/c, /mnt/d, etc...

You can call executables in both directions, even use windows executables in a bash script and pipe its output to awk.

https://docs.microsoft.com/nl-be/windows/wsl/interop#invokin...


One of the interesting things is that if Linux developed support for NTFS ACLs you could probably make it pretty seamless. One of the more convoluted parts of the NetApp filer code was the code that allowed for 'mixed' UNIX and CIFS volumes.


We're working on improving integration between Windows and Linux distros on WSL. Stay tuned for progress. The release notes on the WSL doc site [1] are basically our changelog. Highly recommended for the latest updates.

[1] https://docs.microsoft.com/en-us/windows/wsl/release-notes

Full disclosure, I work at Microsoft on WSL.


To be completely fair to both sides though, the ability to tweak MacOS from terminal has always felt like it was opposed by Apple. They don't seem to support it officially in any capacity, and in many respects, actively fight it (i.e. changing the preference keys in every single release of MacOS, for literally no reason).

You can do some things to and with MacOS from CLI. Honestly though, it's all stuff I wouldn't miss awfully.


In the early days there was less interaction but it's getting pretty seamless now.

It's the same kernel underneath so it's not really two parallel systems.


macOS is Unix. That's the big difference for me.


I've been using WSL + wsltty [1] + Xming [2] for months and didn't encounter major issues. wsltty also added support to the Microsoft Store version recently.

For Xming, simply set DISPLAY in shell and local GUI programs just work, as well as SSH X forwarding.

[1] https://github.com/mintty/wsltty

[2] https://sourceforge.net/projects/xming/

(EDIT: typo)


I tried this, but I found that my Ubuntu subsystem could not access my wifi connection at all, no matter what I tried. I remember reading Microsoft forums where developers from Microsoft acknowledged they were working through the issue. It still hadn't been resolved the last time I checked.

I'm on a Dell XPS 15 9560 if that matters.


> I'm on a Dell XPS 15 9560 if that matters.

It does as I've had no issues personally on as self-built desktop, an ASUS laptop, a MacBook running Bootcamp, and now a Surface Laptop.


Is there any advantages over using Ubuntu itself directly?


Well not if you aren't using other parts of Windows :-) but if you are constrained to using Windows for other reasons then the advantage is you get all the tools with a much lighter weight system than say running a virtual machine.

There are also some systems where kernel support for the devices is lagging, either because they are proprietary and poorly documented or because they have insufficient market penetration to get someone interested in writing good driver support. For example support for the pen on the Surface Pro 4 line is really horrible (IMHO) on Linux.


So these devices need real kernel drivers? Windows doesn't provide some kind of emulation through its own drivers? I guess that makes sense although it didn't occur to me.

If that's true, will those new drivers also work on a regular non-Windows Linux install? That would be really great news, and pretty ironic, if device manufacturers or even Microsoft itself were suddenly writing more/better drivers for the Linux kernel. :-)


The grandparent is saying that if you run plain Ubuntu directly on a device, Ubuntu (or really, the Linux kernel) might not have drivers that work reasonably well for some hardware on that device, while Windows most certainly does have decent drivers for that hardware.

When you run Ubuntu on top of windows, windows replaces/emulates the Linux kernel - at least the part it needs to run the subset of Ubuntu that windows currently can - this emulation provided to run Ubuntu is done on the interface between the kernel and userspace, it is not done on a device/driver level.

Drivers are OS specific, the drivers in question here are either windows drivers, which works only on windows, or they are linux drivers which work only on linux. (Noone is writing drivers for windows which could also work on linux)


It's not an emulator. The NT kernel really does support the necessary system calls.


Sure, but there's a layer that emulates the linux syscalls. Though perhaps it's more appropriate to call it "translates" instead of emulate.


Its not a layer on top of the NT system call infrastructure. Its brand new NT system calls that do exactly what the equivalent Linux ones do. There is no combination of win32 NT system calls that will get you the behavior of fork().


Aren't the NT system calls also just a personality module above the actual NT kernel? The kernel was originally designed to provide multiple kinds of user spaces so that it could run OS/2 programs alongside Win32 ones.


No. win32 is a personality, the underlying ntdll calls are not part of that.


Of course not! It's quite the opposite. With more and more people ditching 'real' Linux for WSL (which is a 'Linux kernel API layer' for the Windows kernel, there is actually NO Linux kernel involved), support for the relevant hardware is never going to happen in Linux proper.


The big advantage is that it runs within Windows, so you can use your Windows and Linux tools at the same time. It's also not done as a virtual machine, so the Ubuntu running on Windows can access and manipulate files on your Windows system very easily.


Albeit very slowly. Unless they fixed it recently, writing to a vast amount of files is very slow compared to native Linux. Anyone who has cloned a large repository I'm sure is aware of this.


I felt like file speed sped up quite a bit in the Fall Creators Update, though of course that notion is entirely anecdotal.

Also, the native Windows git is still your best bet for git operations. That's one of the cases where I will have a PowerShell and an Ubuntu bash window side-by-side, working in the same /mnt/d/... | D:\... directory. git operations in PowerShell and Jekyll (or whatever) operations in Ubuntu bash.


Does it make a difference if you run your git operations through cmd from the bash command line? If so, is there a simple way to automatically get the current windows path from pwd? If it's the same speed as native git running in a separate window (I think it should be), it might be worth coming up with some kind of script to do this automatically. Not sure how to get that working with using Linux tools within git, though (editing commit messages, diffing, etc). Also, how does file speed within the Linux environment (/home/username) compare to that outside (/mnt/C/whatever)?

Also, they _really_ chose a poor name for that executable; it should have been wsl.exe or some such, not bash.exe. At least lxss.exe isn't already in use by other software in my path...


We just released a tool to do the right path translation -- wslpath. Unfortunately we haven't added built in usage info yet. Here's a link[1] to usage info in recent Windows Insider flights.

Also, totally fair feedback about the naming. In FCU, we added wsl.exe in addition to bash.exe. It launches into your default shell rather than /bin/bash.

[1] https://github.com/Microsoft/WSL/issues/2715

* I work at Microsoft on WSL


I hadn't thought about that (I use PowerShell for most tasks so that is still my "home" shell and it's bash that's the rare one), but I half remembered something to that effect, so I went to the docs:

https://docs.microsoft.com/en-us/windows/wsl/interop

Calling Windows EXEs from bash will automatically retain the current working directory under /mnt/c/*, so it should just work out of the box. Looks like you might be able to get away with just adding native Windows git to your bash path.


Yeah for example I have composer only installed in Windows (EXE) and not within WSL and it works fine within the bash prompt.


That you can keep using Windows seamlessly?


I haven't done this yet, thanks for the reminder! I've been curious to try it as I've gone through probably every other bash emulator on Windows and not been overly satisfied.


I would love to hear how it works or doesn't work for you! I have shown it to lots of folks and probably a quarter have some aspect that keeps it from being perfect (generally a terminal issue or the lack of a Microsoft provided X server. For the latter I use xwin32 [1] which works fine but may not be accelerated if your display controller isn't supported.)

[1] https://www.starnet.com/xwin32/


I'm just getting set up yet, but so far so good! I haven't run anything too complex just yet, but it seems really performant and doesn't put a significant load on my system.

Next up is to try running something more taxing, and then look into GPU access from within it.

I'm looking forward to them developing the subsystem further.


That's all fine and dandy until you want to develop Windows applications using Ubuntu on Windows.

There's still a place for windows native tools.


I install OpenSUSE Command line from the Windows Store.


Have you looked at Mobaxterm at all? I have the same issues, and accidentally discovered this a few years ago, and haven't looked back. Lightweight Cygwin install, own package manager, EXTREMELY usable. The free version is plenty good, but even the paid for version is 'only' $80.


I second this recommendation. It’s a really great tool; I really like the combined SSH and FTP integration so I can browse and edit files with my favorite text editor on the machine I’m ssh’ed into really efficiently while also running commands at the same time.


Another "me too!" for MobaXterm. Sessions in tabs, easy file transfer, built-in and automatic X forwarding.

I like PuTTY, and have used it a lot, but MobaXterm has been great.


Also love MobaXterm

I wish Cygwin performed better on Windows, git operations on Linux take minutes on Windows because it has to spin up the whole cygwin environment. This kind of still makes me want to use Linux, but MobaXTerm makes my Windows desktop very usable for administration.


Neat. I wasn't aware Git client had this much feature. On Windows 10 I have "Bash on Windows", but on older systems (such as Windows 7), Git client would do the trick.

MobaXterm is nice, but I don't like how heavy it is...


You should try WSL with cmder [1], a lightweight windows terminal that feels great and is heavily customizable. It’s the iTerm2 of Windows IMO.

[1] http://cmder.net/


+1 for CMDER, I recommend also following this guide [1] to easily launch linux subsystem for windows on cmder.

[1] https://gingter.org/2016/11/16/running-windows-10-ubuntu-bas...


WSL has exited beta on the mainline release. You can now install Ubuntu/Suse from the windows store. Look up the processes to extract data from your current wall, unintall the legacy edition and get the new addition. It's not clear yet how the legacy version will be impacted it may be easier to migrate sooner rather than later


or just install msys2. Works just as well imo, and can more easily integrate other packages as well.


It felt like x-mas when I discovered msys. The package management blew my mind. Getting a qt kit set up took about 1 minute.

Great wiki about set up and use here: https://github.com/msys2/msys2/wiki


Msys uses Arch Linux's package manager of all things


Yeah it's not such a mind-blower if you are experienced in using Linux, where this is just common, but it's still really nice to not miss this when working on Windows.

However in the current version of MSYS2 (after an update a few months ago) they suddenly seem to mix the different linux-like distributions and for me it's really hard to choose which shell to use and which package to install for that shell.


Yeah I should clarify, the fact that msys had built in package management was just the most pleasant surprise ever. I use windows when I have to, not by choice. :)


MSYS2 is highly underated, it works perfectly and I cannot work without it now.


So it's basically a much-improved MinGW or binutils package, is that the idea?


No it's a completely open source, built from source (using gcc) software distribution for Windows. It uses pacman to install packages and comes with many hundreds of prebuilt ones.


Yes! OOTB package mgmt...


The problem with gitbash is its way slower.

Plus, the real reason you get Putty or SecureCRT if you’re lucky, is because they are actually terminal emulators and not a DOS shell.

Sorry I don’t find Mona compelling at all.


Yeah, but doesn't Putty force you to use it's goofball ssh keys? With git bash you can use regular ssh keys. And, you can generate them the way you're used to (assuming you already use Linux). Idk, I think git bash works just fine in most cases.


It does. But it also comes with a utility that will generate keys, and/or convert regular SSH keys to the format Putty uses.


Wow. Way slower? Git bash is just as fast for me. And MUCH more convenient.


you can install the tools into your global path so that you can use git's openssh from powershell.


I really miss ‘git bash here’ from File Explorer when I’m on my macbook. Why it doesn’t have open terminal here/open iterm here I don’t know. I used to have an AppleScript thing to do it for iterm 2 but it got broke and now all I can find is a button in the finder window.. but it really should be built in.


I'm not entirely sure what you are trying to do, but if you leave the terminal icon in your Dock, dragging any folder from Finder onto it will launch terminal in that directory. Any good?


Nice, works with iTerm2 too - thanks :) I have an iTerm button in Finder which opens it in the current folder, so it's okay - but Windows has right click > open powershell here, and if you have git bash then it has right click > open git bash here - which feels more natural to me. I think the Linux desktops I've used all had right click > shell too.


Instead of ranting, perhaps post your broken AppleScript so we can help you fix that. It really ought to be < 10 lines of AppleScript.


This is what I do too.

I used to use Cygwin but it became a pain to manage the packages and it couldn't update it's own setup.exe last I checked.

I recently tried out WSL and I still run into problems with the file system. My home directory is in a new place which is kind of annoying. And cloning a repo with Git changed all the line endings. autocrlf didn't do anything for me either.

Back to good ol' git.exe


Git Bash is based on msys/mingw which have been around a while. I think both mingw and cygwin will both be deprecated in favor Windows Subsystem for Linux.


Highly unlikely. You'd only deprecate them if they serve the exact same purpose, but they don't. Many users will switch, but not those who want a posix runtime environment for a win32 executable that can run on machines that don't have WSL installed (cygwin, and the fork msys2 which git-bash is based on); or to use the gcc compilers to target win32 executables that use the windows native (non-posix) runtime - mingw. Do you know that you can use gcc to build windows executables and dlls from Linux, Mac, or WSL? That's mingw and it's not going away.


I have bash scripts within cygwin that control Windows firewall via netsh interface.

I still can't run those command under Windows Subsystem for Linux.


Wouldn't that be much easier to do with PowerShell? I haven't ever attempted, but I'm assuming...


I use mac, windows, linux, embedded linux all the time. bash/python are just native languages for me.

The powershell's syntax is just too esoteric for me. I did tried that a few times.


"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.


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.


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.


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.


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.


> 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.


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.


Have you used Windows recently? The Console team has made significant improvements in the last year, with more on the way. This article has a good rundown of some.

https://blogs.msdn.microsoft.com/commandline/2017/10/11/what...


> 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.


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.


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?


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).


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.


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


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.


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.


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'...


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.


I found the Putty .exe wasn't signed by the developer. This was a few years ago so maybe things are different now.


It's signed now


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.


Yes. All of them.

Oh, you meant on Windows.


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.


You can convert PuTTY keys to the OpenSSH format with putty-keygen (or what it's called), but not the other way around.

Sure you can: https://devops.profitbricks.com/tutorials/use-ssh-keys-with-...


If I remember correctly it was possible before, is this something new?


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?


I tried iTerm2, don't see what the fuss is. I spend all of my terminal time in tmux anyways.


Did you try out its tmux integration?

https://iterm2.com/documentation-tmux-integration.html


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 :)


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.


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.


> 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.


> 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.


Not that I have anything against MacBooks, but was installing some Linux distro (or a BSD) not an option?


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.


...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


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.


"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.


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.


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.


What desktop environment?


Ahh, missed you mentioned Gnome.


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.


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.


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.


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.


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.


> 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.


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.


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.


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.


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?


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.


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.)


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.


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...


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.


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/


MobaXTerm doesn't require "installation", there's a portable version as well.


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!


Not to forget iTerm 2 on macOS is amazing. I find it much more pleasurable to use than the default Terminal.app


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).


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.


> 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.


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.


Try Cygiwin + ConEmu + MinTTY . It was I used when I was force to work on Windows to get a decent shell & terminal.


Bitvise SSH Client is the best one on Windows that I have ever tried. I agree - using Putty sucks massively.


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.


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.


Microsoft are writing a proper, tabbed multiprocess terminal for a future Windows 10 release.


Source? Is it in the Fast Ring yet?


Guy in charge of it, Mike Griese, Software Engineer at Microsoft, writing on Hacker News:

https://news.ycombinator.com/item?id=14099051


Console should benefit from the system wide 'Windows Sets' tabbing feature

https://arstechnica.com/gadgets/2017/11/tabs-come-to-every-w...


> 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.


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.


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).


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).


> 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.


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.


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.


> 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.


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.


That's an interesting point.

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


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.


chocolatey


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.


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.


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 short for /sarcasm


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.


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 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.


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/


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 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.


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.


Happens all the time. The basic Unix tools are valuable assets - it's more than just ssh.


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).


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.


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


It's not putty. It is every single terminal application out there.


Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact

Search: