net-ssh 2.9.1 → 2.9.2.beta
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- checksums.yaml.gz.sig +1 -0
- data.tar.gz.sig +0 -0
- data/CHANGES.txt +5 -0
- data/README.rdoc +5 -0
- data/Rakefile +9 -3
- data/lib/net/ssh.rb +2 -1
- data/lib/net/ssh/authentication/agent/socket.rb +10 -4
- data/lib/net/ssh/authentication/methods/password.rb +35 -10
- data/lib/net/ssh/buffer.rb +1 -1
- data/lib/net/ssh/config.rb +4 -2
- data/lib/net/ssh/connection/keepalive.rb +48 -0
- data/lib/net/ssh/connection/session.rb +4 -25
- data/lib/net/ssh/errors.rb +4 -0
- data/lib/net/ssh/known_hosts.rb +2 -10
- data/lib/net/ssh/service/forward.rb +52 -12
- data/lib/net/ssh/transport/algorithms.rb +10 -9
- data/lib/net/ssh/transport/cipher_factory.rb +0 -3
- data/lib/net/ssh/transport/packet_stream.rb +3 -1
- data/lib/net/ssh/transport/session.rb +7 -2
- data/lib/net/ssh/version.rb +11 -7
- data/net-ssh-public_cert.pem +20 -0
- data/net-ssh.gemspec +11 -9
- data/test/authentication/methods/test_password.rb +43 -0
- data/test/authentication/test_agent.rb +19 -0
- data/test/connection/test_session.rb +19 -2
- data/test/manual/test_forward.rb +76 -27
- data/test/test_config.rb +3 -1
- data/test/transport/test_algorithms.rb +40 -45
- data/test/transport/test_packet_stream.rb +7 -1
- data/test/transport/test_session.rb +12 -0
- metadata +39 -51
- metadata.gz.sig +0 -0
- data/gem-public_cert.pem +0 -20
data/test/test_config.rb
CHANGED
@@ -93,7 +93,8 @@ class TestConfig < Test::Unit::TestCase
|
|
93
93
|
'port' => 1234,
|
94
94
|
'pubkeyauthentication' => true,
|
95
95
|
'rekeylimit' => 1024,
|
96
|
-
'sendenv' => "LC_*"
|
96
|
+
'sendenv' => "LC_*",
|
97
|
+
'numberofpasswordprompts' => '123'
|
97
98
|
}
|
98
99
|
|
99
100
|
net_ssh = Net::SSH::Config.translate(open_ssh)
|
@@ -111,6 +112,7 @@ class TestConfig < Test::Unit::TestCase
|
|
111
112
|
assert_equal 1024, net_ssh[:rekey_limit]
|
112
113
|
assert_equal "127.0.0.1", net_ssh[:bind_address]
|
113
114
|
assert_equal [/^LC_.*$/], net_ssh[:send_env]
|
115
|
+
assert_equal 123, net_ssh[:number_of_password_prompts]
|
114
116
|
end
|
115
117
|
|
116
118
|
def test_translate_should_turn_off_authentication_methods
|
@@ -17,16 +17,11 @@ module Transport
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_constructor_should_build_default_list_of_preferred_algorithms
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
else
|
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
|
-
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 aes256-gcm@openssh.com aes128-gcm@openssh.com), algorithms[:encryption]
|
20
|
+
assert_equal %w(ssh-rsa ssh-dss ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com)+ec_host_keys, algorithms[:host_key]
|
21
|
+
assert_equal %w(diffie-hellman-group-exchange-sha1 diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256)+ec_kex, algorithms[:kex]
|
22
|
+
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]
|
28
23
|
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
|
24
|
+
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]
|
30
25
|
else
|
31
26
|
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
|
32
27
|
assert_equal %w(none zlib@openssh.com zlib), algorithms[:compression]
|
@@ -41,60 +36,65 @@ module Transport
|
|
41
36
|
end
|
42
37
|
|
43
38
|
def test_constructor_with_preferred_host_key_type_should_put_preferred_host_key_type_first
|
44
|
-
|
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]
|
46
|
-
else
|
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]
|
48
|
-
end
|
39
|
+
assert_equal %w(ssh-dss ssh-rsa ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com)+ec_host_keys, algorithms(:host_key => "ssh-dss")[:host_key]
|
49
40
|
end
|
50
41
|
|
51
42
|
def test_constructor_with_known_hosts_reporting_known_host_key_should_use_that_host_key_type
|
52
43
|
Net::SSH::KnownHosts.expects(:search_for).with("net.ssh.test,127.0.0.1", {}).returns([stub("key", :ssh_type => "ssh-dss")])
|
44
|
+
assert_equal %w(ssh-dss ssh-rsa ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com )+ec_host_keys, algorithms[:host_key]
|
45
|
+
end
|
46
|
+
|
47
|
+
def ec_host_keys
|
53
48
|
if defined?(OpenSSL::PKey::EC)
|
54
|
-
|
49
|
+
%w(ecdsa-sha2-nistp256 ecdsa-sha2-nistp384 ecdsa-sha2-nistp521)
|
55
50
|
else
|
56
|
-
|
51
|
+
[]
|
57
52
|
end
|
58
53
|
end
|
59
54
|
|
60
|
-
def
|
61
|
-
|
55
|
+
def test_constructor_with_unrecognized_host_key_type_should_return_whats_supported
|
56
|
+
assert_equal %w(ssh-rsa ssh-dss ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com )+ec_host_keys, algorithms(:host_key => "bogus ssh-rsa")[:host_key]
|
62
57
|
end
|
63
58
|
|
64
|
-
def
|
59
|
+
def ec_kex
|
65
60
|
if defined?(OpenSSL::PKey::EC)
|
66
|
-
|
61
|
+
%w(ecdh-sha2-nistp256 ecdh-sha2-nistp384 ecdh-sha2-nistp521 curve25519-sha256@libssh.org)
|
67
62
|
else
|
68
|
-
|
63
|
+
[]
|
69
64
|
end
|
70
65
|
end
|
71
66
|
|
67
|
+
def test_constructor_with_preferred_kex_should_put_preferred_kex_first
|
68
|
+
assert_equal %w(diffie-hellman-group1-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256)+ec_kex, algorithms(:kex => "diffie-hellman-group1-sha1")[:kex]
|
69
|
+
end
|
70
|
+
|
72
71
|
def test_constructor_with_unrecognized_kex_should_raise_exception
|
73
|
-
|
72
|
+
assert_equal %w(diffie-hellman-group1-sha1 diffie-hellman-group-exchange-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256)+ec_kex, algorithms(:kex => %w(bogus diffie-hellman-group1-sha1))[:kex]
|
74
73
|
end
|
75
74
|
|
76
75
|
def test_constructor_with_preferred_encryption_should_put_preferred_encryption_first
|
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
|
76
|
+
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]
|
78
77
|
end
|
79
78
|
|
80
79
|
def test_constructor_with_multiple_preferred_encryption_should_put_all_preferred_encryption_first
|
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
|
80
|
+
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]
|
82
81
|
end
|
83
82
|
|
84
|
-
def
|
85
|
-
|
83
|
+
def test_constructor_with_unrecognized_encryption_should_keep_whats_supported
|
84
|
+
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 => %w(bogus aes256-cbc))[:encryption]
|
86
85
|
end
|
87
86
|
|
88
87
|
def test_constructor_with_preferred_hmac_should_put_preferred_hmac_first
|
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
|
88
|
+
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]
|
90
89
|
end
|
91
90
|
|
92
91
|
def test_constructor_with_multiple_preferred_hmac_should_put_all_preferred_hmac_first
|
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
|
92
|
+
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), algorithms(:hmac => %w(hmac-md5-96 hmac-sha1-96))[:hmac]
|
94
93
|
end
|
95
94
|
|
96
|
-
def
|
97
|
-
|
95
|
+
def test_constructor_with_unrecognized_hmac_should_ignore_those
|
96
|
+
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),
|
97
|
+
algorithms(:hmac => "hmac-md5-96")[:hmac]
|
98
98
|
end
|
99
99
|
|
100
100
|
def test_constructor_with_preferred_compression_should_put_preferred_compression_first
|
@@ -109,8 +109,8 @@ module Transport
|
|
109
109
|
assert_equal %w(zlib@openssh.com zlib none), algorithms(:compression => true)[:compression]
|
110
110
|
end
|
111
111
|
|
112
|
-
def
|
113
|
-
|
112
|
+
def test_constructor_with_unrecognized_compression_should_return_whats_supported
|
113
|
+
assert_equal %w(none zlib zlib@openssh.com), algorithms(:compression => %w(bogus none zlib))[:compression]
|
114
114
|
end
|
115
115
|
|
116
116
|
def test_initial_state_should_be_neither_pending_nor_initialized
|
@@ -278,8 +278,8 @@ module Transport
|
|
278
278
|
:string, options[:encryption_server] || "aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se,idea-cbc",
|
279
279
|
:string, options[:hmac_client] || "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96",
|
280
280
|
:string, options[:hmac_server] || "hmac-sha1,hmac-md5,hmac-sha1-96,hmac-md5-96",
|
281
|
-
:string, options[:
|
282
|
-
:string, options[:
|
281
|
+
:string, options[:compression_client] || "none,zlib@openssh.com,zlib",
|
282
|
+
:string, options[:compression_server] || "none,zlib@openssh.com,zlib",
|
283
283
|
:string, options[:language_client] || "",
|
284
284
|
:string, options[:langauge_server] || "",
|
285
285
|
:bool, options[:first_kex_follows])
|
@@ -288,17 +288,12 @@ module Transport
|
|
288
288
|
def assert_kexinit(buffer, options={})
|
289
289
|
assert_equal KEXINIT, buffer.type
|
290
290
|
assert_equal 16, buffer.read(16).length
|
291
|
-
|
292
|
-
|
293
|
-
|
294
|
-
|
295
|
-
|
296
|
-
|
297
|
-
end
|
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
|
291
|
+
assert_equal options[:kex] || (%w(diffie-hellman-group-exchange-sha1 diffie-hellman-group1-sha1 diffie-hellman-group14-sha1 diffie-hellman-group-exchange-sha256)+ec_kex).join(','), buffer.read_string
|
292
|
+
assert_equal options[:host_key] || (%w(ssh-rsa ssh-dss ssh-rsa-cert-v01@openssh.com ssh-rsa-cert-v00@openssh.com)+ec_host_keys).join(','), buffer.read_string
|
293
|
+
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
|
294
|
+
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
|
295
|
+
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
|
296
|
+
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
|
302
297
|
assert_equal options[:compression_client] || "none,zlib@openssh.com,zlib", buffer.read_string
|
303
298
|
assert_equal options[:compression_server] || "none,zlib@openssh.com,zlib", buffer.read_string
|
304
299
|
assert_equal options[:language_client] || "", buffer.read_string
|
@@ -45,6 +45,12 @@ module Transport
|
|
45
45
|
assert_equal "1.2.3.4", stream.peer_ip
|
46
46
|
end
|
47
47
|
|
48
|
+
def test_peer_ip_should_return_no_hostip_when_socket_has_no_peername
|
49
|
+
assert_equal false, stream.respond_to?(:getpeername)
|
50
|
+
assert_equal Net::SSH::Transport::PacketStream::PROXY_COMMAND_HOST_IP, stream.peer_ip
|
51
|
+
assert_equal '<no hostip for proxy command>', stream.peer_ip
|
52
|
+
end
|
53
|
+
|
48
54
|
def test_available_for_read_should_return_nontrue_when_select_fails
|
49
55
|
IO.expects(:select).returns(nil)
|
50
56
|
assert !stream.available_for_read?
|
@@ -1678,7 +1684,7 @@ module Transport
|
|
1678
1684
|
hmacs = Net::SSH::Transport::HMAC::MAP.keys
|
1679
1685
|
|
1680
1686
|
ciphers.each do |cipher_name|
|
1681
|
-
unless Net::SSH::Transport::CipherFactory.supported?(cipher_name)
|
1687
|
+
unless Net::SSH::Transport::CipherFactory.supported?(cipher_name) && PACKETS.has_key?(cipher_name)
|
1682
1688
|
puts "Skipping packet stream test for #{cipher_name}"
|
1683
1689
|
next
|
1684
1690
|
end
|
@@ -69,6 +69,18 @@ module Transport
|
|
69
69
|
assert_equal "[1.2.3.4]:1234", session.host_as_string
|
70
70
|
end
|
71
71
|
|
72
|
+
def test_host_as_string_should_return_only_host_when_proxy_command_is_set
|
73
|
+
session!(:host => "1.2.3.4")
|
74
|
+
socket.stubs(:peer_ip).returns(Net::SSH::Transport::PacketStream::PROXY_COMMAND_HOST_IP)
|
75
|
+
assert_equal "1.2.3.4", session.host_as_string
|
76
|
+
end
|
77
|
+
|
78
|
+
def test_host_as_string_should_return_only_host_and_port_when_host_is_ip_and_port_is_not_default_and_proxy_command_is_set
|
79
|
+
session!(:host => "1.2.3.4", :port => 1234)
|
80
|
+
socket.stubs(:peer_ip).returns(Net::SSH::Transport::PacketStream::PROXY_COMMAND_HOST_IP)
|
81
|
+
assert_equal "[1.2.3.4]:1234", session.host_as_string
|
82
|
+
end
|
83
|
+
|
72
84
|
def test_close_should_cleanup_and_close_socket
|
73
85
|
session!
|
74
86
|
socket.expects(:cleanup)
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: net-ssh
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.9.
|
5
|
-
prerelease:
|
4
|
+
version: 2.9.2.beta
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jamis Buck
|
@@ -10,71 +9,60 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain:
|
13
|
-
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
emtBVC9sZHQ0NnA2QnF5VXk2UFc0UU1nMEJxN1NNZlJVUlZycDJsdmhRdkJk
|
36
|
-
QzdvRFI5Q0dFQlpDCi9DaSsrWkVoL1FSOXF5MTFBSGNpRUlYbk5reXRpZHla
|
37
|
-
dExyNE1XaHRiVjQ2OHk2c2hwUFlkS1UvdUNJTlNndnQKRnBNQU01Tml0OEw4
|
38
|
-
bkh3ZjNJSVVQZzdsc01DUnpPa1EvRkQ4N0JJM1YzU25GTm9UQ2RHZ25HajNq
|
39
|
-
Zlc0elJsTAppRnlhcmVGUEE4NGJ0UT09Ci0tLS0tRU5EIENFUlRJRklDQVRF
|
40
|
-
LS0tLS0K
|
41
|
-
date: 2014-05-13 00:00:00.000000000 Z
|
12
|
+
- |
|
13
|
+
-----BEGIN CERTIFICATE-----
|
14
|
+
MIIDODCCAiCgAwIBAgIBADANBgkqhkiG9w0BAQUFADBCMRAwDgYDVQQDDAduZXQt
|
15
|
+
c3NoMRkwFwYKCZImiZPyLGQBGRYJc29sdXRpb3VzMRMwEQYKCZImiZPyLGQBGRYD
|
16
|
+
Y29tMB4XDTE0MTIwMjE3MzkyMFoXDTE1MTIwMjE3MzkyMFowQjEQMA4GA1UEAwwH
|
17
|
+
bmV0LXNzaDEZMBcGCgmSJomT8ixkARkWCXNvbHV0aW91czETMBEGCgmSJomT8ixk
|
18
|
+
ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ0qnw4JV5JN
|
19
|
+
MWelqu7pnW2z6GZJ7+zLFYJQNETJyF0U5zo7aCRK08OeUxnpu/TCCXK8iQVkNLfz
|
20
|
+
9pVIhF+X8pMEIruAkYGwBt1aWfuSNeyodyMk0vpZdxBHbOTJ4qBRUc6qOtNOeOzv
|
21
|
+
8ObYUX52P/EMMaeXTRU+e7MGkB9pb6FvPPNx5akxwIaoRvtcMsc/hJnQuP5r96w6
|
22
|
+
t06MgKbXhWAX6gev0RVlrQqzxXst6iuvsrgZGjFqzob5wbTiX9M0+bFAB0EI7tJC
|
23
|
+
sv5keEbtNRaU7p3ZbMm4wTHHJLOtD+BpUCSzwv4ToNj9mZtJBMYw2Eeo7z1DklEG
|
24
|
+
mr95zbe+zNMCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU1bTfpzmitXwv
|
25
|
+
LmTXi0IO5vd8NGYwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQA0Aps8
|
26
|
+
UPINGa8XUUtrZtzrgX0/iyXNkKY1ld85g1N3WKEAVLfQI7TlGr0Qv2Ekx6RqlxbR
|
27
|
+
Vyq08pytSnghW2otR3bIGMGQzqxAeRLb25cjEwH7YIJ32n7ZC1fpMnBZOBDmueWA
|
28
|
+
B9EonmoO3ne7AJSgIvBbZzBPhzM4HrQGRW8LsPFsuj+dcJI43HOQwkmv2TRz0+t6
|
29
|
+
mGZldmqLcK0abv4JepLfB9XTue3kuyA29NGBibqyvRwlKckLpvKfHZX6Jxad8xxm
|
30
|
+
MbvRpzgROzyfw1qYi4dnIyMwTtXFFcZ0a2jpxHPkcTYFK6TzvFgDLAP0Y/u9jqUQ
|
31
|
+
eZ7/3CdSi/isZHEw
|
32
|
+
-----END CERTIFICATE-----
|
33
|
+
date: 2014-12-02 00:00:00.000000000 Z
|
42
34
|
dependencies:
|
43
35
|
- !ruby/object:Gem::Dependency
|
44
36
|
name: test-unit
|
45
37
|
requirement: !ruby/object:Gem::Requirement
|
46
|
-
none: false
|
47
38
|
requirements:
|
48
|
-
- -
|
39
|
+
- - '>='
|
49
40
|
- !ruby/object:Gem::Version
|
50
41
|
version: '0'
|
51
42
|
type: :development
|
52
43
|
prerelease: false
|
53
44
|
version_requirements: !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
45
|
requirements:
|
56
|
-
- -
|
46
|
+
- - '>='
|
57
47
|
- !ruby/object:Gem::Version
|
58
48
|
version: '0'
|
59
49
|
- !ruby/object:Gem::Dependency
|
60
50
|
name: mocha
|
61
51
|
requirement: !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
52
|
requirements:
|
64
|
-
- -
|
53
|
+
- - '>='
|
65
54
|
- !ruby/object:Gem::Version
|
66
55
|
version: '0'
|
67
56
|
type: :development
|
68
57
|
prerelease: false
|
69
58
|
version_requirements: !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
71
59
|
requirements:
|
72
|
-
- -
|
60
|
+
- - '>='
|
73
61
|
- !ruby/object:Gem::Version
|
74
62
|
version: '0'
|
75
|
-
description:
|
76
|
-
|
77
|
-
|
63
|
+
description: 'Net::SSH: a pure-Ruby implementation of the SSH2 client protocol. It
|
64
|
+
allows you to write programs that invoke and interact with processes on remote servers,
|
65
|
+
via SSH2.'
|
78
66
|
email: net-ssh@solutious.com
|
79
67
|
executables: []
|
80
68
|
extensions: []
|
@@ -90,7 +78,6 @@ files:
|
|
90
78
|
- Rakefile
|
91
79
|
- Rudyfile
|
92
80
|
- THANKS.txt
|
93
|
-
- gem-public_cert.pem
|
94
81
|
- lib/net/ssh.rb
|
95
82
|
- lib/net/ssh/authentication/agent.rb
|
96
83
|
- lib/net/ssh/authentication/agent/java_pageant.rb
|
@@ -110,6 +97,7 @@ files:
|
|
110
97
|
- lib/net/ssh/config.rb
|
111
98
|
- lib/net/ssh/connection/channel.rb
|
112
99
|
- lib/net/ssh/connection/constants.rb
|
100
|
+
- lib/net/ssh/connection/keepalive.rb
|
113
101
|
- lib/net/ssh/connection/session.rb
|
114
102
|
- lib/net/ssh/connection/term.rb
|
115
103
|
- lib/net/ssh/errors.rb
|
@@ -170,6 +158,7 @@ files:
|
|
170
158
|
- lib/net/ssh/verifiers/secure.rb
|
171
159
|
- lib/net/ssh/verifiers/strict.rb
|
172
160
|
- lib/net/ssh/version.rb
|
161
|
+
- net-ssh-public_cert.pem
|
173
162
|
- net-ssh.gemspec
|
174
163
|
- setup.rb
|
175
164
|
- support/arcfour_check.rb
|
@@ -241,26 +230,25 @@ files:
|
|
241
230
|
homepage: https://github.com/net-ssh/net-ssh
|
242
231
|
licenses:
|
243
232
|
- MIT
|
233
|
+
metadata: {}
|
244
234
|
post_install_message:
|
245
235
|
rdoc_options: []
|
246
236
|
require_paths:
|
247
237
|
- lib
|
248
238
|
required_ruby_version: !ruby/object:Gem::Requirement
|
249
|
-
none: false
|
250
239
|
requirements:
|
251
|
-
- -
|
240
|
+
- - '>='
|
252
241
|
- !ruby/object:Gem::Version
|
253
242
|
version: '0'
|
254
243
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
255
|
-
none: false
|
256
244
|
requirements:
|
257
|
-
- -
|
245
|
+
- - '>'
|
258
246
|
- !ruby/object:Gem::Version
|
259
|
-
version:
|
247
|
+
version: 1.3.1
|
260
248
|
requirements: []
|
261
249
|
rubyforge_project: net-ssh
|
262
|
-
rubygems_version:
|
250
|
+
rubygems_version: 2.2.2
|
263
251
|
signing_key:
|
264
|
-
specification_version:
|
265
|
-
summary:
|
252
|
+
specification_version: 4
|
253
|
+
summary: 'Net::SSH: a pure-Ruby implementation of the SSH2 client protocol.'
|
266
254
|
test_files: []
|
metadata.gz.sig
CHANGED
Binary file
|
data/gem-public_cert.pem
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
-----BEGIN CERTIFICATE-----
|
2
|
-
MIIDNjCCAh6gAwIBAgIBADANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZkZWxh
|
3
|
-
bm8xGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
|
4
|
-
b20wHhcNMTQwNDMwMTczNjI2WhcNMTUwNDMwMTczNjI2WjBBMQ8wDQYDVQQDDAZk
|
5
|
-
ZWxhbm8xGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
|
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
|
-
-----END CERTIFICATE-----
|