Up to [local] / src / usr.bin / ssh
Request diff between arbitrary revisions
Default branch: MAIN
Revision 1.15 / (download) - annotate - [select for diffs], Fri Aug 29 03:50:38 2025 UTC (2 weeks, 1 day ago) by djm
Branch: MAIN
CVS Tags: HEAD
Changes since 1.14: +1 -2 lines
Diff to previous 1.14 (colored)
remove experimental support for XMSS keys; ok deraadt markus
Revision 1.14 / (download) - annotate - [select for diffs], Mon Aug 18 03:43:01 2025 UTC (3 weeks, 5 days ago) by djm
Branch: MAIN
Changes since 1.13: +3 -1 lines
Diff to previous 1.13 (colored)
Make ssh(1) and sshd(8) set IP QoS (aka IP_TOS, IPV6_TCLASS) continually at runtime based on what sessions/channels are open. Previously, ssh(1) and sshd(8) would pick a QoS value when they were started and use it for the whole connection. This could produce suboptimal choices for the QoS value, e.g. for multiplexed sessions that started interactive but picked up a sftp client, or sessions that moved large amounts of data via port forwarding. Now the QoS value will change to the non-interactive IPQoS whenever a "non-interactive" channel is open; basically any channel that lacks a tty other than agent forwarding. This is important now that the default interactive IPQoS is EF (Expedited Forwarding), as many networks are configured to allow only relatively small amounts of traffic of this class and they will aggressively deprioritise the entire connection if this is exceeded. NB. because ssh(1) and sshd(8) now change IP_TOS/IPV6_TCLASS continually via setsockopt(), this commit requires a recent pledge(2) change that landed recently in the OpenBSD kernel. Please ensure you have updated to a kernel from within the last two weeks before updating OpenSSH. with job@ deraadt@
Revision 1.13 / (download) - annotate - [select for diffs], Tue May 6 05:40:56 2025 UTC (4 months, 1 week ago) by djm
Branch: MAIN
Changes since 1.12: +1 -2 lines
Diff to previous 1.12 (colored)
finally remove DSA signature support from OpenSSH. feedback/ok tb@, ok deraadt@
Revision 1.12 / (download) - annotate - [select for diffs], Wed Mar 12 22:43:44 2025 UTC (6 months ago) by djm
Branch: MAIN
CVS Tags: OPENBSD_7_7_BASE,
OPENBSD_7_7
Changes since 1.11: +16 -12 lines
Diff to previous 1.11 (colored)
remove assumption that the sshd_config and any configs included from it can fit in a (possibly enlarged) socket buffer, by having the sshd listener mainloop actively manage sending the configuration to the sshd-session subprocess. work by markus@ w/ a little feedback from me; ok me and committing on his behalf
Revision 1.11 / (download) - annotate - [select for diffs], Thu Jan 16 06:37:10 2025 UTC (7 months, 3 weeks ago) by dtucker
Branch: MAIN
Changes since 1.10: +7 -5 lines
Diff to previous 1.10 (colored)
Call log_init in sshd-auth and sshd-session immediately after parsing the config file so that any log settings set in the config file take effect immediately. Move version banners to immediately after that, and make them distinct per binary. ok djm@
Revision 1.10 / (download) - annotate - [select for diffs], Mon Oct 14 01:57:50 2024 UTC (10 months, 4 weeks ago) by djm
Branch: MAIN
Changes since 1.9: +104 -212 lines
Diff to previous 1.9 (colored)
Split per-connection sshd-session binary This splits the user authentication code from the sshd-session binary into a separate sshd-auth binary. This will be executed by sshd-session to complete the user authentication phase of the protocol only. Splitting this code into a separate binary ensures that the crucial pre-authentication attack surface has an entirely disjoint address space from the code used for the rest of the connection. It also yields a small runtime memory saving as the authentication code will be unloaded after thhe authentication phase completes. Joint work with markus@ feedback deraadt@ Tested in snaps since last week
Revision 1.9 / (download) - annotate - [select for diffs], Mon Sep 9 02:39:57 2024 UTC (12 months ago) by djm
Branch: MAIN
CVS Tags: OPENBSD_7_6_BASE,
OPENBSD_7_6
Changes since 1.8: +1 -3 lines
Diff to previous 1.8 (colored)
pull post-quantum ML-KEM/x25519 key exchange out from compile-time flag now than an IANA codepoint has been assigned for the algorithm. Add mlkem768x25519-sha256 in 2nd KexAlgorithms preference slot. ok markus@
Revision 1.8 / (download) - annotate - [select for diffs], Mon Sep 2 12:18:35 2024 UTC (12 months, 1 week ago) by djm
Branch: MAIN
Changes since 1.7: +3 -1 lines
Diff to previous 1.7 (colored)
missing ifdef
Revision 1.7 / (download) - annotate - [select for diffs], Mon Sep 2 12:13:56 2024 UTC (12 months, 1 week ago) by djm
Branch: MAIN
Changes since 1.6: +2 -1 lines
Diff to previous 1.6 (colored)
Add experimental support for hybrid post-quantum key exchange ML-KEM768 with ECDH/X25519 from the Internet-draft: https://datatracker.ietf.org/doc/html/draft-kampanakis-curdle-ssh-pq-ke-03 This is based on previous patches from markus@ but adapted to use the final FIPS203 standard ML-KEM using a formally-verified implementation from libcrux. Note this key exchange method is still a draft and thus subject to change. It is therefore disabled by default; set MLKEM=yes to build it. We're making it available now to make it easy for other SSH implementations to test against it. ok markus@ deraadt@
Revision 1.6 / (download) - annotate - [select for diffs], Wed Jul 31 12:00:18 2024 UTC (13 months, 1 week ago) by dlg
Branch: MAIN
Changes since 1.5: +17 -4 lines
Diff to previous 1.5 (colored)
add a random amount of time (up to 4 seconds) to the grace login time. ok deraadt@ djm@
Revision 1.5 / (download) - annotate - [select for diffs], Mon Jul 8 03:04:34 2024 UTC (14 months ago) by djm
Branch: MAIN
Changes since 1.4: +1 -2 lines
Diff to previous 1.4 (colored)
don't need return at end of void function
Revision 1.4 / (download) - annotate - [select for diffs], Wed Jun 26 23:16:52 2024 UTC (14 months, 2 weeks ago) by deraadt
Branch: MAIN
Changes since 1.3: +11 -2 lines
Diff to previous 1.3 (colored)
Instead of using possibly complex ssh_signal(), write all the parts of the grace_alarm_handler() using the exact things allowed by the signal-safe rules. This is a good rule of thumb: Handlers should be written to either set a global volatile sig_atomic_t inspected from outside, and/or directly perform only safe operations listed in our sigaction(2) manual page. ok djm markus
Revision 1.3 / (download) - annotate - [select for diffs], Thu Jun 6 17:15:25 2024 UTC (15 months, 1 week ago) by djm
Branch: MAIN
Changes since 1.2: +9 -6 lines
Diff to previous 1.2 (colored)
Add a facility to sshd(8) to penalise particular problematic client behaviours, controlled by two new sshd_config(5) options: PerSourcePenalties and PerSourcePenaltyExemptList. When PerSourcePenalties are enabled, sshd(8) will monitor the exit status of its child pre-auth session processes. Through the exit status, it can observe situations where the session did not authenticate as expected. These conditions include when the client repeatedly attempted authentication unsucessfully (possibly indicating an attack against one or more accounts, e.g. password guessing), or when client behaviour caused sshd to crash (possibly indicating attempts to exploit sshd). When such a condition is observed, sshd will record a penalty of some duration (e.g. 30 seconds) against the client's address. If this time is above a minimum threshold specified by the PerSourcePenalties, then connections from the client address will be refused (along with any others in the same PerSourceNetBlockSize CIDR range). Repeated offenses by the same client address will accrue greater penalties, up to a configurable maximum. A PerSourcePenaltyExemptList option allows certain address ranges to be exempt from all penalties. We hope these options will make it significantly more difficult for attackers to find accounts with weak/guessable passwords or exploit bugs in sshd(8) itself. PerSourcePenalties is off by default, but we expect to enable it automatically in the near future. much feedback markus@ and others, ok markus@
Revision 1.2 / (download) - annotate - [select for diffs], Fri May 17 02:39:11 2024 UTC (15 months, 4 weeks ago) by jsg
Branch: MAIN
Changes since 1.1: +2 -2 lines
Diff to previous 1.1 (colored)
spelling; ok djm@
Revision 1.1 / (download) - annotate - [select for diffs], Fri May 17 00:30:24 2024 UTC (15 months, 4 weeks ago) by djm
Branch: MAIN
Start the process of splitting sshd into separate binaries. This step splits sshd into a listener and a session binary. More splits are planned. After this changes, the listener binary will validate the configuration, load the hostkeys, listen on port 22 and manage MaxStartups only. All session handling will be performed by a new sshd-session binary that the listener fork+execs. This reduces the listener process to the minimum necessary and sets us up for future work on the sshd-session binary. feedback/ok markus@ deraadt@ NB. if you're updating via source, please restart sshd after installing, otherwise you run the risk of locking yourself out.