net-ssh 7.3.0 → 7.3.3
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/.dockerignore +3 -0
- data/.github/workflows/ci-with-docker.yml +21 -7
- data/.github/workflows/ci.yml +12 -7
- data/.rubocop_todo.yml +1 -1
- data/CHANGES.txt +18 -0
- data/Dockerfile.zlib_ng +29 -0
- data/docker-compose.yml +0 -2
- data/lib/net/ssh/authentication/ed25519_loader.rb +2 -2
- data/lib/net/ssh/authentication/key_manager.rb +21 -6
- data/lib/net/ssh/config.rb +2 -1
- data/lib/net/ssh/known_hosts.rb +2 -0
- data/lib/net/ssh/service/forward.rb +3 -3
- data/lib/net/ssh/test/extensions.rb +3 -2
- data/lib/net/ssh/test/socket.rb +1 -1
- data/lib/net/ssh/transport/gcm_cipher.rb +1 -1
- data/lib/net/ssh/transport/session.rb +2 -2
- data/lib/net/ssh/version.rb +1 -1
- data/lib/net/ssh.rb +1 -5
- data/net-ssh-public_cert.pem +7 -7
- data/net-ssh.gemspec +1 -0
- data.tar.gz.sig +0 -0
- metadata +27 -12
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0d9097275f7c3c0123783d9c29f8c4c4bfe3a3c8d68410357078e91859950f3f
|
|
4
|
+
data.tar.gz: b5a1013faa8b1cfbe5645e849329c99b62db9d944894287747a12c33f5356d9a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 04ceefc617349311ddceebb606aa003dec8c6aa671363a13f939486d1bdfa5b55c49a56096651d8667f30f57ea109728e3cdae1f25545aa3c1c892b1db2948bf
|
|
7
|
+
data.tar.gz: 3a9f23ad8a0843628f5dc500c83ceabca815756f925fbddc9725a12e0e19a9eeacf42f26f924b9c038edf8e95f832720c2297b0d0c8fdfcd6844f94d72f834b9
|
checksums.yaml.gz.sig
CHANGED
|
Binary file
|
data/.dockerignore
CHANGED
|
@@ -12,22 +12,22 @@ jobs:
|
|
|
12
12
|
|
|
13
13
|
steps:
|
|
14
14
|
- name: Checkout code
|
|
15
|
-
uses: actions/checkout@
|
|
15
|
+
uses: actions/checkout@v4
|
|
16
16
|
|
|
17
17
|
- name: Build docker images
|
|
18
|
-
run: docker
|
|
18
|
+
run: docker compose build
|
|
19
19
|
|
|
20
20
|
- name: Run ruby 2.6
|
|
21
|
-
run: docker
|
|
21
|
+
run: docker compose run ruby-2.6
|
|
22
22
|
|
|
23
23
|
- name: Run ruby 2.7
|
|
24
|
-
run: docker
|
|
24
|
+
run: docker compose run ruby-2.7
|
|
25
25
|
|
|
26
26
|
- name: Run ruby 3.0
|
|
27
|
-
run: docker
|
|
27
|
+
run: docker compose run ruby-3.0
|
|
28
28
|
|
|
29
29
|
- name: Run ruby 3.1
|
|
30
|
-
run: docker
|
|
30
|
+
run: docker compose run ruby-3.1
|
|
31
31
|
|
|
32
32
|
test_openssl3:
|
|
33
33
|
name: Run test suite with docker and openssl 3.0
|
|
@@ -35,10 +35,24 @@ jobs:
|
|
|
35
35
|
|
|
36
36
|
steps:
|
|
37
37
|
- name: Checkout code
|
|
38
|
-
uses: actions/checkout@
|
|
38
|
+
uses: actions/checkout@v4
|
|
39
39
|
|
|
40
40
|
- name: Build docker images
|
|
41
41
|
run: docker build -t netssh_openssl3 -f Dockerfile.openssl3 .
|
|
42
42
|
|
|
43
43
|
- name: Run ruby 3.0 with openssl3
|
|
44
44
|
run: docker run --rm netssh_openssl3
|
|
45
|
+
|
|
46
|
+
test_zlib_ng:
|
|
47
|
+
name: Run test suite with docker and zlib-ng
|
|
48
|
+
runs-on: ubuntu-latest
|
|
49
|
+
|
|
50
|
+
steps:
|
|
51
|
+
- name: Checkout code
|
|
52
|
+
uses: actions/checkout@v4
|
|
53
|
+
|
|
54
|
+
- name: Build docker images
|
|
55
|
+
run: docker build -t netssh_zlib_ng -f Dockerfile.zlib_ng .
|
|
56
|
+
|
|
57
|
+
- name: Run ruby with zlib-ng
|
|
58
|
+
run: docker run --rm netssh_zlib_ng
|
data/.github/workflows/ci.yml
CHANGED
|
@@ -7,7 +7,7 @@ jobs:
|
|
|
7
7
|
runs-on: ubuntu-22.04
|
|
8
8
|
strategy:
|
|
9
9
|
matrix:
|
|
10
|
-
ruby-version: [2.6.10, 2.7.7, 3.0.6, 3.1.3, 3.2.1, 3.3.0]
|
|
10
|
+
ruby-version: [2.6.10, 2.7.7, 3.0.6, 3.1.3, 3.2.1, 3.3.0, 3.4]
|
|
11
11
|
steps:
|
|
12
12
|
- uses: actions/checkout@v3
|
|
13
13
|
|
|
@@ -21,16 +21,16 @@ jobs:
|
|
|
21
21
|
python-version: 3.8
|
|
22
22
|
|
|
23
23
|
- name: Cache bundler
|
|
24
|
-
uses: actions/cache@
|
|
24
|
+
uses: actions/cache@v4
|
|
25
25
|
id: bundler-cache
|
|
26
26
|
with:
|
|
27
27
|
path: vendor/bundle
|
|
28
28
|
key: ${{ runner.os }}-${{ matrix.ruby-version }}-gem-v3-${{ hashFiles('**/Gemfile') }}-${{ hashFiles('**/net-ssh.gemspec') }}
|
|
29
29
|
restore-keys: |
|
|
30
30
|
${{ runner.os }}-${{ matrix.ruby-version }}-gem-v3-
|
|
31
|
-
|
|
31
|
+
|
|
32
32
|
- name: Cache pip
|
|
33
|
-
uses: actions/cache@
|
|
33
|
+
uses: actions/cache@v4
|
|
34
34
|
id: pip-cache
|
|
35
35
|
with:
|
|
36
36
|
path: ~/.cache/pip
|
|
@@ -42,12 +42,12 @@ jobs:
|
|
|
42
42
|
gem install bundler ${{ (startsWith(matrix.ruby-version, '2.6.') || startsWith(matrix.ruby-version, '2.7.')) && '-v 2.4.22' || '' }}
|
|
43
43
|
bundle config set path 'vendor/bundle'
|
|
44
44
|
bundle config set --local path 'vendor/bundle'
|
|
45
|
-
bundle install --jobs 4 --retry 3
|
|
46
|
-
BUNDLE_GEMFILE=./Gemfile.noed25519 bundle install --jobs 4 --retry 3
|
|
45
|
+
bundle install --jobs 4 --retry 3
|
|
46
|
+
BUNDLE_GEMFILE=./Gemfile.noed25519 bundle install --jobs 4 --retry 3
|
|
47
47
|
env:
|
|
48
48
|
BUNDLE_PATH: vendor/bundle
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
|
|
51
51
|
- name: Add to etc/hosts
|
|
52
52
|
run: |
|
|
53
53
|
sudo echo "127.0.0.1 gateway.netssh" | sudo tee -a /etc/hosts
|
|
@@ -78,17 +78,22 @@ jobs:
|
|
|
78
78
|
env:
|
|
79
79
|
NET_SSH_RUN_INTEGRATION_TESTS: 1
|
|
80
80
|
CI: 1
|
|
81
|
+
RUBYOPT: '--enable=frozen-string-literal'
|
|
81
82
|
- name: Run tests (without rbnacl)
|
|
82
83
|
run: bundle exec rake test
|
|
83
84
|
env:
|
|
84
85
|
BUNDLE_GEMFILE: ./Gemfile.norbnacl
|
|
85
86
|
NET_SSH_RUN_INTEGRATION_TESTS: 1
|
|
86
87
|
CI: 1
|
|
88
|
+
RUBYOPT: '--enable=frozen-string-literal'
|
|
87
89
|
- name: Run Tests (without ed25519)
|
|
88
90
|
run: bundle exec rake test
|
|
89
91
|
env:
|
|
90
92
|
BUNDLE_GEMFILE: ./Gemfile.noed25519
|
|
91
93
|
NET_SSH_RUN_INTEGRATION_TESTS: 1
|
|
92
94
|
CI: 1
|
|
95
|
+
RUBYOPT: '--enable=frozen-string-literal'
|
|
93
96
|
- name: Run test helper test
|
|
94
97
|
run: bundle exec rake test_test
|
|
98
|
+
env:
|
|
99
|
+
RUBYOPT: '--enable=frozen-string-literal'
|
data/.rubocop_todo.yml
CHANGED
|
@@ -235,7 +235,7 @@ Lint/UselessTimes:
|
|
|
235
235
|
# Offense count: 205
|
|
236
236
|
# Configuration parameters: IgnoredMethods, CountRepeatedAttributes.
|
|
237
237
|
Metrics/AbcSize:
|
|
238
|
-
Max:
|
|
238
|
+
Max: 76
|
|
239
239
|
|
|
240
240
|
# Offense count: 16
|
|
241
241
|
# Configuration parameters: CountComments, CountAsOne, ExcludedMethods, IgnoredMethods.
|
data/CHANGES.txt
CHANGED
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
=== 7.3.3
|
|
2
|
+
|
|
3
|
+
* Support .pub file as IdentityFile to filter/prioritize agent keys (1Password SSH agent use case) [#942]
|
|
4
|
+
* Fix cert signing regression when using a .pub companion file without an agent [#1006]
|
|
5
|
+
* Fix unreadable .pub IdentityFile silently skipped instead of raising [#1006]
|
|
6
|
+
* Allow multiple UserKnownHostsFile entries (space-separated, matching ssh_config(5)) [#979]
|
|
7
|
+
* Stop mutating ENV['HOME'] at require time [#997]
|
|
8
|
+
* Fix ED25519 loader with frozen string literals [#995]
|
|
9
|
+
|
|
10
|
+
=== 7.3.2 rc2
|
|
11
|
+
|
|
12
|
+
* Fix Ruby 2.6 compat: use public_to_der fallback for EC public keys [#993]
|
|
13
|
+
* Fix test framework hang: preserve StringIO position in idle!
|
|
14
|
+
|
|
15
|
+
=== 7.3.2 rc1
|
|
16
|
+
|
|
17
|
+
* Support frozen strings [#958]
|
|
18
|
+
|
|
1
19
|
=== 7.3.0 rc0
|
|
2
20
|
|
|
3
21
|
* aes(128|256)gcm [#946]
|
data/Dockerfile.zlib_ng
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
FROM fedora:latest
|
|
2
|
+
|
|
3
|
+
ENV INSTALL_PATH="/netssh"
|
|
4
|
+
|
|
5
|
+
# Fedora's OpenSSL 3.x blocks SHA-1 for RSA/DSA signing by default.
|
|
6
|
+
# - LEGACY crypto policy relaxes the system-wide restrictions.
|
|
7
|
+
# - OPENSSL_CONF points to our config which activates the legacy provider,
|
|
8
|
+
# sets SECLEVEL=0, and sets rh-allow-sha1-signatures=yes (Fedora/RHEL
|
|
9
|
+
# OpenSSL patch that gates SHA-1 signing independently of the policy level).
|
|
10
|
+
# OPENSSL_CONF must be set as a Docker ENV so it is in the environment before
|
|
11
|
+
# Ruby/OpenSSL initialises — setting it in the Rakefile is too late.
|
|
12
|
+
ENV OPENSSL_CONF="/netssh/test/openssl3.conf"
|
|
13
|
+
|
|
14
|
+
RUN dnf install -y openssl ruby ruby-devel git make gcc zlib-ng crypto-policies-scripts && \
|
|
15
|
+
update-crypto-policies --set LEGACY
|
|
16
|
+
|
|
17
|
+
WORKDIR $INSTALL_PATH
|
|
18
|
+
|
|
19
|
+
COPY Gemfile net-ssh.gemspec $INSTALL_PATH/
|
|
20
|
+
|
|
21
|
+
COPY lib/net/ssh/version.rb $INSTALL_PATH/lib/net/ssh/version.rb
|
|
22
|
+
|
|
23
|
+
RUN ls -l && gem install bundler && bundle install
|
|
24
|
+
|
|
25
|
+
COPY . $INSTALL_PATH/
|
|
26
|
+
|
|
27
|
+
CMD openssl version && ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION' && \
|
|
28
|
+
rpm -q zlib-ng && ruby -rzlib -e 'puts Zlib.zlib_version' && \
|
|
29
|
+
rake test
|
data/docker-compose.yml
CHANGED
|
@@ -14,13 +14,13 @@ module Net
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
def self.raiseUnlessLoaded(message)
|
|
17
|
-
description = ERROR.is_a?(LoadError) ? dependenciesRequiredForED25519 : ''
|
|
17
|
+
description = ERROR.is_a?(LoadError) ? dependenciesRequiredForED25519 : +''
|
|
18
18
|
description << "#{ERROR.class} : \"#{ERROR.message}\"\n" if ERROR
|
|
19
19
|
raise NotImplementedError, "#{message}\n#{description}" unless LOADED
|
|
20
20
|
end
|
|
21
21
|
|
|
22
22
|
def self.dependenciesRequiredForED25519
|
|
23
|
-
result = "net-ssh requires the following gems for ed25519 support:\n"
|
|
23
|
+
result = +"net-ssh requires the following gems for ed25519 support:\n"
|
|
24
24
|
result << " * ed25519 (>= 1.2, < 2.0)\n"
|
|
25
25
|
result << " * bcrypt_pbkdf (>= 1.0, < 2.0)\n" unless RUBY_PLATFORM == "java"
|
|
26
26
|
result << "See https://github.com/net-ssh/net-ssh/issues/565 for more information\n"
|
|
@@ -72,12 +72,16 @@ module Net
|
|
|
72
72
|
def add(key_file)
|
|
73
73
|
key_files.push(File.expand_path(key_file)).uniq!
|
|
74
74
|
self
|
|
75
|
+
rescue ArgumentError
|
|
76
|
+
self
|
|
75
77
|
end
|
|
76
78
|
|
|
77
79
|
# Add the given keycert_file to the list of keycert files that will be used.
|
|
78
80
|
def add_keycert(keycert_file)
|
|
79
81
|
keycert_files.push(File.expand_path(keycert_file)).uniq!
|
|
80
82
|
self
|
|
83
|
+
rescue ArgumentError
|
|
84
|
+
self
|
|
81
85
|
end
|
|
82
86
|
|
|
83
87
|
# Add the given keycert_data to the list of keycerts that will be used.
|
|
@@ -172,7 +176,11 @@ module Net
|
|
|
172
176
|
def sign(identity, data, sig_alg = nil)
|
|
173
177
|
info = known_identities[identity] or raise KeyManagerError, "the given identity is unknown to the key manager"
|
|
174
178
|
|
|
175
|
-
if info[:
|
|
179
|
+
if info[:from] == :pubkey_file_only
|
|
180
|
+
raise KeyManagerError, "the given identity is a public key only and cannot be used for signing without an agent"
|
|
181
|
+
end
|
|
182
|
+
|
|
183
|
+
if info[:key].nil? && (info[:from] == :file || info[:from] == :pubkey_file)
|
|
176
184
|
begin
|
|
177
185
|
info[:key] = KeyFactory.load_private_key(info[:file], options[:passphrase], !options[:non_interactive], options[:password_prompt])
|
|
178
186
|
rescue OpenSSL::OpenSSLError, Exception => e
|
|
@@ -248,10 +256,14 @@ module Net
|
|
|
248
256
|
def prepare_identities_from_files
|
|
249
257
|
key_files.map do |file|
|
|
250
258
|
if readable_file?(file)
|
|
251
|
-
identity = {}
|
|
259
|
+
identity = { privkey_file: file }
|
|
252
260
|
cert_file = file + "-cert.pub"
|
|
253
261
|
public_key_file = file + ".pub"
|
|
254
|
-
if
|
|
262
|
+
if file.end_with?(".pub")
|
|
263
|
+
identity[:load_from] = :pubkey_file_only
|
|
264
|
+
identity[:pubkey_file] = file
|
|
265
|
+
identity.delete(:privkey_file)
|
|
266
|
+
elsif readable_file?(cert_file)
|
|
255
267
|
identity[:load_from] = :pubkey_file
|
|
256
268
|
identity[:pubkey_file] = cert_file
|
|
257
269
|
elsif readable_file?(public_key_file)
|
|
@@ -260,7 +272,7 @@ module Net
|
|
|
260
272
|
else
|
|
261
273
|
identity[:load_from] = :privkey_file
|
|
262
274
|
end
|
|
263
|
-
identity
|
|
275
|
+
identity
|
|
264
276
|
end
|
|
265
277
|
end.compact
|
|
266
278
|
end
|
|
@@ -282,7 +294,10 @@ module Net
|
|
|
282
294
|
case identity[:load_from]
|
|
283
295
|
when :pubkey_file
|
|
284
296
|
key = KeyFactory.load_public_key(identity[:pubkey_file])
|
|
285
|
-
{ public_key: key, from: :
|
|
297
|
+
{ public_key: key, from: :pubkey_file, file: identity[:privkey_file] }
|
|
298
|
+
when :pubkey_file_only
|
|
299
|
+
key = KeyFactory.load_public_key(identity[:pubkey_file])
|
|
300
|
+
{ public_key: key, from: :pubkey_file_only, file: identity[:privkey_file] }
|
|
286
301
|
when :privkey_file
|
|
287
302
|
private_key = KeyFactory.load_private_key(
|
|
288
303
|
identity[:privkey_file], options[:passphrase], ask_passphrase, options[:password_prompt]
|
|
@@ -313,7 +328,7 @@ module Net
|
|
|
313
328
|
|
|
314
329
|
def process_identity_loading_error(identity, e)
|
|
315
330
|
case identity[:load_from]
|
|
316
|
-
when :pubkey_file
|
|
331
|
+
when :pubkey_file, :pubkey_file_only
|
|
317
332
|
error { "could not load public key file `#{identity[:pubkey_file]}': #{e.class} (#{e.message})" }
|
|
318
333
|
when :privkey_file
|
|
319
334
|
error { "could not load private key file `#{identity[:privkey_file]}': #{e.class} (#{e.message})" }
|
data/lib/net/ssh/config.rb
CHANGED
|
@@ -229,7 +229,6 @@ module Net
|
|
|
229
229
|
fingerprinthash: :fingerprint_hash,
|
|
230
230
|
port: :port,
|
|
231
231
|
user: :user,
|
|
232
|
-
userknownhostsfile: :user_known_hosts_file,
|
|
233
232
|
checkhostip: :check_host_ip
|
|
234
233
|
}.freeze
|
|
235
234
|
def translate_config_key(hash, key, value, settings)
|
|
@@ -293,6 +292,8 @@ module Net
|
|
|
293
292
|
hash[:set_env] = Shellwords.split(value.to_s).map { |e| e.split '=', 2 }.to_h
|
|
294
293
|
when :numberofpasswordprompts
|
|
295
294
|
hash[:number_of_password_prompts] = value.to_i
|
|
295
|
+
when :userknownhostsfile
|
|
296
|
+
hash[:user_known_hosts_file] = value.split(/\s+/)
|
|
296
297
|
when *TRANSLATE_CONFIG_KEY_RENAME_MAP.keys
|
|
297
298
|
hash[TRANSLATE_CONFIG_KEY_RENAME_MAP[key]] = value
|
|
298
299
|
end
|
data/lib/net/ssh/known_hosts.rb
CHANGED
|
@@ -160,6 +160,8 @@ module Net
|
|
|
160
160
|
# file. The path is expanded file File.expand_path.
|
|
161
161
|
def initialize(source)
|
|
162
162
|
@source = File.expand_path(source)
|
|
163
|
+
rescue ArgumentError
|
|
164
|
+
@source = source
|
|
163
165
|
end
|
|
164
166
|
|
|
165
167
|
# Returns an array of all keys that are known to be associatd with the
|
|
@@ -48,9 +48,9 @@ module Net
|
|
|
48
48
|
# If three arguments are given, it is as if the local bind address is
|
|
49
49
|
# "127.0.0.1", and the rest are applied as above.
|
|
50
50
|
#
|
|
51
|
-
# To request an ephemeral port on the
|
|
52
|
-
# the port number. In all cases, this method will return the port
|
|
53
|
-
# has been assigned.
|
|
51
|
+
# To request an ephemeral port on the local server, provide 0 (zero) for
|
|
52
|
+
# the local port number. In all cases, this method will return the port
|
|
53
|
+
# that has been assigned.
|
|
54
54
|
#
|
|
55
55
|
# ssh.forward.local(1234, "www.capify.org", 80)
|
|
56
56
|
# assigned_port = ssh.forward.local("0.0.0.0", 0, "www.capify.org", 80)
|
|
@@ -57,8 +57,9 @@ module Net
|
|
|
57
57
|
return false unless script.next(:first)
|
|
58
58
|
|
|
59
59
|
if script.next(:first).remote?
|
|
60
|
-
|
|
61
|
-
self.
|
|
60
|
+
current_pos = pos
|
|
61
|
+
self.string = "#{self.string}#{script.next}"
|
|
62
|
+
self.pos = current_pos
|
|
62
63
|
end
|
|
63
64
|
|
|
64
65
|
return true
|
data/lib/net/ssh/test/socket.rb
CHANGED
|
@@ -102,8 +102,8 @@ module Net
|
|
|
102
102
|
# SSH known-host files.
|
|
103
103
|
def host_as_string
|
|
104
104
|
@host_as_string ||= begin
|
|
105
|
-
string = "#{host}"
|
|
106
|
-
string = "[#{string}]:#{port}" if port != DEFAULT_PORT
|
|
105
|
+
string = +"#{host}"
|
|
106
|
+
string = +"[#{string}]:#{port}" if port != DEFAULT_PORT
|
|
107
107
|
|
|
108
108
|
peer_ip = socket.peer_ip
|
|
109
109
|
|
data/lib/net/ssh/version.rb
CHANGED
data/lib/net/ssh.rb
CHANGED
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
# Make sure HOME is set, regardless of OS, so that File.expand_path works
|
|
2
|
-
# as expected with tilde characters.
|
|
3
|
-
ENV['HOME'] ||= ENV['HOMEPATH'] ? "#{ENV['HOMEDRIVE']}#{ENV['HOMEPATH']}" : Dir.pwd
|
|
4
|
-
|
|
5
1
|
require 'logger'
|
|
6
2
|
require 'etc'
|
|
7
3
|
require 'shellwords'
|
|
@@ -108,7 +104,7 @@ module Net
|
|
|
108
104
|
# * :bind_address => the IP address on the connecting machine to use in
|
|
109
105
|
# establishing connection. (:bind_address is discarded if :proxy
|
|
110
106
|
# is set.)
|
|
111
|
-
# * :check_host_ip => Also
|
|
107
|
+
# * :check_host_ip => Also check IP address when connecting to remote host.
|
|
112
108
|
# Defaults to +true+.
|
|
113
109
|
# * :compression => the compression algorithm to use, or +true+ to use
|
|
114
110
|
# whatever is supported.
|
data/net-ssh-public_cert.pem
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
|
2
2
|
MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZuZXRz
|
|
3
3
|
c2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
|
|
4
|
-
|
|
4
|
+
b20wHhcNMjYwMjE1MTAxNzUyWhcNMjcwMjE1MTAxNzUyWjBBMQ8wDQYDVQQDDAZu
|
|
5
5
|
ZXRzc2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
|
|
6
6
|
FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGJ4TbZ9H+qZ08
|
|
7
7
|
pQfJhPJTHaDCyQvCsKTFrL5O9z3tllQ7B/zksMMM+qFBpNYu9HCcg4yBATacE/PB
|
|
@@ -12,10 +12,10 @@ KP4yMn+TzaXijyjRg7gECfJr3TGASaA4bQsILFGG5dAWcwO4OMrZedR7SHj/o0Kf
|
|
|
12
12
|
3gL7P0axAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
|
13
13
|
BBQF8qLA7Z4zg0SJGtUbv3eoQ8tjIzAfBgNVHREEGDAWgRRuZXRzc2hAc29sdXRp
|
|
14
14
|
b3VzLmNvbTAfBgNVHRIEGDAWgRRuZXRzc2hAc29sdXRpb3VzLmNvbTANBgkqhkiG
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
15
|
+
9w0BAQsFAAOCAQEASsiVybehJLRPztFeFV8+SKa2BwbBSNJoAkhARVJKhpJxCfeY
|
|
16
|
+
gO7Kqb7JCykzb0anb1s6xTrzD03cWRNGE2YaoBLqnzeUqW1LPqVwmcySmnSIGH9F
|
|
17
|
+
DlFYlHaAn3oSqglyDxQx9bLngKatetx+tSfB3bLAb7Tr9PO8/lhBENbjlD4+UUwD
|
|
18
|
+
gApoZuD9pknWDH3KsITgzphswETBdo0hd9aLnRNR3EifD0lUIEit/0Yx6euSxWtI
|
|
19
|
+
ufHf4AX2UIkJbh7zCPkiNCqIr7MSWLNFG/9lOlHYsEJM8XujT1ofPobYx6YSFx/C
|
|
20
|
+
7HBrI7UX7awt6UvBZebhcHzyMHxg/B5PVQllPA==
|
|
21
21
|
-----END CERTIFICATE-----
|
data/net-ssh.gemspec
CHANGED
|
@@ -42,6 +42,7 @@ Gem::Specification.new do |spec|
|
|
|
42
42
|
spec.add_development_dependency "bundler", ">= 1.17"
|
|
43
43
|
spec.add_development_dependency "minitest", "~> 5.19"
|
|
44
44
|
spec.add_development_dependency "mocha", "~> 2.1.0"
|
|
45
|
+
spec.add_development_dependency "ostruct"
|
|
45
46
|
spec.add_development_dependency "rake", "~> 12.0"
|
|
46
47
|
spec.add_development_dependency "rubocop", "~> 1.28.0"
|
|
47
48
|
end
|
data.tar.gz.sig
CHANGED
|
Binary file
|
metadata
CHANGED
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: net-ssh
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 7.3.
|
|
4
|
+
version: 7.3.3
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Jamis Buck
|
|
8
8
|
- Delano Mandelbaum
|
|
9
9
|
- Miklós Fazekas
|
|
10
|
-
autorequire:
|
|
10
|
+
autorequire:
|
|
11
11
|
bindir: exe
|
|
12
12
|
cert_chain:
|
|
13
13
|
- |
|
|
14
14
|
-----BEGIN CERTIFICATE-----
|
|
15
15
|
MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQsFADBBMQ8wDQYDVQQDDAZuZXRz
|
|
16
16
|
c2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
|
|
17
|
-
|
|
17
|
+
b20wHhcNMjYwMjE1MTAxNzUyWhcNMjcwMjE1MTAxNzUyWjBBMQ8wDQYDVQQDDAZu
|
|
18
18
|
ZXRzc2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
|
|
19
19
|
FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGJ4TbZ9H+qZ08
|
|
20
20
|
pQfJhPJTHaDCyQvCsKTFrL5O9z3tllQ7B/zksMMM+qFBpNYu9HCcg4yBATacE/PB
|
|
@@ -25,14 +25,14 @@ cert_chain:
|
|
|
25
25
|
3gL7P0axAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
|
26
26
|
BBQF8qLA7Z4zg0SJGtUbv3eoQ8tjIzAfBgNVHREEGDAWgRRuZXRzc2hAc29sdXRp
|
|
27
27
|
b3VzLmNvbTAfBgNVHRIEGDAWgRRuZXRzc2hAc29sdXRpb3VzLmNvbTANBgkqhkiG
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
28
|
+
9w0BAQsFAAOCAQEASsiVybehJLRPztFeFV8+SKa2BwbBSNJoAkhARVJKhpJxCfeY
|
|
29
|
+
gO7Kqb7JCykzb0anb1s6xTrzD03cWRNGE2YaoBLqnzeUqW1LPqVwmcySmnSIGH9F
|
|
30
|
+
DlFYlHaAn3oSqglyDxQx9bLngKatetx+tSfB3bLAb7Tr9PO8/lhBENbjlD4+UUwD
|
|
31
|
+
gApoZuD9pknWDH3KsITgzphswETBdo0hd9aLnRNR3EifD0lUIEit/0Yx6euSxWtI
|
|
32
|
+
ufHf4AX2UIkJbh7zCPkiNCqIr7MSWLNFG/9lOlHYsEJM8XujT1ofPobYx6YSFx/C
|
|
33
|
+
7HBrI7UX7awt6UvBZebhcHzyMHxg/B5PVQllPA==
|
|
34
34
|
-----END CERTIFICATE-----
|
|
35
|
-
date:
|
|
35
|
+
date: 2026-06-27 00:00:00.000000000 Z
|
|
36
36
|
dependencies:
|
|
37
37
|
- !ruby/object:Gem::Dependency
|
|
38
38
|
name: bcrypt_pbkdf
|
|
@@ -146,6 +146,20 @@ dependencies:
|
|
|
146
146
|
- - "~>"
|
|
147
147
|
- !ruby/object:Gem::Version
|
|
148
148
|
version: 2.1.0
|
|
149
|
+
- !ruby/object:Gem::Dependency
|
|
150
|
+
name: ostruct
|
|
151
|
+
requirement: !ruby/object:Gem::Requirement
|
|
152
|
+
requirements:
|
|
153
|
+
- - ">="
|
|
154
|
+
- !ruby/object:Gem::Version
|
|
155
|
+
version: '0'
|
|
156
|
+
type: :development
|
|
157
|
+
prerelease: false
|
|
158
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
159
|
+
requirements:
|
|
160
|
+
- - ">="
|
|
161
|
+
- !ruby/object:Gem::Version
|
|
162
|
+
version: '0'
|
|
149
163
|
- !ruby/object:Gem::Dependency
|
|
150
164
|
name: rake
|
|
151
165
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -198,6 +212,7 @@ files:
|
|
|
198
212
|
- DEVELOPMENT.md
|
|
199
213
|
- Dockerfile
|
|
200
214
|
- Dockerfile.openssl3
|
|
215
|
+
- Dockerfile.zlib_ng
|
|
201
216
|
- Gemfile
|
|
202
217
|
- Gemfile.noed25519
|
|
203
218
|
- Gemfile.norbnacl
|
|
@@ -315,7 +330,7 @@ licenses:
|
|
|
315
330
|
- MIT
|
|
316
331
|
metadata:
|
|
317
332
|
changelog_uri: https://github.com/net-ssh/net-ssh/blob/master/CHANGES.txt
|
|
318
|
-
post_install_message:
|
|
333
|
+
post_install_message:
|
|
319
334
|
rdoc_options: []
|
|
320
335
|
require_paths:
|
|
321
336
|
- lib
|
|
@@ -331,7 +346,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
331
346
|
version: '0'
|
|
332
347
|
requirements: []
|
|
333
348
|
rubygems_version: 3.3.3
|
|
334
|
-
signing_key:
|
|
349
|
+
signing_key:
|
|
335
350
|
specification_version: 4
|
|
336
351
|
summary: 'Net::SSH: a pure-Ruby implementation of the SSH2 client protocol.'
|
|
337
352
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|