Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
0.45.0
->0.52.1
0.45.0
->0.49.2
Release Notes
warp-tech/russh (russh)
v0.52.1
Compare Source
Fixes
5e91396
: fixed #515 - unexpected pre-kex message causing panic #516v0.52.0
Compare Source
Features
ChannelWriteHalf::make_writer[_ext]
public, fix #498 (#499) #499 (Mingwei Samuel)ChannelReadHalf::make_reader[_ext]
, #498 (#502) #502 (Mingwei Samuel)ec273f8
: AddHandle::send_keepalive
(#511) (Uli Schlachter) #511fd9da16
: Addedclient::Handle::debug
(#510) (Pascal Grange) #5103d09c20
: Support of SSH 1.99 (#514) (Jacob Van Brunt) #514Fixes
20ea6a0
: Handle unexpected EOF as expected in session closure (#495) (lgmugnier) #4956a6fa80
: make ChannelCloseOnDrop asyncc2fa2df
: fixed #506 - removed faultyserver-sig-algs
timeout on wasm (#508) #508v0.51.1
Compare Source
Changes
71cd4ab
: fixed #468 - allow RSA keys below 2048-bit lengthrussh
has previously disallowed <2048-bit RSA keys - whether as private or as server host keys, both as server and client due to a security check in thessh-key
crate.This behaviour has now been changed to allow these keys, and the decision to accept or reject them now lies on the library consumer. To recreate the old behaviour within your
Handler
, add the following check to yourcheck_server_key
implementation. You'll need to import thersa
crate.0c722b8
:partial_success
support (#478) #47832a9ee1
: Add a crate feature to enable DSA support (#473) (Francesco Degrassi) #473db5e5ba
: wait for extension info from the server in thebest_supported_rsa_hash
method. Previously there was a race condition between callingbest_supported_rsa_hash
and the server sending theEXT_INFO
message. Nowrussh
will wait for up to one second to receiveEXT_INFO
when you callbest_supported_rsa_hash
.92362fc
: IntroduceChannel::split()
to allow splitting a channel into a read half and a write half (#482) (Uli Schlachter) #48232667df
: Added support for additional DH groups (#486) (Jacob Van Brunt) #486libc
dependency withnix
(#483) #483 (iHsin)Fixes
0665aac
: Cryptovec/Windows: Add reference counting per Page, improve error-msg (#471) (Adrian Müller (DTT)) #4710b4cf36
: Optimize examples/client_open_direct_tcpip.rs (#477) (handewo) #477ffc5726
: Remove unused dependencies (#488) (Uli Schlachter) #488v0.51.0
Compare Source
v0.50.4
Compare Source
Fixes
83aacd1
: re-fixed #470 - correctly ignore hash_alg argument when signing with non-RSA keys via agentbf235bc
: fixed #470 - incorrect hash passed for an RSA key offer in agent authenticationv0.50.3
Compare Source
Changes
b5e244b
: populate comments for agent identities (#466) (Chris) #46607d6243
: Add a function to send ExitStatus message to Channel (#465) (procr1337) #465Fixes
16a18bc
: fixed #470 - broken agent auth withrsa-sha2-*
algosv0.50.2
Compare Source
[email protected]
Changes
e574068
: fixed #460 - do not panic on mlock failures (#464) (Eugene) #464Reverted a change from
0.50.0
that madecryptovec
panic when the OS fails tomlock()
the memory.Instead,
russh-cryptovec
will log a one-timelog
warning about this.A common cause for these errors is running on Linux under a low
RLIMIT_MEMLOCK
limitDocs
6a59d0e
: Add client demo that implement open direct tcpip. (https://github.com/Eugeny/russh/pull/454) (handewo) https://github.com/Eugeny/russh/pull/454v0.50.1
Compare Source
v0.50.0
Compare Source
Significant changes
russh_keys
merged intorussh
23cc724
: (#450) - therussh_keys
crate has been fully merged intorussh
. If you have been importing fromrussh::keys
, no changes are needed, otherwise remove therussh_keys
dependency and replace alluse russh_keys
imports withuse russh::keys
.Native async traits
3e04597
: (#455) -client::Handler
,server::Handler
and other traits are now native Rust async traits. In most cases, you can simply remove the#[async_trait]
macro from your trait impl. Alternatively, you can enable theasync_trait
feature, which will turn the traits into#[async_trait]
s again. Note that the oldasync_trait
support will be removed soon.RSA hash negotiation
72847a7
/d4d3605
: support automatic RSA key hash detection using server-sig-algs extension (#452 / #453)Russh client now supports the
server-sig-algs
OpenSSH extension and can automatically select the strongest hash for RSA keys.You can use
russh::client::Handle::best_supported_rsa_hash()
to choose the hash.PrivateKeyWithHashAlg::new
is now infallible and will ignorehash_alg
for non-RSA keys, so you don't have to build separate logic just for RSA keys:If you just want to fall back to SHA1 /
ssh-rsa
in case the server does not supportserver-sig-algs
:Channel backpressure
f89c19c
: added backpressure to channel buffers (#412) (Eric Rodrigues Pires) #412 - setConfig::channel_buffer_size
to control how many channel messages can be buffered before backpressure propagates over the network. Previouslyrussh
would simply buffer unread channel messages infinitely, eventually causing an out-of-RAM situation, and now it will block the connection until you consume them. Even if the server does not write data to the channel (e.g. it's a write-only channel for you as a client), it is still writing flow control messages, which you must consume.So, any time you open a channel, make sure you have a loop somewhere that is either polling
.wait()
or reads from theAsyncRead
side of itsChannelStream
.ssh-key
traitsab8aca8
:russh
has migrated to its own fork of thessh-key
crate, removed bundled workarounds - if you were relying on traits directly imported fromssh_key
, you might need to import them fromrussh::keys::ssh_key
instead.New features
c9baadf
: DH GEX support (#440) -diffie-hellman-group-exchange-sha256
KEX is now on the default kex list. To take advantage of dynamic DH groups, pre-generate some safe primes and implement dynamic group lookup in theserver::Handler::lookup_dh_gex_group
method - see this method's docs for more info.66f9416
: Add an option to enable TCP_NODELAY (#435) (Patryk Wychowaniec)571dbe3
: added support for loading PPK v2 and v3 private keys030468a
: addedauthentication_banner
method to server::Handler (#415) (Eric Rodrigues Pires) #415 - you can now send a dynamic SSH banner to clients.4c7b27a
: expose the "remaining methods" field in auth failure responses #44177f53ed
: support for parsing X9.62 EC private keys902010f
: Allow setting hash algorithm to use for signing requests of SSH agent (#449) (Wiktor Kwapisiewicz) #449MSRV
MSRV for the
russh
crate is now 1.75Changes
7c7cb1b
: feature-gatedes
dependency (#424) (Eric Seppanen) #424d9fb484
: Include error-reason when failining in CryptoVec unix (#443) (Adrian Müller (DTT)) #443Fixes
7c1060f
: fixed client keyboard-interactive auth not working as second auth methodad56a8e
: fixed #418 - client - incorrect kex signature verification for RSA-SHA285c45cb
: Remove calls to dbg!() (#414) (Eric Rodrigues Pires) #41465bc5e2
: remove unused bcrypt-pbkdf dependency (#421) (Eric Seppanen) #421cb22369
: src/platform/unix.rs:cfg detect macos (#447) (@RandyMcMillan) #447039054b
: bump dependency versions to the minimum version that compiles. (#428) (Eric Seppanen) #428242b1e1
: replace unmaintained tempdir dependency with tempfile (#423) (Eric Seppanen) #42349ab949
: Enforce MSRV (#430) #430290bdbe
: fixed unwrap panic in pageant4fe938e
: Send proper algorithm for certificates (#451) (Jerome Gravel-Niquet) #451v0.49.2
Compare Source
Fixes
cb5d3ba
: fixed #418 - client - incorrect kex signature verification for RSA-SHA297ec468
: Remove calls to dbg!() (#414) (Eric Rodrigues Pires)v0.49.1
Compare Source
v0.49.0
Compare Source
Changes
This release fixes the regression in v0.48 which made it impossible to choose the hash algorithm when using RSA keys for authentication. Unfortunately, the fix is a breaking API change, hence the version bump.
client::Handle::authenticate_publickey
now takes arussh_keys::key::PrivateKeyWithHashAlg
which you can construct from anArc<russh_keys::PrivateKey>
+Option<russh_keys::HashAlg>
.The latter lets you choose between SHA1, SHA256 and SHA512 for RSA keys, and must be
None
for all other key types.Example:
v0.48.2
Compare Source
Fixes
044da62
: fixed handling ofrsa-sha2-*
key algorithmsv0.48.1
Compare Source
Breaking changes
russh
v0.48 drops its own data parsing and key handling code in favor of the RustCrypto project'sssh-key
(#368) andssh-encoding
(#371) crates. This means there are some breaking changes, which are listed here:Important for library users
russh_keys::key::PublicKey
is replaced withrussh_keys::PublicKey
(ssh_key::PublicKey
)russh_keys::key::KeyPair
is replaced withrussh_keys::PrivateKey
(ssh_key::PrivateKey
)russh_keys::key::parse_public_key
no longer takes a hash algorithm argument as RSA keys are no longer locked down to a specific algorithm internally. RSA key specific hash algorithms are only used inPreferred::key
.Key type constants in
russh_keys::key
andrussh_keys::key::Name
are removed - use therussh_keys::Algorithm
enum instead.Config::preferred::key
now also takesrussh_keys::Algorithm
s instead ofrussh_key::key::Name
s.russh::client::Handle::authenticate_future
is renamed torussh::client::Handle::authenticate_publickey_with
Less important
new
russh::Error
enum variants:Error:Signature
Error:SshKey
Error:SshEncoding
new
russh_keys::Error
enum variants:Error::Rsa
Error::Utf8
russh::auth::Signer
is now anasync_trait
russh_keys::ec
is removedrussh_keys::encoding
is removed (userussh_keys::ssh_encoding
)russh_keys::signature
is removedrussh_keys::protocol
is removedrussh_keys::key::SignatureHash
is replaced withrussh_keys::HashAlg
(ssh_key::HashAlg
)russh_keys::key::SignatureBytes
is removedrussh_keys::key::RsaPrivate
is removed (userussh_keys::ssh_key::private::RsaPrivateKey
)russh_keys::key::RsaPublic
is removed (userussh_keys::ssh_key::public::RsaPublicKey
)russh_keys::key::RsaCrtExtra
is removedrussh_keys::key::Signature
is replaced withrussh_keys::signature::Signature
(signature::Signature
)Features
aa9bdb4
: added support for sk-ecdsa-sha2-nistp256-cert-v01@openssh.com and sk-ssh-ed25519-cert-v01@openssh.com keys in client68fff93
: Add support for StrictHostKeyChecking and UserKnownHostsFile (#386) (Mattias Eriksson) #386981cf7b
: Derive Debug where possible (#374) (Quentin Santos) #374c328558
: Implement From<&str> and From<&[u8]> for CryptoVec (#391) (Josh McKinney) #391Fixes
47ca41d
: Send proper algorithm for certificates (#378) (Jerome Gravel-Niquet) #3782d8c08a
: ratatui examples fixed. (#388) (André Almeida) #388bd6dc3a
: impl Drop for server examples (#376) (Eric Rodrigues Pires) #376ac441a6
: fix:remove unused memcpy function (#406) (irvingouj @ Devolutions) #406a5c4adc
: #401 - removing TX busywait (#408) #408Docs
2dca3c6
: Document how to reply to channel requests (#381) (Quentin Santos) #381v0.48.0
Compare Source
v0.46.0
Compare Source
Changes
97dc08b
: Support Pageant as agent (#326) #32626aae26
: added named pipe support forAgentClient
andAgentClient::dynamic()
8b88465
: addedAgentClient::into_inner
67a6ba8
: Implementstreamlocal-forward
for remote => local UDS forwarding (#312) (kanpov) #312b9759d4
: client channel handling changes -server_channel_open_direct_tcpip
,server_channel_open_agent_forward
andserver_channel_open_session
now receive aChannel
instead of aChannelId
. Also addedshould_accept_unknown_server_channel
andserver_channel_open_unknown
callbacks.d6ee97a
: new richNoCommonAlgo
errorcb8d9e9
: fixed #338 - makeKeyPair::generate_ed25519
infallible9444608
: Add a way to open an agent forwarding channel (#344) (Thomas Rampelberg) #344ee59e07
: Added25519
to ALL_KEY_TYPES (#360) (Toni Peter) #3603f7271b
: fixed #358 - relax strict kex checks to match OpenSSH72aa097
: Update deps (#363) (Lucas Kent) #363Fixes
b704f4c
: Remove leftover extraneous debugging in host globbing function (#328) (Adam Chappell) #328c99f49c
: fixedError::Disconnect
getting returned fromconnect
instead of the more specific error type when connection fails during kex phase73fa3e5
: Improve echoserver example, bump Rust toolchain to 1.81 (#339) (Julian) #339f587d13
: Reject unsupported key types instead of failing (#352) (Gary Guo) #3526df962d
: Minor accuracy improvements to server documentation (#346) (Kaleb Elwert) #346cd84f4d
: Update sftp examples (#357) (Roman) #357Configuration
📅 Schedule: Branch creation - "after 8pm,before 6am" in timezone America/Los_Angeles, Automerge - "after 8pm,before 6am" in timezone America/Los_Angeles.
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.
This PR has been generated by Renovate Bot.