Release notes are available at https://www.openssh.com/txt/release-9.1 9.1 contains fixes for three minor memory safety problems; these have lready been merged to the copy of OpenSSH 9.0 that is in the FreeBSD base system. Some highlights copied from the release notes: Potentially-incompatible changes -------------------------------- * ssh(1), sshd(8): SetEnv directives in ssh_config and sshd_config are now first-match-wins to match other directives. Previously if an environment variable was multiply specified the last set value would have been used. bz3438 * ssh-keygen(8): ssh-keygen -A (generate all default host key types) will no longer generate DSA keys, as these are insecure and have not been used by default for some years. New features ------------ * ssh(1), sshd(8): add a RequiredRSASize directive to set a minimum RSA key length. Keys below this length will be ignored for user authentication and for host authentication in sshd(8). * sftp-server(8): add a "users-groups-by-id@openssh.com" extension request that allows the client to obtain user/group names that correspond to a set of uids/gids. * sftp(1): use "users-groups-by-id@openssh.com" sftp-server extension (when available) to fill in user/group names for directory listings. * sftp-server(8): support the "home-directory" extension request defined in draft-ietf-secsh-filexfer-extensions-00. This overlaps a bit with the existing "expand-path@openssh.com", but some other clients support it. * ssh-keygen(1), sshd(8): allow certificate validity intervals, sshsig verification times and authorized_keys expiry-time options to accept dates in the UTC time zone in addition to the default of interpreting them in the system time zone. YYYYMMDD and YYMMDDHHMM[SS] dates/times will be interpreted as UTC if suffixed with a 'Z' character. Also allow certificate validity intervals to be specified in raw seconds-since-epoch as hex value, e.g. -V 0x1234:0x4567890. This is intended for use by regress tests and other tools that call ssh-keygen as part of a CA workflow. bz3468 * sftp(1): allow arguments to the sftp -D option, e.g. sftp -D "/usr/libexec/sftp-server -el debug3" * ssh-keygen(1): allow the existing -U (use agent) flag to work with "-Y sign" operations, where it will be interpreted to require that the private keys is hosted in an agent; bz3429 MFC after: 2 weeks Relnotes: Yes Sponsored by: The FreeBSD Foundation
85 lines
3.0 KiB
Plaintext
85 lines
3.0 KiB
Plaintext
The SSH agent protocol is described in
|
|
https://tools.ietf.org/html/draft-miller-ssh-agent-04
|
|
|
|
This file documents OpenSSH's extensions to the agent protocol.
|
|
|
|
1. session-bind@openssh.com extension
|
|
|
|
This extension allows a ssh client to bind an agent connection to a
|
|
particular SSH session identifier as derived from the initial key
|
|
exchange (as per RFC4253 section 7.2) and the host key used for that
|
|
exchange. This binding is verifiable at the agent by including the
|
|
initial KEX signature made by the host key.
|
|
|
|
The message format is:
|
|
|
|
byte SSH_AGENTC_EXTENSION (0x1b)
|
|
string session-bind@openssh.com
|
|
string hostkey
|
|
string session identifier
|
|
string signature
|
|
bool is_forwarding
|
|
|
|
Where 'hostkey' is the encoded server host public key, 'session
|
|
identifier' is the exchange hash derived from the initial key
|
|
exchange, 'signature' is the server's signature of the session
|
|
identifier using the private hostkey, as sent in the final
|
|
SSH2_MSG_KEXDH_REPLY/SSH2_MSG_KEXECDH_REPLY message of the initial key
|
|
exchange. 'is_forwarding' is a flag indicating whether this connection
|
|
should be bound for user authentication or forwarding.
|
|
|
|
When an agent received this message, it will verify the signature and
|
|
check the consistency of its contents, including refusing to accept
|
|
a duplicate session identifier, or any attempt to bind a connection
|
|
previously bound for authentication. It will then then record the
|
|
binding for the life of the connection for use later in testing per-key
|
|
destination constraints.
|
|
|
|
2. restrict-destination-v00@openssh.com key constraint extension
|
|
|
|
The key constraint extension supports destination- and forwarding path-
|
|
restricted keys. It may be attached as a constraint when keys or
|
|
smartcard keys are added to an agent.
|
|
|
|
byte SSH_AGENT_CONSTRAIN_EXTENSION (0xff)
|
|
string restrict-destination-v00@openssh.com
|
|
constraint[] constraints
|
|
|
|
Where a constraint consists of:
|
|
|
|
string from_username (must be empty)
|
|
string from_hostname
|
|
keyspec[] from_hostkeys
|
|
string to_username
|
|
string to_hostname
|
|
keyspec[] to_hostkeys
|
|
|
|
And a keyspec consists of:
|
|
|
|
string keyblob
|
|
bool is_ca
|
|
|
|
When receiving this message, the agent will ensure that the
|
|
'from_username' field is empty, and that 'to_hostname' and 'to_hostkeys'
|
|
have been supplied (empty 'from_hostname' and 'from_hostkeys' are valid
|
|
and signify the initial hop from the host running ssh-agent). The agent
|
|
will then record the constraint against the key.
|
|
|
|
Subsequent operations on this key including add/remove/request
|
|
identities and, in particular, signature requests will check the key
|
|
constraints against the session-bind@openssh.com bindings recorded for
|
|
the agent connection over which they were received.
|
|
|
|
3. SSH_AGENT_CONSTRAIN_MAXSIGN key constraint
|
|
|
|
This key constraint allows communication to an agent of the maximum
|
|
number of signatures that may be made with an XMSS key. The format of
|
|
the constraint is:
|
|
|
|
byte SSH_AGENT_CONSTRAIN_MAXSIGN (0x03)
|
|
uint32 max_signatures
|
|
|
|
This option is only valid for XMSS keys.
|
|
|
|
$OpenBSD: PROTOCOL.agent,v 1.18 2022/09/21 22:26:50 dtucker Exp $
|