net-ssh 2.8.0 → 2.9.0
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.
- data.tar.gz.sig +0 -0
- data/.travis.yml +11 -0
- data/CHANGES.txt +20 -0
- data/Rakefile +2 -2
- data/gem-public_cert.pem +15 -15
- data/lib/net/ssh.rb +4 -2
- data/lib/net/ssh/authentication/agent/socket.rb +2 -0
- data/lib/net/ssh/authentication/key_manager.rb +6 -5
- data/lib/net/ssh/authentication/session.rb +2 -2
- data/lib/net/ssh/config.rb +29 -14
- data/lib/net/ssh/known_hosts.rb +12 -4
- data/lib/net/ssh/test/socket.rb +1 -1
- data/lib/net/ssh/transport/algorithms.rb +13 -4
- data/lib/net/ssh/version.rb +1 -1
- data/net-ssh.gemspec +5 -2
- data/test/authentication/test_key_manager.rb +7 -2
- data/test/configs/auth_off +2 -1
- data/test/test_config.rb +28 -2
- data/test/transport/test_algorithms.rb +21 -22
- metadata +32 -3
- metadata.gz.sig +0 -0
data.tar.gz.sig
ADDED
Binary file
|
data/.travis.yml
ADDED
data/CHANGES.txt
CHANGED
@@ -1,5 +1,24 @@
|
|
1
1
|
|
2
2
|
|
3
|
+
=== 2.9.0 / 30 Apr 2014
|
4
|
+
|
5
|
+
* New ciphers [chr4]
|
6
|
+
* Added host keys: ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com ssh-ed25519-cert-v01@openssh.com ssh-ed25519
|
7
|
+
* Added HMACs: hmac-sha2-512-etm@openssh.com hmac-sha2-256-etm@openssh.com umac-128-etm@openssh.com
|
8
|
+
* Added Kex: aes256-gcm@openssh.com aes128-gcm@openssh.com curve25519-sha256@libssh.org
|
9
|
+
* Added private key support for id_ed25519
|
10
|
+
* IdentiesOnly will not disable ssh_agent - fixes #148 and new fix for #137 [mfazekas]
|
11
|
+
* Ignore errors during ssh agent negotiation [simonswine, jasiek]
|
12
|
+
* Added an optional "options" argument to test socket open method [jefmathiot]
|
13
|
+
* Added gem signing (again) with new cert [delano]
|
14
|
+
|
15
|
+
|
16
|
+
=== 2.8.1 / 19 Feb 2014
|
17
|
+
|
18
|
+
* Correct location of global known_hosts files [mfischer-zd]
|
19
|
+
* Fix for password authentication [blackpond, zachlipton, delano]
|
20
|
+
|
21
|
+
|
3
22
|
=== 2.8.0 / 01 Feb 2014
|
4
23
|
|
5
24
|
* Handle ssh-rsa and ssh-dss certificate files [bobveznat]
|
@@ -17,6 +36,7 @@
|
|
17
36
|
* Allow KeyManager to recover from incompatible agents [ecki, delano]
|
18
37
|
* Fix for "Authentication Method determination can pick up a class from the root namespace" [dave.sieh]
|
19
38
|
|
39
|
+
|
20
40
|
=== 2.7.0 / 11 Sep 2013
|
21
41
|
|
22
42
|
* Fix for 'Could not parse PKey: no start line' error on private keys with passphrases (issue #101) [metametaclass]
|
data/Rakefile
CHANGED
@@ -34,8 +34,8 @@ begin
|
|
34
34
|
|
35
35
|
s.license = "MIT"
|
36
36
|
|
37
|
-
|
38
|
-
|
37
|
+
s.signing_key = File.join('/mnt/gem/', 'gem-private_key.pem')
|
38
|
+
s.cert_chain = ['gem-public_cert.pem']
|
39
39
|
end
|
40
40
|
Jeweler::GemcutterTasks.new
|
41
41
|
rescue LoadError
|
data/gem-public_cert.pem
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
-----BEGIN CERTIFICATE-----
|
2
2
|
MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZkZWxh
|
3
3
|
bm8xGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
|
4
|
-
|
4
|
+
b20wHhcNMTQwNDMwMTczNjI2WhcNMTUwNDMwMTczNjI2WjBBMQ8wDQYDVQQDDAZk
|
5
5
|
ZWxhbm8xGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
6
|
+
FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDdbeFjM67+Txrq
|
7
|
+
+8HaD4wKEiacRoB8ps17Vzt9TBUyoMMj5KTtFiptr/+ZTug/YdYBquMprPsKlYM2
|
8
|
+
NoG6BzvDcvQK1zrdHnyVosIDKAHk2wnyN/psZikS1bo9nUHCS5hJdPEnQZx/MxTZ
|
9
|
+
+GjuRsiBxPYBXnqObLhR83LBeWsauWTuo5gJt1DYxDTVrLoB+Z+ceMV+3vh0HBCb
|
10
|
+
iwegkx9GWG45h5wTksUIpzOMB3VsHGtGmBjCvdCgLJ2H6b8U9rmL7chunjdqfNf3
|
11
|
+
zPtnH32c/zrFzeWJTyH2s8Ia+3D6vum2xjjn8FnLg3V4zOf5x598GFBJYDQv7zX/
|
12
|
+
rV9eCzHDAgMBAAGjOTA3MAkGA1UdEwQCMAAwHQYDVR0OBBYEFA+Buc8ySEw2qKnq
|
13
|
+
VH4wh8KAm6hUMAsGA1UdDwQEAwIEsDANBgkqhkiG9w0BAQUFAAOCAQEAYsM0M42h
|
14
|
+
ZEUXvr/i18gkwHKLFDKDAcimgCoS5+syG6rkuSOnKGQolyKTNczNM4gWJJPH5aVq
|
15
|
+
mW2BtqpIom4YRYb9m3fDNNs6kcB5DedY9UPhVvJ8XTTB2YLxLql7UJid9ZOiqWzC
|
16
|
+
OTm06w7zkAT/ldt46p6BqyUy6PW4QMg0Bq7SMfRURVrp2lvhQvBdC7oDR9CGEBZC
|
17
|
+
/Ci++ZEh/QR9qy11AHciEIXnNkytidyZtLr4MWhtbV468y6shpPYdKU/uCINSgvt
|
18
|
+
FpMAM5Nit8L8nHwf3IIUPg7lsMCRzOkQ/FD87BI3V3SnFNoTCdGgnGj3jfW4zRlL
|
19
|
+
iFyareFPA84btQ==
|
20
20
|
-----END CERTIFICATE-----
|
data/lib/net/ssh.rb
CHANGED
@@ -68,7 +68,7 @@ module Net
|
|
68
68
|
:rekey_blocks_limit,:rekey_limit, :rekey_packet_limit, :timeout, :verbose,
|
69
69
|
:global_known_hosts_file, :user_known_hosts_file, :host_key_alias,
|
70
70
|
:host_name, :user, :properties, :passphrase, :keys_only, :max_pkt_size,
|
71
|
-
:max_win_size, :send_env
|
71
|
+
:max_win_size, :send_env, :use_agent
|
72
72
|
]
|
73
73
|
|
74
74
|
# The standard means of starting a new SSH connection. When used with a
|
@@ -115,7 +115,7 @@ module Net
|
|
115
115
|
# be forwarded
|
116
116
|
# * :global_known_hosts_file => the location of the global known hosts
|
117
117
|
# file. Set to an array if you want to specify multiple global known
|
118
|
-
# hosts files. Defaults to %w(/etc/ssh/
|
118
|
+
# hosts files. Defaults to %w(/etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2).
|
119
119
|
# * :hmac => the hmac algorithm (or algorithms) to use
|
120
120
|
# * :host_key => the host key algorithm (or algorithms) to use
|
121
121
|
# * :host_key_alias => the host name to use when looking up or adding a
|
@@ -166,6 +166,8 @@ module Net
|
|
166
166
|
# * :user_known_hosts_file => the location of the user known hosts file.
|
167
167
|
# Set to an array to specify multiple user known hosts files.
|
168
168
|
# Defaults to %w(~/.ssh/known_hosts ~/.ssh/known_hosts2).
|
169
|
+
# * :use_agent => Set false to disable the use of ssh-agent. Defaults to
|
170
|
+
# true
|
169
171
|
# * :verbose => how verbose to be (Logger verbosity constants, Logger::DEBUG
|
170
172
|
# is very verbose, Logger::FATAL is all but silent). Logger::FATAL is the
|
171
173
|
# default. The symbols :debug, :info, :warn, :error, and :fatal are also
|
@@ -77,6 +77,8 @@ module Net; module SSH; module Authentication
|
|
77
77
|
|
78
78
|
if type == SSH2_AGENT_VERSION_RESPONSE
|
79
79
|
raise AgentNotAvailable, "SSH2 agents are not yet supported"
|
80
|
+
elsif type == SSH2_AGENT_FAILURE
|
81
|
+
debug { "Unexpected response type==#{type}, this will be ignored" }
|
80
82
|
elsif type != SSH_AGENT_RSA_IDENTITIES_ANSWER1 && type != SSH_AGENT_RSA_IDENTITIES_ANSWER2
|
81
83
|
raise AgentNotAvailable, "unknown response from agent: #{type}, #{body.to_s.inspect}"
|
82
84
|
end
|
@@ -37,13 +37,13 @@ module Net
|
|
37
37
|
attr_reader :options
|
38
38
|
|
39
39
|
# Create a new KeyManager. By default, the manager will
|
40
|
-
# use the ssh-agent if it is running and the `:
|
41
|
-
# is not
|
40
|
+
# use the ssh-agent if it is running and the `:use_agent` option
|
41
|
+
# is not false.
|
42
42
|
def initialize(logger, options={})
|
43
43
|
self.logger = logger
|
44
44
|
@key_files = []
|
45
45
|
@key_data = []
|
46
|
-
@use_agent = !options[:
|
46
|
+
@use_agent = !(options[:use_agent] == false)
|
47
47
|
@known_identities = {}
|
48
48
|
@agent = nil
|
49
49
|
@options = options
|
@@ -92,8 +92,9 @@ module Net
|
|
92
92
|
# ssh-agent. Note that identities from an ssh-agent are always listed
|
93
93
|
# first in the array, with other identities coming after.
|
94
94
|
#
|
95
|
-
# If key manager was created with :keys_only option,
|
96
|
-
# from ssh-agent will be
|
95
|
+
# If key manager was created with :keys_only option, any identity
|
96
|
+
# from ssh-agent will be ignored unless it present in key_files or
|
97
|
+
# key_data.
|
97
98
|
def each_identity
|
98
99
|
prepared_identities = prepare_identities_from_files + prepare_identities_from_data
|
99
100
|
|
@@ -133,8 +133,8 @@ module Net; module SSH; module Authentication
|
|
133
133
|
# by system default.
|
134
134
|
def default_keys
|
135
135
|
if defined?(OpenSSL::PKey::EC)
|
136
|
-
%w(~/.ssh/
|
137
|
-
|
136
|
+
%w(~/.ssh/id_ed25519 ~/.ssh/id_rsa ~/.ssh/id_dsa ~/.ssh/id_ecdsa
|
137
|
+
~/.ssh2/id_ed25519 ~/.ssh2/id_rsa ~/.ssh2/id_dsa ~/.ssh2/id_ecdsa)
|
138
138
|
else
|
139
139
|
%w(~/.ssh/id_dsa ~/.ssh/id_rsa ~/.ssh2/id_dsa ~/.ssh2/id_rsa)
|
140
140
|
end
|
data/lib/net/ssh/config.rb
CHANGED
@@ -8,7 +8,8 @@ module Net; module SSH
|
|
8
8
|
#
|
9
9
|
# Only a subset of OpenSSH configuration options are understood:
|
10
10
|
#
|
11
|
-
# * ChallengeResponseAuthentication => maps to the :auth_methods option
|
11
|
+
# * ChallengeResponseAuthentication => maps to the :auth_methods option challenge-response (then coleasced into keyboard-interactive)
|
12
|
+
# * KbdInteractiveAuthentication => maps to the :auth_methods keyboard-interactive
|
12
13
|
# * Ciphers => maps to the :encryption option
|
13
14
|
# * Compression => :compression
|
14
15
|
# * CompressionLevel => :compression_level
|
@@ -22,7 +23,7 @@ module Net; module SSH
|
|
22
23
|
# * IdentityFile => maps to the :keys option
|
23
24
|
# * IdentitiesOnly => :keys_only
|
24
25
|
# * Macs => maps to the :hmac option
|
25
|
-
# * PasswordAuthentication => maps to the :auth_methods option
|
26
|
+
# * PasswordAuthentication => maps to the :auth_methods option password
|
26
27
|
# * Port => :port
|
27
28
|
# * PreferredAuthentications => maps to the :auth_methods option
|
28
29
|
# * ProxyCommand => maps to the :proxy option
|
@@ -48,7 +49,7 @@ module Net; module SSH
|
|
48
49
|
def default_files
|
49
50
|
@@default_files
|
50
51
|
end
|
51
|
-
|
52
|
+
|
52
53
|
def default_auth_methods
|
53
54
|
@@default_auth_methods
|
54
55
|
end
|
@@ -58,7 +59,7 @@ module Net; module SSH
|
|
58
59
|
# #default_files), translates the resulting hash into the options
|
59
60
|
# recognized by Net::SSH, and returns them.
|
60
61
|
def for(host, files=default_files)
|
61
|
-
hash = translate(files.inject({}) { |settings, file|
|
62
|
+
hash = translate(files.inject({}) { |settings, file|
|
62
63
|
load(file, host, settings)
|
63
64
|
})
|
64
65
|
end
|
@@ -73,15 +74,13 @@ module Net; module SSH
|
|
73
74
|
file = File.expand_path(path)
|
74
75
|
return settings unless File.readable?(file)
|
75
76
|
|
76
|
-
settings[:auth_methods] ||= default_auth_methods.clone
|
77
|
-
|
78
77
|
globals = {}
|
79
78
|
matched_host = nil
|
80
79
|
multi_host = []
|
81
80
|
seen_host = false
|
82
81
|
IO.foreach(file) do |line|
|
83
82
|
next if line =~ /^\s*(?:#.*)?$/
|
84
|
-
|
83
|
+
|
85
84
|
if line =~ /^\s*(\S+)\s*=(.*)$/
|
86
85
|
key, value = $1, $2
|
87
86
|
else
|
@@ -93,14 +92,14 @@ module Net; module SSH
|
|
93
92
|
|
94
93
|
key.downcase!
|
95
94
|
value = $1 if value =~ /^"(.*)"$/
|
96
|
-
|
95
|
+
|
97
96
|
value = case value.strip
|
98
97
|
when /^\d+$/ then value.to_i
|
99
98
|
when /^no$/i then false
|
100
99
|
when /^yes$/i then true
|
101
100
|
else value
|
102
101
|
end
|
103
|
-
|
102
|
+
|
104
103
|
if key == 'host'
|
105
104
|
# Support "Host host1 host2 hostN".
|
106
105
|
# See http://github.com/net-ssh/net-ssh/issues#issue/6
|
@@ -122,9 +121,9 @@ module Net; module SSH
|
|
122
121
|
end
|
123
122
|
end
|
124
123
|
end
|
125
|
-
|
124
|
+
|
126
125
|
settings = globals.merge(settings) if globals
|
127
|
-
|
126
|
+
|
128
127
|
return settings
|
129
128
|
end
|
130
129
|
|
@@ -133,8 +132,9 @@ module Net; module SSH
|
|
133
132
|
# +settings+ hash must have Strings for keys, all downcased, and
|
134
133
|
# the returned hash will have Symbols for keys.
|
135
134
|
def translate(settings)
|
136
|
-
|
137
|
-
|
135
|
+
auth_methods = default_auth_methods.clone
|
136
|
+
(auth_methods << 'challenge-response').uniq!
|
137
|
+
ret = settings.inject({:auth_methods=>auth_methods}) do |hash, (key, value)|
|
138
138
|
case key
|
139
139
|
when 'bindaddress' then
|
140
140
|
hash[:bind_address] = value
|
@@ -175,6 +175,12 @@ module Net; module SSH
|
|
175
175
|
hash[:auth_methods].delete('password')
|
176
176
|
end
|
177
177
|
when 'challengeresponseauthentication'
|
178
|
+
if value
|
179
|
+
(hash[:auth_methods] << 'challenge-response').uniq!
|
180
|
+
else
|
181
|
+
hash[:auth_methods].delete('challenge-response')
|
182
|
+
end
|
183
|
+
when 'kbdinteractiveauthentication'
|
178
184
|
if value
|
179
185
|
(hash[:auth_methods] << 'keyboard-interactive').uniq!
|
180
186
|
else
|
@@ -183,7 +189,7 @@ module Net; module SSH
|
|
183
189
|
when 'port'
|
184
190
|
hash[:port] = value
|
185
191
|
when 'preferredauthentications'
|
186
|
-
hash[:auth_methods] = value.split(/,/)
|
192
|
+
hash[:auth_methods] = value.split(/,/) # TODO we should place to preferred_auth_methods rather than auth_methods
|
187
193
|
when 'proxycommand'
|
188
194
|
if value and !(value =~ /^none$/)
|
189
195
|
require 'net/ssh/proxy/command'
|
@@ -207,6 +213,7 @@ module Net; module SSH
|
|
207
213
|
end
|
208
214
|
hash
|
209
215
|
end
|
216
|
+
merge_challenge_response_with_keyboard_interactive(ret)
|
210
217
|
end
|
211
218
|
|
212
219
|
private
|
@@ -230,6 +237,14 @@ module Net; module SSH
|
|
230
237
|
else size.to_i
|
231
238
|
end
|
232
239
|
end
|
240
|
+
|
241
|
+
def merge_challenge_response_with_keyboard_interactive(hash)
|
242
|
+
if hash[:auth_methods].include?('challenge-response')
|
243
|
+
hash[:auth_methods].delete('challenge-response')
|
244
|
+
(hash[:auth_methods] << 'keyboard-interactive').uniq!
|
245
|
+
end
|
246
|
+
hash
|
247
|
+
end
|
233
248
|
end
|
234
249
|
end
|
235
250
|
|
data/lib/net/ssh/known_hosts.rb
CHANGED
@@ -15,9 +15,17 @@ module Net; module SSH
|
|
15
15
|
SUPPORTED_TYPE = %w(ssh-rsa ssh-dss
|
16
16
|
ecdsa-sha2-nistp256
|
17
17
|
ecdsa-sha2-nistp384
|
18
|
-
ecdsa-sha2-nistp521
|
18
|
+
ecdsa-sha2-nistp521
|
19
|
+
ssh-ed25519-cert-v01@openssh.com
|
20
|
+
ssh-rsa-cert-v01@openssh.com
|
21
|
+
ssh-rsa-cert-v00@openssh.com
|
22
|
+
ssh-ed25519
|
23
|
+
)
|
19
24
|
else
|
20
|
-
SUPPORTED_TYPE = %w(ssh-rsa ssh-dss
|
25
|
+
SUPPORTED_TYPE = %w(ssh-rsa ssh-dss
|
26
|
+
ssh-rsa-cert-v01@openssh.com
|
27
|
+
ssh-rsa-cert-v00@openssh.com
|
28
|
+
)
|
21
29
|
end
|
22
30
|
|
23
31
|
|
@@ -40,7 +48,7 @@ module Net; module SSH
|
|
40
48
|
# hosts files. If the :user_known_hosts_file key is not set, the
|
41
49
|
# default is returned (~/.ssh/known_hosts and ~/.ssh/known_hosts2). If
|
42
50
|
# :global_known_hosts_file is not set, the default is used
|
43
|
-
# (/etc/ssh/
|
51
|
+
# (/etc/ssh/ssh_known_hosts and /etc/ssh/ssh_known_hosts2).
|
44
52
|
#
|
45
53
|
# If you only want the user known host files, you can pass :user as
|
46
54
|
# the second option.
|
@@ -52,7 +60,7 @@ module Net; module SSH
|
|
52
60
|
end
|
53
61
|
|
54
62
|
if which == :all || which == :global
|
55
|
-
files += Array(options[:global_known_hosts_file] || %w(/etc/ssh/
|
63
|
+
files += Array(options[:global_known_hosts_file] || %w(/etc/ssh/ssh_known_hosts /etc/ssh/ssh_known_hosts2))
|
56
64
|
end
|
57
65
|
|
58
66
|
return files
|
data/lib/net/ssh/test/socket.rb
CHANGED
@@ -22,7 +22,9 @@ module Net; module SSH; module Transport
|
|
22
22
|
# Define the default algorithms, in order of preference, supported by
|
23
23
|
# Net::SSH.
|
24
24
|
ALGORITHMS = {
|
25
|
-
:host_key => %w(ssh-rsa ssh-dss
|
25
|
+
:host_key => %w(ssh-rsa ssh-dss
|
26
|
+
ssh-rsa-cert-v01@openssh.com
|
27
|
+
ssh-rsa-cert-v00@openssh.com),
|
26
28
|
:kex => %w(diffie-hellman-group-exchange-sha1
|
27
29
|
diffie-hellman-group1-sha1
|
28
30
|
diffie-hellman-group14-sha1
|
@@ -40,21 +42,28 @@ module Net; module SSH; module Transport
|
|
40
42
|
camellia192-ctr@openssh.org
|
41
43
|
camellia256-ctr@openssh.org
|
42
44
|
cast128-ctr blowfish-ctr 3des-ctr
|
45
|
+
aes256-gcm@openssh.com aes128-gcm@openssh.com
|
43
46
|
),
|
44
47
|
:hmac => %w(hmac-sha1 hmac-md5 hmac-sha1-96 hmac-md5-96
|
45
48
|
hmac-ripemd160 hmac-ripemd160@openssh.com
|
46
49
|
hmac-sha2-256 hmac-sha2-512 hmac-sha2-256-96
|
47
|
-
hmac-sha2-512-96 none
|
50
|
+
hmac-sha2-512-96 none
|
51
|
+
hmac-sha2-512-etm@openssh.com hmac-sha2-256-etm@openssh.com
|
52
|
+
umac-128-etm@openssh.com),
|
53
|
+
|
48
54
|
:compression => %w(none zlib@openssh.com zlib),
|
49
55
|
:language => %w()
|
50
56
|
}
|
51
57
|
if defined?(OpenSSL::PKey::EC)
|
52
58
|
ALGORITHMS[:host_key] += %w(ecdsa-sha2-nistp256
|
53
59
|
ecdsa-sha2-nistp384
|
54
|
-
ecdsa-sha2-nistp521
|
60
|
+
ecdsa-sha2-nistp521
|
61
|
+
ssh-ed25519-cert-v01@openssh.com
|
62
|
+
ssh-ed25519)
|
55
63
|
ALGORITHMS[:kex] += %w(ecdh-sha2-nistp256
|
56
64
|
ecdh-sha2-nistp384
|
57
|
-
ecdh-sha2-nistp521
|
65
|
+
ecdh-sha2-nistp521
|
66
|
+
curve25519-sha256@libssh.org)
|
58
67
|
end
|
59
68
|
|
60
69
|
# The underlying transport layer session that supports this object
|
data/lib/net/ssh/version.rb
CHANGED
data/net-ssh.gemspec
CHANGED
@@ -5,11 +5,12 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "net-ssh"
|
8
|
-
s.version = "2.
|
8
|
+
s.version = "2.9.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jamis Buck", "Delano Mandelbaum"]
|
12
|
-
s.
|
12
|
+
s.cert_chain = ["gem-public_cert.pem"]
|
13
|
+
s.date = "2014-04-30"
|
13
14
|
s.description = "Net::SSH: a pure-Ruby implementation of the SSH2 client protocol. It allows you to write programs that invoke and interact with processes on remote servers, via SSH2."
|
14
15
|
s.email = "net-ssh@solutious.com"
|
15
16
|
s.extra_rdoc_files = [
|
@@ -17,6 +18,7 @@ Gem::Specification.new do |s|
|
|
17
18
|
"README.rdoc"
|
18
19
|
]
|
19
20
|
s.files = [
|
21
|
+
".travis.yml",
|
20
22
|
"CHANGES.txt",
|
21
23
|
"LICENSE.txt",
|
22
24
|
"Manifest",
|
@@ -176,6 +178,7 @@ Gem::Specification.new do |s|
|
|
176
178
|
s.require_paths = ["lib"]
|
177
179
|
s.rubyforge_project = "net-ssh"
|
178
180
|
s.rubygems_version = "1.8.23"
|
181
|
+
s.signing_key = "/mnt/gem/gem-private_key.pem"
|
179
182
|
s.summary = "Net::SSH: a pure-Ruby implementation of the SSH2 client protocol."
|
180
183
|
|
181
184
|
if s.respond_to? :specification_version then
|
@@ -30,8 +30,12 @@ module Authentication
|
|
30
30
|
assert !manager.use_agent?
|
31
31
|
end
|
32
32
|
|
33
|
-
def
|
34
|
-
assert
|
33
|
+
def test_agent_should_be_used_by_default
|
34
|
+
assert manager().use_agent?
|
35
|
+
end
|
36
|
+
|
37
|
+
def test_agent_should_not_be_used_with_no_agent
|
38
|
+
assert !manager(:use_agent => false).use_agent?
|
35
39
|
end
|
36
40
|
|
37
41
|
def test_each_identity_should_load_from_key_files
|
@@ -101,6 +105,7 @@ module Authentication
|
|
101
105
|
assert_equal rsa.to_blob, identities.first.to_blob
|
102
106
|
|
103
107
|
assert_equal({:from => :agent}, manager.known_identities[rsa])
|
108
|
+
assert manager.use_agent?
|
104
109
|
end
|
105
110
|
|
106
111
|
def test_identities_without_public_key_files_should_not_be_touched_if_identity_loaded_from_agent
|
data/test/configs/auth_off
CHANGED
data/test/test_config.rb
CHANGED
@@ -112,7 +112,8 @@ class TestConfig < Test::Unit::TestCase
|
|
112
112
|
'hostbasedauthentication' => false,
|
113
113
|
'passwordauthentication' => false,
|
114
114
|
'pubkeyauthentication' => false,
|
115
|
-
'challengeresponseauthentication' => false
|
115
|
+
'challengeresponseauthentication' => false,
|
116
|
+
'kbdinteractiveauthentication' => false
|
116
117
|
}
|
117
118
|
|
118
119
|
net_ssh = Net::SSH::Config.translate(open_ssh)
|
@@ -125,7 +126,8 @@ class TestConfig < Test::Unit::TestCase
|
|
125
126
|
'hostbasedauthentication' => true,
|
126
127
|
'passwordauthentication' => true,
|
127
128
|
'pubkeyauthentication' => true,
|
128
|
-
'challengeresponseauthentication' => true
|
129
|
+
'challengeresponseauthentication' => true,
|
130
|
+
'kbdinteractiveauthentication' => true
|
129
131
|
}
|
130
132
|
|
131
133
|
net_ssh = Net::SSH::Config.translate(open_ssh)
|
@@ -133,6 +135,30 @@ class TestConfig < Test::Unit::TestCase
|
|
133
135
|
assert_equal %w(hostbased keyboard-interactive none password publickey), net_ssh[:auth_methods].sort
|
134
136
|
end
|
135
137
|
|
138
|
+
def test_translate_should_not_disable_keyboard_interactive_when_challange_or_keyboardinterective_is_on
|
139
|
+
open_ssh = {
|
140
|
+
'kbdinteractiveauthentication' => false
|
141
|
+
}
|
142
|
+
net_ssh = Net::SSH::Config.translate(open_ssh)
|
143
|
+
assert_equal %w(keyboard-interactive none password publickey), net_ssh[:auth_methods].sort
|
144
|
+
|
145
|
+
open_ssh = {
|
146
|
+
'challengeresponseauthentication' => false
|
147
|
+
}
|
148
|
+
net_ssh = Net::SSH::Config.translate(open_ssh)
|
149
|
+
assert_equal %w(keyboard-interactive none password publickey), net_ssh[:auth_methods].sort
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_should_ddisable_keyboard_interactive_when_challeng_and_keyboardinteractive_is_off
|
153
|
+
open_ssh = {
|
154
|
+
'challengeresponseauthentication' => false,
|
155
|
+
'kbdinteractiveauthentication' => false
|
156
|
+
}
|
157
|
+
|
158
|
+
net_ssh = Net::SSH::Config.translate(open_ssh)
|
159
|
+
assert_equal %w(none password publickey), net_ssh[:auth_methods].sort
|
160
|
+
end
|
161
|
+
|
136
162
|
def test_for_should_turn_off_authentication_methods
|
137
163
|
config = Net::SSH::Config.for("test.host", [config(:empty), config(:auth_off), config(:auth_on)])
|
138
164
|
assert_equal %w(none), config[:auth_methods].sort
|
@@ -18,18 +18,17 @@ module Transport
|
|
18
18
|
|
19
19
|
def test_constructor_should_build_default_list_of_preferred_algorithms
|
20
20
|
if defined?(OpenSSL::PKey::EC)
|
21
|
-
assert_equal %w(ssh-rsa ssh-dss ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521), algorithms[:host_key]
|
22
|
-
assert_equal %w(diffie-hellman-group-exchange-sha1 diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521), algorithms[:kex]
|
21
|
+
assert_equal %w(ssh-rsa ssh-dss ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519-cert-v01@openssh.com ssh-ed25519), algorithms[:host_key]
|
22
|
+
assert_equal %w(diffie-hellman-group-exchange-sha1 diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org), algorithms[:kex]
|
23
23
|
else
|
24
|
-
assert_equal %w(ssh-rsa ssh-dss), algorithms[:host_key]
|
25
|
-
assert_equal %w(diffie-hellman-group-exchange-sha1 diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256), algorithms[:kex]
|
24
|
+
assert_equal %w(ssh-rsa ssh-dss ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com), algorithms[:host_key]
|
25
|
+
assert_equal %w(diffie-hellman-group-exchange-sha1 diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256 aes256-gcm@openssh.com aes128-gcm@openssh.com), algorithms[:kex]
|
26
26
|
end
|
27
|
-
assert_equal %w(aes128-cbc 3des-cbc blowfish-cbc cast128-cbc aes192-cbc aes256-cbc rijndael-cbc@lysator.liu.se idea-cbc none arcfour128 arcfour256 arcfour aes128-ctr aes192-ctr aes256-ctr camellia128-cbc camellia192-cbc camellia256-cbc camellia128-cbc@openssh.org camellia192-cbc@openssh.org camellia256-cbc@openssh.org camellia128-ctr camellia192-ctr camellia256-ctr camellia128-ctr@openssh.org camellia192-ctr@openssh.org camellia256-ctr@openssh.org cast128-ctr blowfish-ctr 3des-ctr), algorithms[:encryption]
|
27
|
+
assert_equal %w(aes128-cbc 3des-cbc blowfish-cbc cast128-cbc aes192-cbc aes256-cbc rijndael-cbc@lysator.liu.se idea-cbc none arcfour128 arcfour256 arcfour aes128-ctr aes192-ctr aes256-ctr camellia128-cbc camellia192-cbc camellia256-cbc camellia128-cbc@openssh.org camellia192-cbc@openssh.org camellia256-cbc@openssh.org camellia128-ctr camellia192-ctr camellia256-ctr camellia128-ctr@openssh.org camellia192-ctr@openssh.org camellia256-ctr@openssh.org cast128-ctr blowfish-ctr 3des-ctr aes256-gcm@openssh.com aes128-gcm@openssh.com), algorithms[:encryption]
|
28
28
|
if defined?(OpenSSL::Digest::SHA256)
|
29
|
-
assert_equal %w(hmac-sha1 hmac-md5 hmac-sha1-96 hmac-md5-96 hmac-ripemd160 hmac-ripemd160@openssh.com hmac-sha2-256 hmac-sha2-512 hmac-sha2-256-96 hmac-sha2-512-96 none), algorithms[:hmac]
|
29
|
+
assert_equal %w(hmac-sha1 hmac-md5 hmac-sha1-96 hmac-md5-96 hmac-ripemd160 hmac-ripemd160@openssh.com hmac-sha2-256 hmac-sha2-512 hmac-sha2-256-96 hmac-sha2-512-96 none hmac-sha2-512-etm@openssh.com hmac-sha2-256-etm@openssh.com umac-128-etm@openssh.com), algorithms[:hmac]
|
30
30
|
else
|
31
|
-
assert_equal %w(hmac-sha1 hmac-md5 hmac-sha1-96 hmac-md5-96 hmac-ripemd160 hmac-ripemd160@openssh.com none), algorithms[:hmac]
|
32
|
-
end
|
31
|
+
assert_equal %w(hmac-sha1 hmac-md5 hmac-sha1-96 hmac-md5-96 hmac-ripemd160 hmac-ripemd160@openssh.com none umac-128-etm@openssh.com), algorithms[:hmac] end
|
33
32
|
assert_equal %w(none zlib@openssh.com zlib), algorithms[:compression]
|
34
33
|
assert_equal %w(), algorithms[:language]
|
35
34
|
end
|
@@ -43,16 +42,16 @@ module Transport
|
|
43
42
|
|
44
43
|
def test_constructor_with_preferred_host_key_type_should_put_preferred_host_key_type_first
|
45
44
|
if defined?(OpenSSL::PKey::EC)
|
46
|
-
assert_equal %w(ssh-dss ssh-rsa ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521), algorithms(:host_key => "ssh-dss")[:host_key]
|
45
|
+
assert_equal %w(ssh-dss ssh-rsa ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519-cert-v01@openssh.com ssh-ed25519), algorithms(:host_key => "ssh-dss")[:host_key]
|
47
46
|
else
|
48
|
-
assert_equal %w(ssh-dss ssh-rsa), algorithms(:host_key => "ssh-dss")[:host_key]
|
47
|
+
assert_equal %w(ssh-dss ssh-rsa ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com), algorithms(:host_key => "ssh-dss")[:host_key]
|
49
48
|
end
|
50
49
|
end
|
51
50
|
|
52
51
|
def test_constructor_with_known_hosts_reporting_known_host_key_should_use_that_host_key_type
|
53
52
|
Net::SSH::KnownHosts.expects(:search_for).with("net.ssh.test,127.0.0.1", {}).returns([stub("key", :ssh_type => "ssh-dss")])
|
54
53
|
if defined?(OpenSSL::PKey::EC)
|
55
|
-
assert_equal %w(ssh-dss ssh-rsa ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521), algorithms[:host_key]
|
54
|
+
assert_equal %w(ssh-dss ssh-rsa ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521 ssh-ed25519-cert-v01@openssh.com ssh-ed25519), algorithms[:host_key]
|
56
55
|
else
|
57
56
|
assert_equal %w(ssh-dss ssh-rsa), algorithms[:host_key]
|
58
57
|
end
|
@@ -64,7 +63,7 @@ module Transport
|
|
64
63
|
|
65
64
|
def test_constructor_with_preferred_kex_should_put_preferred_kex_first
|
66
65
|
if defined?(OpenSSL::PKey::EC)
|
67
|
-
assert_equal %w(diffie-hellman-group1-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521), algorithms(:kex => "diffie-hellman-group1-sha1")[:kex]
|
66
|
+
assert_equal %w(diffie-hellman-group1-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256 ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org), algorithms(:kex => "diffie-hellman-group1-sha1")[:kex]
|
68
67
|
else
|
69
68
|
assert_equal %w(diffie-hellman-group1-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256), algorithms(:kex => "diffie-hellman-group1-sha1")[:kex]
|
70
69
|
end
|
@@ -75,11 +74,11 @@ module Transport
|
|
75
74
|
end
|
76
75
|
|
77
76
|
def test_constructor_with_preferred_encryption_should_put_preferred_encryption_first
|
78
|
-
assert_equal %w(aes256-cbc aes128-cbc 3des-cbc blowfish-cbc cast128-cbc aes192-cbc rijndael-cbc@lysator.liu.se idea-cbc none arcfour128 arcfour256 arcfour aes128-ctr aes192-ctr aes256-ctr camellia128-cbc camellia192-cbc camellia256-cbc camellia128-cbc@openssh.org camellia192-cbc@openssh.org camellia256-cbc@openssh.org camellia128-ctr camellia192-ctr camellia256-ctr camellia128-ctr@openssh.org camellia192-ctr@openssh.org camellia256-ctr@openssh.org cast128-ctr blowfish-ctr 3des-ctr), algorithms(:encryption => "aes256-cbc")[:encryption]
|
77
|
+
assert_equal %w(aes256-cbc aes128-cbc 3des-cbc blowfish-cbc cast128-cbc aes192-cbc rijndael-cbc@lysator.liu.se idea-cbc none arcfour128 arcfour256 arcfour aes128-ctr aes192-ctr aes256-ctr camellia128-cbc camellia192-cbc camellia256-cbc camellia128-cbc@openssh.org camellia192-cbc@openssh.org camellia256-cbc@openssh.org camellia128-ctr camellia192-ctr camellia256-ctr camellia128-ctr@openssh.org camellia192-ctr@openssh.org camellia256-ctr@openssh.org cast128-ctr blowfish-ctr 3des-ctr aes256-gcm@openssh.com aes128-gcm@openssh.com), algorithms(:encryption => "aes256-cbc")[:encryption]
|
79
78
|
end
|
80
79
|
|
81
80
|
def test_constructor_with_multiple_preferred_encryption_should_put_all_preferred_encryption_first
|
82
|
-
assert_equal %w(aes256-cbc 3des-cbc idea-cbc aes128-cbc blowfish-cbc cast128-cbc aes192-cbc rijndael-cbc@lysator.liu.se none arcfour128 arcfour256 arcfour aes128-ctr aes192-ctr aes256-ctr camellia128-cbc camellia192-cbc camellia256-cbc camellia128-cbc@openssh.org camellia192-cbc@openssh.org camellia256-cbc@openssh.org camellia128-ctr camellia192-ctr camellia256-ctr camellia128-ctr@openssh.org camellia192-ctr@openssh.org camellia256-ctr@openssh.org cast128-ctr blowfish-ctr 3des-ctr), algorithms(:encryption => %w(aes256-cbc 3des-cbc idea-cbc))[:encryption]
|
81
|
+
assert_equal %w(aes256-cbc 3des-cbc idea-cbc aes128-cbc blowfish-cbc cast128-cbc aes192-cbc rijndael-cbc@lysator.liu.se none arcfour128 arcfour256 arcfour aes128-ctr aes192-ctr aes256-ctr camellia128-cbc camellia192-cbc camellia256-cbc camellia128-cbc@openssh.org camellia192-cbc@openssh.org camellia256-cbc@openssh.org camellia128-ctr camellia192-ctr camellia256-ctr camellia128-ctr@openssh.org camellia192-ctr@openssh.org camellia256-ctr@openssh.org cast128-ctr blowfish-ctr 3des-ctr aes256-gcm@openssh.com aes128-gcm@openssh.com), algorithms(:encryption => %w(aes256-cbc 3des-cbc idea-cbc))[:encryption]
|
83
82
|
end
|
84
83
|
|
85
84
|
def test_constructor_with_unrecognized_encryption_should_raise_exception
|
@@ -87,11 +86,11 @@ module Transport
|
|
87
86
|
end
|
88
87
|
|
89
88
|
def test_constructor_with_preferred_hmac_should_put_preferred_hmac_first
|
90
|
-
assert_equal %w(hmac-md5-96 hmac-sha1 hmac-md5 hmac-sha1-96 hmac-ripemd160 hmac-ripemd160@openssh.com hmac-sha2-256 hmac-sha2-512 hmac-sha2-256-96 hmac-sha2-512-96 none), algorithms(:hmac => "hmac-md5-96")[:hmac]
|
89
|
+
assert_equal %w(hmac-md5-96 hmac-sha1 hmac-md5 hmac-sha1-96 hmac-ripemd160 hmac-ripemd160@openssh.com hmac-sha2-256 hmac-sha2-512 hmac-sha2-256-96 hmac-sha2-512-96 none hmac-sha2-512-etm@openssh.com hmac-sha2-256-etm@openssh.com umac-128-etm@openssh.com), algorithms(:hmac => "hmac-md5-96")[:hmac]
|
91
90
|
end
|
92
91
|
|
93
92
|
def test_constructor_with_multiple_preferred_hmac_should_put_all_preferred_hmac_first
|
94
|
-
assert_equal %w(hmac-md5-96 hmac-sha1-96 hmac-sha1 hmac-md5
|
93
|
+
assert_equal %w(hmac-md5-96 hmac-sha1-96 hmac-sha1 hmac-md5 hmac-ripemd160 hmac-ripemd160@openssh.com hmac-sha2-256 hmac-sha2-512 hmac-sha2-256-96 hmac-sha2-512-96 none hmac-sha2-512-etm@openssh.com hmac-sha2-256-etm@openssh.com umac-128-etm@openssh.com), algorithms(:hmac => %w(hmac-md5-96 hmac-sha1-96))[:hmac]
|
95
94
|
end
|
96
95
|
|
97
96
|
def test_constructor_with_unrecognized_hmac_should_raise_exception
|
@@ -290,16 +289,16 @@ module Transport
|
|
290
289
|
assert_equal KEXINIT, buffer.type
|
291
290
|
assert_equal 16, buffer.read(16).length
|
292
291
|
if defined?(OpenSSL::PKey::EC)
|
293
|
-
assert_equal options[:kex] || "diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521", buffer.read_string
|
294
|
-
assert_equal options[:host_key] || "ssh-rsa,ssh-dss,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521", buffer.read_string
|
292
|
+
assert_equal options[:kex] || "diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,curve25519-sha256@libssh.org", buffer.read_string
|
293
|
+
assert_equal options[:host_key] || "ssh-rsa,ssh-dss,ssh-rsa-cert-v01@openssh.com,ssh-rsa-cert-v00@openssh.com,ecdsa-sha2-nistp256,ecdsa-sha2-nistp384,ecdsa-sha2-nistp521,ssh-ed25519-cert-v01@openssh.com,ssh-ed25519", buffer.read_string
|
295
294
|
else
|
296
295
|
assert_equal options[:kex] || "diffie-hellman-group-exchange-sha1,diffie-hellman-group1-sha1,diffie-hellman-group14-sha1,diffie-hellman-group-exchange-sha256", buffer.read_string
|
297
296
|
assert_equal options[:host_key] || "ssh-rsa,ssh-dss", buffer.read_string
|
298
297
|
end
|
299
|
-
assert_equal options[:encryption_client] || "aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,idea-cbc,none,arcfour128,arcfour256,arcfour,aes128-ctr,aes192-ctr,aes256-ctr,camellia128-cbc,camellia192-cbc,camellia256-cbc,camellia128-cbc@openssh.org,camellia192-cbc@openssh.org,camellia256-cbc@openssh.org,camellia128-ctr,camellia192-ctr,camellia256-ctr,camellia128-ctr@openssh.org,camellia192-ctr@openssh.org,camellia256-ctr@openssh.org,cast128-ctr,blowfish-ctr,3des-ctr", buffer.read_string
|
300
|
-
assert_equal options[:encryption_server] || "aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,idea-cbc,none,arcfour128,arcfour256,arcfour,aes128-ctr,aes192-ctr,aes256-ctr,camellia128-cbc,camellia192-cbc,camellia256-cbc,camellia128-cbc@openssh.org,camellia192-cbc@openssh.org,camellia256-cbc@openssh.org,camellia128-ctr,camellia192-ctr,camellia256-ctr,camellia128-ctr@openssh.org,camellia192-ctr@openssh.org,camellia256-ctr@openssh.org,cast128-ctr,blowfish-ctr,3des-ctr", buffer.read_string
|
301
|
-
assert_equal options[:hmac_client] || "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha2-256-96,hmac-sha2-512-96,none", buffer.read_string
|
302
|
-
assert_equal options[:hmac_server] || "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha2-256-96,hmac-sha2-512-96,none", buffer.read_string
|
298
|
+
assert_equal options[:encryption_client] || "aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,idea-cbc,none,arcfour128,arcfour256,arcfour,aes128-ctr,aes192-ctr,aes256-ctr,camellia128-cbc,camellia192-cbc,camellia256-cbc,camellia128-cbc@openssh.org,camellia192-cbc@openssh.org,camellia256-cbc@openssh.org,camellia128-ctr,camellia192-ctr,camellia256-ctr,camellia128-ctr@openssh.org,camellia192-ctr@openssh.org,camellia256-ctr@openssh.org,cast128-ctr,blowfish-ctr,3des-ctr,aes256-gcm@openssh.com,aes128-gcm@openssh.com", buffer.read_string
|
299
|
+
assert_equal options[:encryption_server] || "aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,idea-cbc,none,arcfour128,arcfour256,arcfour,aes128-ctr,aes192-ctr,aes256-ctr,camellia128-cbc,camellia192-cbc,camellia256-cbc,camellia128-cbc@openssh.org,camellia192-cbc@openssh.org,camellia256-cbc@openssh.org,camellia128-ctr,camellia192-ctr,camellia256-ctr,camellia128-ctr@openssh.org,camellia192-ctr@openssh.org,camellia256-ctr@openssh.org,cast128-ctr,blowfish-ctr,3des-ctr,aes256-gcm@openssh.com,aes128-gcm@openssh.com", buffer.read_string
|
300
|
+
assert_equal options[:hmac_client] || "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha2-256-96,hmac-sha2-512-96,none,hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com", buffer.read_string
|
301
|
+
assert_equal options[:hmac_server] || "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96,hmac-ripemd160,hmac-ripemd160@openssh.com,hmac-sha2-256,hmac-sha2-512,hmac-sha2-256-96,hmac-sha2-512-96,none,hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com", buffer.read_string
|
303
302
|
assert_equal options[:compression_client] || "none,zlib@openssh.com,zlib", buffer.read_string
|
304
303
|
assert_equal options[:compression_server] || "none,zlib@openssh.com,zlib", buffer.read_string
|
305
304
|
assert_equal options[:language_client] || "", buffer.read_string
|
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: 2.
|
4
|
+
version: 2.9.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,8 +9,36 @@ authors:
|
|
9
9
|
- Delano Mandelbaum
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
|
-
cert_chain:
|
13
|
-
|
12
|
+
cert_chain:
|
13
|
+
- !binary |-
|
14
|
+
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUROakNDQWg2Z0F3SUJB
|
15
|
+
Z0lCQURBTkJna3Foa2lHOXcwQkFRVUZBREJCTVE4d0RRWURWUVFEREFaa1pX
|
16
|
+
eGgKYm04eEdUQVhCZ29Ka2lhSmsvSXNaQUVaRmdsemIyeDFkR2x2ZFhNeEV6
|
17
|
+
QVJCZ29Ka2lhSmsvSXNaQUVaRmdOagpiMjB3SGhjTk1UUXdORE13TVRjek5q
|
18
|
+
STJXaGNOTVRVd05ETXdNVGN6TmpJMldqQkJNUTh3RFFZRFZRUUREQVprClpX
|
19
|
+
eGhibTh4R1RBWEJnb0praWFKay9Jc1pBRVpGZ2x6YjJ4MWRHbHZkWE14RXpB
|
20
|
+
UkJnb0praWFKay9Jc1pBRVoKRmdOamIyMHdnZ0VpTUEwR0NTcUdTSWIzRFFF
|
21
|
+
QkFRVUFBNElCRHdBd2dnRUtBb0lCQVFEZGJlRmpNNjcrVHhycQorOEhhRDR3
|
22
|
+
S0VpYWNSb0I4cHMxN1Z6dDlUQlV5b01NajVLVHRGaXB0ci8rWlR1Zy9ZZFlC
|
23
|
+
cXVNcHJQc0tsWU0yCk5vRzZCenZEY3ZRSzF6cmRIbnlWb3NJREtBSGsyd255
|
24
|
+
Ti9wc1ppa1MxYm85blVIQ1M1aEpkUEVuUVp4L014VFoKK0dqdVJzaUJ4UFlC
|
25
|
+
WG5xT2JMaFI4M0xCZVdzYXVXVHVvNWdKdDFEWXhEVFZyTG9CK1orY2VNVisz
|
26
|
+
dmgwSEJDYgppd2Vna3g5R1dHNDVoNXdUa3NVSXB6T01CM1ZzSEd0R21CakN2
|
27
|
+
ZENnTEoySDZiOFU5cm1MN2NodW5qZHFmTmYzCnpQdG5IMzJjL3pyRnplV0pU
|
28
|
+
eUgyczhJYSszRDZ2dW0yeGpqbjhGbkxnM1Y0ek9mNXg1OThHRkJKWURRdjd6
|
29
|
+
WC8KclY5ZUN6SERBZ01CQUFHak9UQTNNQWtHQTFVZEV3UUNNQUF3SFFZRFZS
|
30
|
+
ME9CQllFRkErQnVjOHlTRXcycUtucQpWSDR3aDhLQW02aFVNQXNHQTFVZER3
|
31
|
+
UUVBd0lFc0RBTkJna3Foa2lHOXcwQkFRVUZBQU9DQVFFQVlzTTBNNDJoClpF
|
32
|
+
VVh2ci9pMThna3dIS0xGREtEQWNpbWdDb1M1K3N5RzZya3VTT25LR1FvbHlL
|
33
|
+
VE5jek5NNGdXSkpQSDVhVnEKbVcyQnRxcElvbTRZUlliOW0zZkROTnM2a2NC
|
34
|
+
NURlZFk5VVBoVnZKOFhUVEIyWUx4THFsN1VKaWQ5Wk9pcVd6QwpPVG0wNnc3
|
35
|
+
emtBVC9sZHQ0NnA2QnF5VXk2UFc0UU1nMEJxN1NNZlJVUlZycDJsdmhRdkJk
|
36
|
+
QzdvRFI5Q0dFQlpDCi9DaSsrWkVoL1FSOXF5MTFBSGNpRUlYbk5reXRpZHla
|
37
|
+
dExyNE1XaHRiVjQ2OHk2c2hwUFlkS1UvdUNJTlNndnQKRnBNQU01Tml0OEw4
|
38
|
+
bkh3ZjNJSVVQZzdsc01DUnpPa1EvRkQ4N0JJM1YzU25GTm9UQ2RHZ25HajNq
|
39
|
+
Zlc0elJsTAppRnlhcmVGUEE4NGJ0UT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
|
40
|
+
LS0tLS0K
|
41
|
+
date: 2014-04-30 00:00:00.000000000 Z
|
14
42
|
dependencies:
|
15
43
|
- !ruby/object:Gem::Dependency
|
16
44
|
name: test-unit
|
@@ -54,6 +82,7 @@ extra_rdoc_files:
|
|
54
82
|
- LICENSE.txt
|
55
83
|
- README.rdoc
|
56
84
|
files:
|
85
|
+
- .travis.yml
|
57
86
|
- CHANGES.txt
|
58
87
|
- LICENSE.txt
|
59
88
|
- Manifest
|
metadata.gz.sig
ADDED
Binary file
|