net-ssh 8.0.0.rc5 → 8.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: fc2758b484a06811ec2853426957b79679aa701a9d2f1c8eada66af175f4184b
4
- data.tar.gz: a784146c91fadc72022221fe35a81dcbcefda0f4adcf49a54864209de8043335
3
+ metadata.gz: b548f463639f7a9a85eca15cc065ab99d7b3c803330733198f311eb46cbc3c13
4
+ data.tar.gz: 56dd051e3ff6346e4f5684c571d1136978314762b2eb2a248af00666c4ab136f
5
5
  SHA512:
6
- metadata.gz: 4e0068af7ac00f3cd3f6c5e4a704d85b4dc42970368c9a8882114c8430e01f0d8c8fcc288fd9a4c544995f83bbf17394f65476afedbc394bf3b23ad3db8e505a
7
- data.tar.gz: 7af8864863409e1d4f3dbe15d51efd7eac78c28a19eb0c54306337c40becfcb5aa620e3c2672b0a45fc20814b1ec59a106c3414c9519a9bb762d3ea14139a739
6
+ metadata.gz: f2d469ea5e169da065852011e64ecc4c30168baac60f4b241014ec1b7c1d76512e95163f726858f94cbaf722578fd0acddacfd446f31d4dfb65faafd62c97f1d
7
+ data.tar.gz: 3582df1af6a3686ff510d86268730c6eecb5104ddcc239cfe31c324940b3a57d6522fe74c1b8cde2e42385167ee57958c669284032d39eda947ddfa1b8fc6c43
checksums.yaml.gz.sig CHANGED
@@ -1,4 +1,3 @@
1
- =�R R%�%���w�h�l� ��C�a��(�[�MJv�@tY��4!�A�>����h i�f
2
- )'��R,?�A�,D+FX��^h�q�섘C�s��Ex#x�q�b_��� �̌9N�f@
3
- ���� ��y���k
4
- w6Ղ�G������y|�XX���rmY4&K���2�42}�ż��~u�� }�>�.G ��D�����X�@I6�=ߵr� �}�����*�V��T�l~�@��{����4J��>��̜�T�_�
1
+ ���P��
2
+ '
3
+ ��)I]��O�w��{3�Yr�q�Ƚ��f2RM��s��z1ΔM��Vt�� �W"���촔��m�t��{�h����#�J!?~ �uBh��p,EF����R�k��i*/~�.�J��k�Bu:O�
data/CHANGES.txt CHANGED
@@ -1,3 +1,12 @@
1
+ === 8.0.1
2
+
3
+ * Fixed `unexpected packet type 94 during initial key exchange` (or 93) when channel data arrives during a client-initiated re-key, which broke bulk transfers at the first re-key (e.g. with `rekey_limit`, or after about 1 GB); a regression in 8.0.0 [#1063]
4
+ * `control_master: :auto` now ignores `forward_agent` (logged at info level) instead of raising ArgumentError, and logs the ignored connection options at info instead of warn level, so it works with sshkit (Kamal, Capistrano), which always passes `forward_agent: true`, `keys`, `known_hosts` and `keepalive` [#1062]
5
+
6
+ === 8.0.0
7
+
8
+ * No changes since 8.0.0 rc5.
9
+
1
10
  === 8.0.0 rc5
2
11
 
3
12
  * BREAKING: Security: a custom `verify_host_key` verifier must now implement `verify_signature` (deprecated since 5.1.0) or ArgumentError is raised; such verifiers were previously wrapped so the server's host key signature was never checked [#1050]
@@ -32,13 +32,9 @@ module Net
32
32
  VALUES = [:auto, false, nil].freeze
33
33
 
34
34
  def self.validate_options!(options)
35
- unless VALUES.include?(options[:control_master])
36
- raise ArgumentError, "control_master must be :auto or false, got #{options[:control_master].inspect}"
37
- end
38
- return unless options[:control_master] && options[:forward_agent]
35
+ return if VALUES.include?(options[:control_master])
39
36
 
40
- raise ArgumentError, "forward_agent can't be used with control_master: the ControlMaster serves agent requests " \
41
- "from its own agent only if it has ForwardAgent enabled itself, and rejects them otherwise"
37
+ raise ArgumentError, "control_master must be :auto or false, got #{options[:control_master].inspect}"
42
38
  end
43
39
 
44
40
  # Returns a Connection::Session running through the ControlMaster for
@@ -55,7 +51,7 @@ module Net
55
51
  return nil unless socket
56
52
 
57
53
  logger.info { "control_master: using ControlMaster at #{path}" }
58
- warn_master_owned(logger, explicit)
54
+ log_master_owned(logger, explicit)
59
55
  begin
60
56
  transport = ProxyTransport.new(socket, host: host, control_path: path, options: options)
61
57
  Connection::Session.new(transport, session_options(logger, options))
@@ -108,23 +104,23 @@ module Net
108
104
  ControlPath.jump_host(proxy.jump_proxies)
109
105
  end
110
106
 
111
- def self.warn_master_owned(logger, explicit)
107
+ def self.log_master_owned(logger, explicit)
112
108
  bypassed = explicit & MASTER_OWNED_OPTIONS
113
109
  return if bypassed.empty?
114
110
 
115
- logger.warn { "control_master: ignoring #{bypassed.join(', ')}, the ControlMaster's own settings apply" }
111
+ logger.info { "control_master: ignoring #{bypassed.join(', ')}, the ControlMaster's own settings apply" }
116
112
  end
117
113
 
118
114
  # Keepalive is a global request, which the master doesn't allow; it
119
- # watches its own connection anyway. ForwardAgent from ssh_config is
120
- # dropped for the reason given in validate_options!.
115
+ # watches its own connection anyway. The master serves agent requests
116
+ # from its own agent only if it has ForwardAgent enabled itself.
121
117
  def self.session_options(logger, options)
122
118
  logger.info { "control_master: keepalive is left to the ControlMaster" } if options[:keepalive]
123
119
  logger.info { "control_master: ignoring ForwardAgent, the ControlMaster's own ForwardAgent setting applies" } if options[:forward_agent]
124
120
  options.merge(keepalive: false, forward_agent: false)
125
121
  end
126
122
 
127
- private_class_method :open_proxy, :socket_path, :jump_host, :warn_master_owned, :session_options
123
+ private_class_method :open_proxy, :socket_path, :jump_host, :log_master_owned, :session_options
128
124
  end
129
125
  end
130
126
  end
@@ -228,7 +228,8 @@ module Net
228
228
 
229
229
  else
230
230
  return packet if algorithms.allow?(packet)
231
- raise Net::SSH::Exception, "unexpected packet type #{packet.type} during initial key exchange" unless algorithms.initialized?
231
+ # Algorithms#rekey! clears initialized?, so the session id is what marks the first key exchange as done.
232
+ raise Net::SSH::Exception, "unexpected packet type #{packet.type} during initial key exchange" unless algorithms.session_id
232
233
 
233
234
  push(packet)
234
235
  end
@@ -52,11 +52,11 @@ module Net
52
52
  MINOR = 0
53
53
 
54
54
  # The tiny component of this version of the Net::SSH library
55
- TINY = 0
55
+ TINY = 1
56
56
 
57
57
  # The prerelease component of this version of the Net::SSH library
58
58
  # nil allowed
59
- PRE = "rc5"
59
+ PRE = nil
60
60
 
61
61
  # The current version of the Net::SSH library as a Version instance
62
62
  CURRENT = new(*[MAJOR, MINOR, TINY, PRE].compact)
data/lib/net/ssh.rb CHANGED
@@ -125,21 +125,21 @@ module Net
125
125
  # for setting up a connection (:keys, :key_data, :password, :passphrase,
126
126
  # :auth_methods, :verify_host_key, :known_hosts, :host_key, :kex,
127
127
  # :encryption, :hmac, :compression, :rekey_*, :proxy, :keepalive and the
128
- # like); explicitly passed ones are named in a logger warning. Over the
128
+ # like); explicitly passed ones are named at info level. Over the
129
129
  # master, remote port forwarding (Service::Forward#remote and
130
130
  # #cancel_remote) raises Net::SSH::NotSupportedOverControlMaster, as the
131
131
  # master consumes the global request reply, so success, failure and the
132
132
  # port allocated for port 0 can't be observed; other global requests
133
133
  # raise it too. Agent and X11 forwarding requests raise it
134
- # too, and :forward_agent can't be combined with it, because the master
135
- # serves them from its own agent or display only if it has ForwardAgent
136
- # or ForwardX11 enabled itself, and rejects them otherwise. Keepalive and
137
- # rekeying are left to the master. ssh_config's ControlMaster is
138
- # ignored, only this option enables it. An invalid ControlPath raises
139
- # ArgumentError. A missing or stale socket is logged at info level, a
140
- # socket that can't be used (another owner, refused, wrong protocol,
141
- # timed out) at warn level. Has no effect on Windows. Defaults to
142
- # +false+.
134
+ # too, and :forward_agent is ignored (logged at info level), because the
135
+ # master serves them from its own agent or display only if it has
136
+ # ForwardAgent or ForwardX11 enabled itself, and rejects them otherwise.
137
+ # Keepalive and rekeying are left to the master. ssh_config's
138
+ # ControlMaster is ignored, only this option enables it. An invalid
139
+ # ControlPath raises ArgumentError. A missing or stale socket is logged
140
+ # at info level, a socket that can't be used (another owner, refused,
141
+ # wrong protocol, timed out) at warn level. Has no effect on Windows.
142
+ # Defaults to +false+.
143
143
  # * :control_path => the ControlMaster socket to use with
144
144
  # :control_master, with the same ~, ${ENV} and % tokens as ssh_config's
145
145
  # ControlPath (%C, %d, %h, %i, %j, %k, %L, %l, %n, %p, %r, %u, %%).
@@ -154,7 +154,8 @@ module Net
154
154
  # files. Defaults to +true+.
155
155
  # * :encryption => the encryption cipher (or ciphers) to use
156
156
  # * :forward_agent => set to true if you want the SSH agent connection to
157
- # be forwarded
157
+ # be forwarded. Ignored for a session through a ControlMaster (see
158
+ # :control_master).
158
159
  # * :known_hosts => a custom object holding known hosts records.
159
160
  # It must implement #search_for and `add` in a similiar manner as KnownHosts.
160
161
  # * :global_known_hosts_file => the location of the global known hosts
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 8.0.0.rc5
4
+ version: 8.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamis Buck
@@ -32,7 +32,7 @@ cert_chain:
32
32
  ufHf4AX2UIkJbh7zCPkiNCqIr7MSWLNFG/9lOlHYsEJM8XujT1ofPobYx6YSFx/C
33
33
  7HBrI7UX7awt6UvBZebhcHzyMHxg/B5PVQllPA==
34
34
  -----END CERTIFICATE-----
35
- date: 2026-10-20 00:00:00.000000000 Z
35
+ date: 2026-10-21 00:00:00.000000000 Z
36
36
  dependencies:
37
37
  - !ruby/object:Gem::Dependency
38
38
  name: logger
@@ -342,9 +342,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
342
342
  version: '2.7'
343
343
  required_rubygems_version: !ruby/object:Gem::Requirement
344
344
  requirements:
345
- - - ">"
345
+ - - ">="
346
346
  - !ruby/object:Gem::Version
347
- version: 1.3.1
347
+ version: '0'
348
348
  requirements: []
349
349
  rubygems_version: 3.3.3
350
350
  signing_key:
metadata.gz.sig CHANGED
Binary file