PowerShell / Win32-OpenSSH

Win32 port of OpenSSH
7.34k stars 755 forks source link

Which Win32-OpenSSH versions released with which Windows releases? #2053

Open rtollert opened 1 year ago

rtollert commented 1 year ago

Summary of the new feature / enhancement

It would be very helpful to know which Win32-OpenSSH clients were packaged with which versions of Windows 10, 11, or Server. This information is alluded to with specific other issues (e.g. #1693), but I'm not aware of a comprehensive table. (Did I miss it?)

My motivation is as follows. I maintain SSH support for a product which presently supports Windows 10 1607 and later, and Windows Server 2016 and later. I would like to optionally make use of StrictHostKeyChecking accept-new which was added in OpenSSH 7.6p1. There is a ragged trailing edge to the support: depending on which Windows version included OpenSSH 7.6p1 (or later), it may be acceptable to always assume that at least that version is present, and tell our users to manually install a newer version from GitHub if necessary. This would help simplify implementation and testing. But if too many Windows versions are affected, that option may not be tenable.

Proposed technical implementation details (optional)

A page on the wiki that looks like this, identifying what OpenSSH version you get when you run ssh -V on each OS (the OpenSSH versions are placeholders):

Windows version OpenSSH version
10 1709 a.1
10 1803 a.2
11 21H2 b.1
Server 2019 a.3
Server 2022 b.2

Alternative: a PowerShell script that lets us obtain this information ourselves.

mgkuhn commented 1 year ago

At least one past OpenSSH update quietly happened as part of a monthly Cumulative Update, and was not linked to any Feature Update or change of Windows version:

Therefore I suspect the table you want needs to just list the Cumulative Update KBs that updated OpenSSH, not the Windows version.

At present, you have to go to the announcement page of each KB and check the list of changed files in order to see if they updated OpenSSH for Windows.

m-fessler commented 1 year ago

👍 for the idea of such a table.

At least one past OpenSSH update quietly happened as part of a monthly Cumulative Update, and was not linked to any Feature Update or change of Windows version:

* [KB5003173](https://www.catalog.update.microsoft.com/Search.aspx?q=(KB5003173)) (2021-05 Cumulative Update for Windows 10/Server, version 1903 and later) updated OpenSSH for Windows to 8.1.

Interesting, that both KB release notes did not mention the OpenSSH update. 👎

If I understand correctly as a Win/OpenSSH newbie, there are basically two "version branches": Via "Optional Features" there is the somewhat "grizzled" version, which is only updated in course of Windows Feature/Version Updates or, as stated above, rarely (and undocumented) via LCUs. The more recent and regular releases are available here on Github, but they are all "beta" and need to be updated manually.

Did I basically understand that correctly? Thanks and greetings, Martin

GitMensch commented 8 months ago

Also: is there any chance to drop the "beta" from releases or, preferably, add the binaries that are distributed with Windows installs/updates as additional non-beta binaries?

sarah-github commented 5 months ago

I just took a lot of time, to experience errors in Win7 with all Windows updates installed, to find out later, that an older release of OpenSSH has to be used with Win7.

It's the 9.2.2.0 - so it would be nice, to have such things mentioned on the installation page https://github.com/PowerShell/Win32-OpenSSH/wiki/Install-Win32-OpenSSH where it just says, that Windows versions from 7 on will be supported - so you usually will try the newest release, first.

rtollert commented 3 months ago

I gave autogenerating this a whirl on Linux (requires wimlib and wine) and ISOs downloaded via MSDN Universal, or whatever it's called nowadays:

# e.g. ISOMOUNT=/cdrom WIMMOUNT=~/mnt/tmp
for f in *.iso; do
    echo $f
    sudo mount -o ro $f $ISOMOUNT
    wimmount $ISOMOUNT/sources/install.wim 1 $WIMMOUNT
    WINEDEBUG=-all WINEPATH=$WIMMOUNT/Windows/System32 wine \
        $WIMMOUNT/Windows/System32/OpenSSH/ssh.exe -V
    fusermount -u $WIMMOUNT
    sleep 2
    sudo umount $ISOMOUNT
done
Windows Version Updated OpenSSH Version
Windows 11 23H2 May 2024 8.6p1
Windows 11 22H2 May 2024 8.6p1
Windows 10 LTSC 2021 8.1p1
Windows Server 2022 May 2024 8.1p1
Windows 10 22H2 May 2024 8.1p1
Windows 10 21H2 8.1p1
Windows 10 LTSC 2019 7.7p1
Windows 10 1809 Feb 2019 7.7p1
Windows 10 1709 Nov 2017 Not present
Windows 10 LTSB 2016 Not present
Windows 10 1511 Not present

That's basically all the information I need. I'm not sure how to collaboratively maintain this table — I guess it might belong on the wiki, but collaboratively editing it will be a little ick?