net-ssh 2.9.2 → 4.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (138) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/.gitignore +6 -0
  4. data/.rubocop.yml +5 -0
  5. data/.rubocop_todo.yml +1129 -0
  6. data/.travis.yml +41 -5
  7. data/CHANGES.txt +133 -1
  8. data/Gemfile +13 -0
  9. data/Gemfile.norbnacl +10 -0
  10. data/Gemfile.norbnacl.lock +41 -0
  11. data/ISSUE_TEMPLATE.md +30 -0
  12. data/README.rdoc +26 -81
  13. data/Rakefile +63 -45
  14. data/appveyor.yml +51 -0
  15. data/lib/net/ssh/authentication/agent.rb +174 -14
  16. data/lib/net/ssh/authentication/ed25519.rb +137 -0
  17. data/lib/net/ssh/authentication/ed25519_loader.rb +21 -0
  18. data/lib/net/ssh/authentication/key_manager.rb +36 -30
  19. data/lib/net/ssh/authentication/methods/abstract.rb +4 -0
  20. data/lib/net/ssh/authentication/methods/keyboard_interactive.rb +16 -9
  21. data/lib/net/ssh/authentication/methods/password.rb +17 -4
  22. data/lib/net/ssh/authentication/pageant.rb +166 -45
  23. data/lib/net/ssh/authentication/session.rb +3 -2
  24. data/lib/net/ssh/buffer.rb +49 -10
  25. data/lib/net/ssh/buffered_io.rb +17 -12
  26. data/lib/net/ssh/config.rb +39 -8
  27. data/lib/net/ssh/connection/channel.rb +42 -20
  28. data/lib/net/ssh/connection/event_loop.rb +114 -0
  29. data/lib/net/ssh/connection/keepalive.rb +2 -2
  30. data/lib/net/ssh/connection/session.rb +120 -34
  31. data/lib/net/ssh/errors.rb +6 -6
  32. data/lib/net/ssh/key_factory.rb +49 -43
  33. data/lib/net/ssh/known_hosts.rb +49 -3
  34. data/lib/net/ssh/prompt.rb +47 -78
  35. data/lib/net/ssh/proxy/command.rb +31 -5
  36. data/lib/net/ssh/proxy/http.rb +15 -11
  37. data/lib/net/ssh/proxy/https.rb +49 -0
  38. data/lib/net/ssh/proxy/socks4.rb +2 -1
  39. data/lib/net/ssh/proxy/socks5.rb +3 -2
  40. data/lib/net/ssh/ruby_compat.rb +2 -29
  41. data/lib/net/ssh/service/forward.rb +2 -2
  42. data/lib/net/ssh/test/channel.rb +7 -0
  43. data/lib/net/ssh/test/extensions.rb +17 -0
  44. data/lib/net/ssh/test/kex.rb +4 -4
  45. data/lib/net/ssh/test/packet.rb +18 -2
  46. data/lib/net/ssh/test/script.rb +16 -2
  47. data/lib/net/ssh/test/socket.rb +1 -1
  48. data/lib/net/ssh/test.rb +5 -5
  49. data/lib/net/ssh/transport/algorithms.rb +92 -75
  50. data/lib/net/ssh/transport/cipher_factory.rb +19 -26
  51. data/lib/net/ssh/transport/ctr.rb +7 -9
  52. data/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +20 -9
  53. data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +5 -3
  54. data/lib/net/ssh/transport/kex/ecdh_sha2_nistp256.rb +1 -1
  55. data/lib/net/ssh/transport/key_expander.rb +1 -0
  56. data/lib/net/ssh/transport/openssl.rb +1 -1
  57. data/lib/net/ssh/transport/packet_stream.rb +11 -3
  58. data/lib/net/ssh/transport/server_version.rb +13 -6
  59. data/lib/net/ssh/transport/session.rb +20 -10
  60. data/lib/net/ssh/transport/state.rb +1 -1
  61. data/lib/net/ssh/verifiers/secure.rb +8 -10
  62. data/lib/net/ssh/version.rb +4 -4
  63. data/lib/net/ssh.rb +62 -14
  64. data/net-ssh-public_cert.pem +19 -18
  65. data/net-ssh.gemspec +34 -194
  66. data/support/arcfour_check.rb +1 -1
  67. data/support/ssh_tunnel_bug.rb +1 -1
  68. data.tar.gz.sig +0 -0
  69. metadata +125 -109
  70. metadata.gz.sig +0 -0
  71. data/Rudyfile +0 -96
  72. data/lib/net/ssh/authentication/agent/java_pageant.rb +0 -85
  73. data/lib/net/ssh/authentication/agent/socket.rb +0 -178
  74. data/setup.rb +0 -1585
  75. data/test/README.txt +0 -47
  76. data/test/authentication/methods/common.rb +0 -28
  77. data/test/authentication/methods/test_abstract.rb +0 -51
  78. data/test/authentication/methods/test_hostbased.rb +0 -114
  79. data/test/authentication/methods/test_keyboard_interactive.rb +0 -100
  80. data/test/authentication/methods/test_none.rb +0 -41
  81. data/test/authentication/methods/test_password.rb +0 -95
  82. data/test/authentication/methods/test_publickey.rb +0 -148
  83. data/test/authentication/test_agent.rb +0 -224
  84. data/test/authentication/test_key_manager.rb +0 -227
  85. data/test/authentication/test_session.rb +0 -107
  86. data/test/common.rb +0 -108
  87. data/test/configs/auth_off +0 -5
  88. data/test/configs/auth_on +0 -4
  89. data/test/configs/empty +0 -0
  90. data/test/configs/eqsign +0 -3
  91. data/test/configs/exact_match +0 -8
  92. data/test/configs/host_plus +0 -10
  93. data/test/configs/multihost +0 -4
  94. data/test/configs/negative_match +0 -6
  95. data/test/configs/nohost +0 -19
  96. data/test/configs/numeric_host +0 -4
  97. data/test/configs/send_env +0 -2
  98. data/test/configs/substitutes +0 -8
  99. data/test/configs/wild_cards +0 -14
  100. data/test/connection/test_channel.rb +0 -467
  101. data/test/connection/test_session.rb +0 -543
  102. data/test/known_hosts/github +0 -1
  103. data/test/manual/test_forward.rb +0 -285
  104. data/test/manual/test_pageant.rb +0 -37
  105. data/test/start/test_connection.rb +0 -53
  106. data/test/start/test_options.rb +0 -43
  107. data/test/start/test_transport.rb +0 -28
  108. data/test/test_all.rb +0 -11
  109. data/test/test_buffer.rb +0 -433
  110. data/test/test_buffered_io.rb +0 -63
  111. data/test/test_config.rb +0 -221
  112. data/test/test_key_factory.rb +0 -191
  113. data/test/test_known_hosts.rb +0 -13
  114. data/test/transport/hmac/test_md5.rb +0 -41
  115. data/test/transport/hmac/test_md5_96.rb +0 -27
  116. data/test/transport/hmac/test_none.rb +0 -34
  117. data/test/transport/hmac/test_ripemd160.rb +0 -36
  118. data/test/transport/hmac/test_sha1.rb +0 -36
  119. data/test/transport/hmac/test_sha1_96.rb +0 -27
  120. data/test/transport/hmac/test_sha2_256.rb +0 -37
  121. data/test/transport/hmac/test_sha2_256_96.rb +0 -27
  122. data/test/transport/hmac/test_sha2_512.rb +0 -37
  123. data/test/transport/hmac/test_sha2_512_96.rb +0 -27
  124. data/test/transport/kex/test_diffie_hellman_group14_sha1.rb +0 -13
  125. data/test/transport/kex/test_diffie_hellman_group1_sha1.rb +0 -146
  126. data/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb +0 -92
  127. data/test/transport/kex/test_diffie_hellman_group_exchange_sha256.rb +0 -34
  128. data/test/transport/kex/test_ecdh_sha2_nistp256.rb +0 -161
  129. data/test/transport/kex/test_ecdh_sha2_nistp384.rb +0 -38
  130. data/test/transport/kex/test_ecdh_sha2_nistp521.rb +0 -38
  131. data/test/transport/test_algorithms.rb +0 -324
  132. data/test/transport/test_cipher_factory.rb +0 -443
  133. data/test/transport/test_hmac.rb +0 -34
  134. data/test/transport/test_identity_cipher.rb +0 -40
  135. data/test/transport/test_packet_stream.rb +0 -1761
  136. data/test/transport/test_server_version.rb +0 -78
  137. data/test/transport/test_session.rb +0 -331
  138. data/test/transport/test_state.rb +0 -181
@@ -37,7 +37,7 @@ pass = ask("Password: ") { |q| q.echo = "*" }
37
37
  puts "Configure your browser proxy to localhost:#{LOCAL_PORT}"
38
38
 
39
39
  begin
40
- session = Net::SSH.start(host, user, :password => pass)
40
+ session = Net::SSH.start(host, user, password: pass)
41
41
  session.forward.local(LOCAL_PORT, host, PROXY_PORT)
42
42
  session.loop{true}
43
43
  rescue => e
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,89 +1,168 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: net-ssh
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.9.2
4
+ version: 4.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jamis Buck
8
8
  - Delano Mandelbaum
9
9
  - Miklós Fazekas
10
- autorequire:
11
- bindir: bin
10
+ autorequire:
11
+ bindir: exe
12
12
  cert_chain:
13
13
  - |
14
14
  -----BEGIN CERTIFICATE-----
15
- MIIDODCCAiCgAwIBAgIBADANBgkqhkiG9w0BAQUFADBCMRAwDgYDVQQDDAduZXQt
16
- c3NoMRkwFwYKCZImiZPyLGQBGRYJc29sdXRpb3VzMRMwEQYKCZImiZPyLGQBGRYD
17
- Y29tMB4XDTE0MTIwMjE3MzkyMFoXDTE1MTIwMjE3MzkyMFowQjEQMA4GA1UEAwwH
18
- bmV0LXNzaDEZMBcGCgmSJomT8ixkARkWCXNvbHV0aW91czETMBEGCgmSJomT8ixk
19
- ARkWA2NvbTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJ0qnw4JV5JN
20
- MWelqu7pnW2z6GZJ7+zLFYJQNETJyF0U5zo7aCRK08OeUxnpu/TCCXK8iQVkNLfz
21
- 9pVIhF+X8pMEIruAkYGwBt1aWfuSNeyodyMk0vpZdxBHbOTJ4qBRUc6qOtNOeOzv
22
- 8ObYUX52P/EMMaeXTRU+e7MGkB9pb6FvPPNx5akxwIaoRvtcMsc/hJnQuP5r96w6
23
- t06MgKbXhWAX6gev0RVlrQqzxXst6iuvsrgZGjFqzob5wbTiX9M0+bFAB0EI7tJC
24
- sv5keEbtNRaU7p3ZbMm4wTHHJLOtD+BpUCSzwv4ToNj9mZtJBMYw2Eeo7z1DklEG
25
- mr95zbe+zNMCAwEAAaM5MDcwCQYDVR0TBAIwADAdBgNVHQ4EFgQU1bTfpzmitXwv
26
- LmTXi0IO5vd8NGYwCwYDVR0PBAQDAgSwMA0GCSqGSIb3DQEBBQUAA4IBAQA0Aps8
27
- UPINGa8XUUtrZtzrgX0/iyXNkKY1ld85g1N3WKEAVLfQI7TlGr0Qv2Ekx6RqlxbR
28
- Vyq08pytSnghW2otR3bIGMGQzqxAeRLb25cjEwH7YIJ32n7ZC1fpMnBZOBDmueWA
29
- B9EonmoO3ne7AJSgIvBbZzBPhzM4HrQGRW8LsPFsuj+dcJI43HOQwkmv2TRz0+t6
30
- mGZldmqLcK0abv4JepLfB9XTue3kuyA29NGBibqyvRwlKckLpvKfHZX6Jxad8xxm
31
- MbvRpzgROzyfw1qYi4dnIyMwTtXFFcZ0a2jpxHPkcTYFK6TzvFgDLAP0Y/u9jqUQ
32
- eZ7/3CdSi/isZHEw
15
+ MIIDeDCCAmCgAwIBAgIBATANBgkqhkiG9w0BAQUFADBBMQ8wDQYDVQQDDAZuZXRz
16
+ c2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZFgNj
17
+ b20wHhcNMTYxMjE1MTgwNTIyWhcNMTcxMjE1MTgwNTIyWjBBMQ8wDQYDVQQDDAZu
18
+ ZXRzc2gxGTAXBgoJkiaJk/IsZAEZFglzb2x1dGlvdXMxEzARBgoJkiaJk/IsZAEZ
19
+ FgNjb20wggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDGJ4TbZ9H+qZ08
20
+ pQfJhPJTHaDCyQvCsKTFrL5O9z3tllQ7B/zksMMM+qFBpNYu9HCcg4yBATacE/PB
21
+ qVVyUrpr6lbH/XwoN5ljXm+bdCfmnjZvTCL2FTE6o+bcnaF0IsJyC0Q2B1fbWdXN
22
+ 6Off1ZWoUk6We2BIM1bn6QJLxBpGyYhvOPXsYoqSuzDf2SJDDsWFZ8kV5ON13Ohm
23
+ JbBzn0oD8HF8FuYOewwsC0C1q4w7E5GtvHcQ5juweS7+RKsyDcVcVrLuNzoGRttS
24
+ KP4yMn+TzaXijyjRg7gECfJr3TGASaA4bQsILFGG5dAWcwO4OMrZedR7SHj/o0Kf
25
+ 3gL7P0axAgMBAAGjezB5MAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
26
+ BBQF8qLA7Z4zg0SJGtUbv3eoQ8tjIzAfBgNVHREEGDAWgRRuZXRzc2hAc29sdXRp
27
+ b3VzLmNvbTAfBgNVHRIEGDAWgRRuZXRzc2hAc29sdXRpb3VzLmNvbTANBgkqhkiG
28
+ 9w0BAQUFAAOCAQEATd8If+Ytmhf5lELy24j76ahGv64m518WTCdV2nIViGXB2BnV
29
+ uLQylGRb1rcgUS3Eh9TE28hqrfhotKS6a96qF9kN0mY2H6UwPWswJ+tj3gA1vLW8
30
+ wlZNlYGJ91Ig9zULPSbATyOOprUZyggy5p1260BaaI3LQYDeGJOSqpHCVu+TuMcy
31
+ k00ofiLT1crDSUl2WE/OIFK8AXpmd798AMsef8okHeoo+Dj7zCXn0VSimN+MO1mE
32
+ L4d54WIy4HkZCqQXoTSiK5HZMIdXkPk3F1bZdJ8Dy1sMRru0rUkkM5mW7TQ75mfW
33
+ Zp0QrZyNZhtitrXFbZneGRrIA/8G2Krft5Ly/A==
33
34
  -----END CERTIFICATE-----
34
- date: 2015-01-09 00:00:00.000000000 Z
35
+ date: 2016-12-26 00:00:00.000000000 Z
35
36
  dependencies:
36
37
  - !ruby/object:Gem::Dependency
37
- name: test-unit
38
38
  requirement: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '>='
40
+ - - "~>"
41
41
  - !ruby/object:Gem::Version
42
- version: '0'
42
+ version: 1.0.10
43
+ name: rbnacl-libsodium
44
+ prerelease: false
43
45
  type: :development
46
+ version_requirements: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - "~>"
49
+ - !ruby/object:Gem::Version
50
+ version: 1.0.10
51
+ - !ruby/object:Gem::Dependency
52
+ requirement: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - "~>"
55
+ - !ruby/object:Gem::Version
56
+ version: 3.4.0
57
+ name: rbnacl
44
58
  prerelease: false
59
+ type: :development
45
60
  version_requirements: !ruby/object:Gem::Requirement
46
61
  requirements:
47
- - - '>='
62
+ - - "~>"
48
63
  - !ruby/object:Gem::Version
49
- version: '0'
64
+ version: 3.4.0
65
+ - !ruby/object:Gem::Dependency
66
+ requirement: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - "~>"
69
+ - !ruby/object:Gem::Version
70
+ version: '1.11'
71
+ name: bundler
72
+ prerelease: false
73
+ type: :development
74
+ version_requirements: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - "~>"
77
+ - !ruby/object:Gem::Version
78
+ version: '1.11'
79
+ - !ruby/object:Gem::Dependency
80
+ requirement: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - "~>"
83
+ - !ruby/object:Gem::Version
84
+ version: '12.0'
85
+ name: rake
86
+ prerelease: false
87
+ type: :development
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ requirements:
90
+ - - "~>"
91
+ - !ruby/object:Gem::Version
92
+ version: '12.0'
93
+ - !ruby/object:Gem::Dependency
94
+ requirement: !ruby/object:Gem::Requirement
95
+ requirements:
96
+ - - "~>"
97
+ - !ruby/object:Gem::Version
98
+ version: '5.10'
99
+ name: minitest
100
+ prerelease: false
101
+ type: :development
102
+ version_requirements: !ruby/object:Gem::Requirement
103
+ requirements:
104
+ - - "~>"
105
+ - !ruby/object:Gem::Version
106
+ version: '5.10'
50
107
  - !ruby/object:Gem::Dependency
51
- name: mocha
52
108
  requirement: !ruby/object:Gem::Requirement
53
109
  requirements:
54
- - - '>='
110
+ - - "~>"
55
111
  - !ruby/object:Gem::Version
56
- version: '0'
112
+ version: 0.46.0
113
+ name: rubocop
114
+ prerelease: false
57
115
  type: :development
116
+ version_requirements: !ruby/object:Gem::Requirement
117
+ requirements:
118
+ - - "~>"
119
+ - !ruby/object:Gem::Version
120
+ version: 0.46.0
121
+ - !ruby/object:Gem::Dependency
122
+ requirement: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: 1.2.1
127
+ name: mocha
58
128
  prerelease: false
129
+ type: :development
59
130
  version_requirements: !ruby/object:Gem::Requirement
60
131
  requirements:
61
- - - '>='
132
+ - - ">="
62
133
  - !ruby/object:Gem::Version
63
- version: '0'
134
+ version: 1.2.1
64
135
  description: 'Net::SSH: a pure-Ruby implementation of the SSH2 client protocol. It
65
136
  allows you to write programs that invoke and interact with processes on remote servers,
66
137
  via SSH2.'
67
- email: net-ssh@solutious.com
138
+ email:
139
+ - net-ssh@solutious.com
68
140
  executables: []
69
141
  extensions: []
70
142
  extra_rdoc_files:
71
143
  - LICENSE.txt
72
144
  - README.rdoc
73
145
  files:
74
- - .travis.yml
146
+ - ".gitignore"
147
+ - ".rubocop.yml"
148
+ - ".rubocop_todo.yml"
149
+ - ".travis.yml"
75
150
  - CHANGES.txt
151
+ - Gemfile
152
+ - Gemfile.norbnacl
153
+ - Gemfile.norbnacl.lock
154
+ - ISSUE_TEMPLATE.md
76
155
  - LICENSE.txt
77
156
  - Manifest
78
157
  - README.rdoc
79
158
  - Rakefile
80
- - Rudyfile
81
159
  - THANKS.txt
160
+ - appveyor.yml
82
161
  - lib/net/ssh.rb
83
162
  - lib/net/ssh/authentication/agent.rb
84
- - lib/net/ssh/authentication/agent/java_pageant.rb
85
- - lib/net/ssh/authentication/agent/socket.rb
86
163
  - lib/net/ssh/authentication/constants.rb
164
+ - lib/net/ssh/authentication/ed25519.rb
165
+ - lib/net/ssh/authentication/ed25519_loader.rb
87
166
  - lib/net/ssh/authentication/key_manager.rb
88
167
  - lib/net/ssh/authentication/methods/abstract.rb
89
168
  - lib/net/ssh/authentication/methods/hostbased.rb
@@ -98,6 +177,7 @@ files:
98
177
  - lib/net/ssh/config.rb
99
178
  - lib/net/ssh/connection/channel.rb
100
179
  - lib/net/ssh/connection/constants.rb
180
+ - lib/net/ssh/connection/event_loop.rb
101
181
  - lib/net/ssh/connection/keepalive.rb
102
182
  - lib/net/ssh/connection/session.rb
103
183
  - lib/net/ssh/connection/term.rb
@@ -110,6 +190,7 @@ files:
110
190
  - lib/net/ssh/proxy/command.rb
111
191
  - lib/net/ssh/proxy/errors.rb
112
192
  - lib/net/ssh/proxy/http.rb
193
+ - lib/net/ssh/proxy/https.rb
113
194
  - lib/net/ssh/proxy/socks4.rb
114
195
  - lib/net/ssh/proxy/socks5.rb
115
196
  - lib/net/ssh/ruby_compat.rb
@@ -161,95 +242,30 @@ files:
161
242
  - lib/net/ssh/version.rb
162
243
  - net-ssh-public_cert.pem
163
244
  - net-ssh.gemspec
164
- - setup.rb
165
245
  - support/arcfour_check.rb
166
246
  - support/ssh_tunnel_bug.rb
167
- - test/README.txt
168
- - test/authentication/methods/common.rb
169
- - test/authentication/methods/test_abstract.rb
170
- - test/authentication/methods/test_hostbased.rb
171
- - test/authentication/methods/test_keyboard_interactive.rb
172
- - test/authentication/methods/test_none.rb
173
- - test/authentication/methods/test_password.rb
174
- - test/authentication/methods/test_publickey.rb
175
- - test/authentication/test_agent.rb
176
- - test/authentication/test_key_manager.rb
177
- - test/authentication/test_session.rb
178
- - test/common.rb
179
- - test/configs/auth_off
180
- - test/configs/auth_on
181
- - test/configs/empty
182
- - test/configs/eqsign
183
- - test/configs/exact_match
184
- - test/configs/host_plus
185
- - test/configs/multihost
186
- - test/configs/negative_match
187
- - test/configs/nohost
188
- - test/configs/numeric_host
189
- - test/configs/send_env
190
- - test/configs/substitutes
191
- - test/configs/wild_cards
192
- - test/connection/test_channel.rb
193
- - test/connection/test_session.rb
194
- - test/known_hosts/github
195
- - test/manual/test_forward.rb
196
- - test/manual/test_pageant.rb
197
- - test/start/test_connection.rb
198
- - test/start/test_options.rb
199
- - test/start/test_transport.rb
200
- - test/test_all.rb
201
- - test/test_buffer.rb
202
- - test/test_buffered_io.rb
203
- - test/test_config.rb
204
- - test/test_key_factory.rb
205
- - test/test_known_hosts.rb
206
- - test/transport/hmac/test_md5.rb
207
- - test/transport/hmac/test_md5_96.rb
208
- - test/transport/hmac/test_none.rb
209
- - test/transport/hmac/test_ripemd160.rb
210
- - test/transport/hmac/test_sha1.rb
211
- - test/transport/hmac/test_sha1_96.rb
212
- - test/transport/hmac/test_sha2_256.rb
213
- - test/transport/hmac/test_sha2_256_96.rb
214
- - test/transport/hmac/test_sha2_512.rb
215
- - test/transport/hmac/test_sha2_512_96.rb
216
- - test/transport/kex/test_diffie_hellman_group14_sha1.rb
217
- - test/transport/kex/test_diffie_hellman_group1_sha1.rb
218
- - test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb
219
- - test/transport/kex/test_diffie_hellman_group_exchange_sha256.rb
220
- - test/transport/kex/test_ecdh_sha2_nistp256.rb
221
- - test/transport/kex/test_ecdh_sha2_nistp384.rb
222
- - test/transport/kex/test_ecdh_sha2_nistp521.rb
223
- - test/transport/test_algorithms.rb
224
- - test/transport/test_cipher_factory.rb
225
- - test/transport/test_hmac.rb
226
- - test/transport/test_identity_cipher.rb
227
- - test/transport/test_packet_stream.rb
228
- - test/transport/test_server_version.rb
229
- - test/transport/test_session.rb
230
- - test/transport/test_state.rb
231
247
  homepage: https://github.com/net-ssh/net-ssh
232
248
  licenses:
233
249
  - MIT
234
250
  metadata: {}
235
- post_install_message:
251
+ post_install_message:
236
252
  rdoc_options: []
237
253
  require_paths:
238
254
  - lib
239
255
  required_ruby_version: !ruby/object:Gem::Requirement
240
256
  requirements:
241
- - - '>='
257
+ - - ">="
242
258
  - !ruby/object:Gem::Version
243
- version: '0'
259
+ version: '2.0'
244
260
  required_rubygems_version: !ruby/object:Gem::Requirement
245
261
  requirements:
246
- - - '>='
262
+ - - ">="
247
263
  - !ruby/object:Gem::Version
248
264
  version: '0'
249
265
  requirements: []
250
- rubyforge_project: net-ssh
251
- rubygems_version: 2.2.2
252
- signing_key:
266
+ rubyforge_project:
267
+ rubygems_version: 2.6.8
268
+ signing_key:
253
269
  specification_version: 4
254
270
  summary: 'Net::SSH: a pure-Ruby implementation of the SSH2 client protocol.'
255
271
  test_files: []
metadata.gz.sig CHANGED
Binary file
data/Rudyfile DELETED
@@ -1,96 +0,0 @@
1
- # Rudyfile
2
- #
3
- # This configuration is used to test installing
4
- # and running net-ssh on a clean machine.
5
- #
6
- # Usage:
7
- #
8
- # $ rudy -vv startup
9
- # $ rudy -vv testsuite
10
- # $ rudy -vv shutdown
11
- #
12
- # Requires: Rudy 0.9 (http://code.google.com/p/rudy/)
13
- #
14
-
15
- defaults do
16
- color true
17
- environment :test
18
- role :netssh
19
- end
20
-
21
- machines do
22
- region :'us-east-1' do
23
- ami 'ami-e348af8a' # Alestic Debian 5.0, 32-bit (US)
24
- end
25
- env :test do
26
- role :netssh do
27
- user :root
28
- end
29
- end
30
- end
31
-
32
- commands do
33
- allow :apt_get, "apt-get", :y, :q
34
- allow :gem_install, "/usr/bin/gem", "install", :n, '/usr/bin', :y, :V, "--no-rdoc", "--no-ri"
35
- allow :gem_sources, "/usr/bin/gem", "sources"
36
- allow :gem_uninstall, "/usr/bin/gem", "uninstall", :V
37
- allow :update_rubygems
38
- allow :rm
39
- end
40
-
41
- routines do
42
-
43
- testsuite do
44
- before :sysupdate, :installdeps, :install_gem
45
-
46
- remote :root do
47
- directory_upload 'test', '/tmp/'
48
- cd '/tmp'
49
- ruby :I, 'lib/', :I, 'test/', :r, 'rubygems', 'test/test_all.rb'
50
- end
51
-
52
- after :install_rubyforge, :install_github
53
- end
54
-
55
- install_gem do
56
- before :package_gem
57
- remote :root do
58
- disable_safe_mode
59
- file_upload "pkg/net-ssh-*.gem", "/tmp/"
60
- gem_install "/tmp/net-ssh-*.gem"
61
- end
62
- end
63
-
64
- package_gem do
65
- local do
66
- rm :r, :f, 'pkg'
67
- rake 'package'
68
- end
69
- end
70
-
71
- remove do
72
- remote :root do
73
- gem_uninstall 'net-ssh'
74
- end
75
- end
76
-
77
- installdeps do
78
- remote :root do
79
- gem_install "rye", "test-unit", "mocha"
80
- rye 'authorize-local'
81
- end
82
- end
83
-
84
- sysupdate do
85
- remote :root do
86
- apt_get "update"
87
- apt_get "install", "build-essential", "git-core"
88
- apt_get "install", "ruby1.8-dev", "rdoc", "libzlib-ruby", "rubygems"
89
- mkdir :p, "/var/lib/gems/1.8/bin" # Doesn't get created, but causes Rubygems to fail
90
- gem_install "builder", "session"
91
- gem_install 'rubygems-update', "-v=1.3.4" # circular issue with 1.3.5 and hoe
92
- update_rubygems
93
- end
94
- end
95
- end
96
-
@@ -1,85 +0,0 @@
1
- require 'jruby_pageant'
2
-
3
- module Net; module SSH; module Authentication
4
-
5
- # This class implements an agent for JRuby + Pageant.
6
- #
7
- # Written by Artūras Šlajus <arturas.slajus@gmail.com>
8
- class Agent
9
- include Loggable
10
- include JRubyPageant
11
-
12
- # A simple module for extending keys, to allow blobs and comments to be
13
- # specified for them.
14
- module Key
15
- # :blob is used by OpenSSL::PKey::RSA#to_blob
16
- attr_accessor :java_blob
17
- attr_accessor :comment
18
- end
19
-
20
- # Instantiates a new agent object, connects to a running SSH agent,
21
- # negotiates the agent protocol version, and returns the agent object.
22
- def self.connect(logger=nil)
23
- agent = new(logger)
24
- agent.connect!
25
- agent
26
- end
27
-
28
- # Creates a new Agent object, using the optional logger instance to
29
- # report status.
30
- def initialize(logger=nil)
31
- self.logger = logger
32
- end
33
-
34
- # Connect to the agent process using the socket factory and socket name
35
- # given by the attribute writers. If the agent on the other end of the
36
- # socket reports that it is an SSH2-compatible agent, this will fail
37
- # (it only supports the ssh-agent distributed by OpenSSH).
38
- def connect!
39
- debug { "connecting to Pageant ssh-agent (via java connector)" }
40
- @agent_proxy = JRubyPageant.create
41
- unless @agent_proxy.is_running
42
- raise AgentNotAvailable, "Pageant is not running!"
43
- end
44
- debug { "connection to Pageant ssh-agent (via java connector) succeeded" }
45
- rescue AgentProxyException => e
46
- error { "could not connect to Pageant ssh-agent (via java connector)" }
47
- raise AgentNotAvailable, e.message, e.backtrace
48
- end
49
-
50
- # Return an array of all identities (public keys) known to the agent.
51
- # Each key returned is augmented with a +comment+ property which is set
52
- # to the comment returned by the agent for that key.
53
- def identities
54
- debug { "getting identities from Pageant" }
55
- @agent_proxy.get_identities.map do |identity|
56
- blob = identity.get_blob
57
- key = Buffer.new(String.from_java_bytes(blob)).read_key
58
- key.extend(Key)
59
- key.java_blob = blob
60
- key.comment = String.from_java_bytes(identity.get_comment)
61
- key
62
- end
63
- rescue AgentProxyException => e
64
- raise AgentError, "Cannot get identities: #{e.message}", e.backtrace
65
- end
66
-
67
- # Simulate agent close. This agent reference is no longer able to
68
- # query the agent.
69
- def close
70
- @agent_proxy = nil
71
- end
72
-
73
- # Using the agent and the given public key, sign the given data. The
74
- # signature is returned in SSH2 format.
75
- def sign(key, data)
76
- signed = @agent_proxy.sign(key.java_blob, data.to_java_bytes)
77
- String.from_java_bytes(signed)
78
- rescue AgentProxyException => e
79
- raise AgentError,
80
- "agent could not sign data with requested identity: #{e.message}",
81
- e.backtrace
82
- end
83
- end
84
-
85
- end; end; end
@@ -1,178 +0,0 @@
1
- require 'net/ssh/transport/server_version'
2
-
3
- # Only load pageant on Windows
4
- if Net::SSH::Authentication::PLATFORM == :win32
5
- require 'net/ssh/authentication/pageant'
6
- end
7
-
8
- module Net; module SSH; module Authentication
9
-
10
- # This class implements a simple client for the ssh-agent protocol. It
11
- # does not implement any specific protocol, but instead copies the
12
- # behavior of the ssh-agent functions in the OpenSSH library (3.8).
13
- #
14
- # This means that although it behaves like a SSH1 client, it also has
15
- # some SSH2 functionality (like signing data).
16
- class Agent
17
- include Loggable
18
-
19
- # A simple module for extending keys, to allow comments to be specified
20
- # for them.
21
- module Comment
22
- attr_accessor :comment
23
- end
24
-
25
- SSH2_AGENT_REQUEST_VERSION = 1
26
- SSH2_AGENT_REQUEST_IDENTITIES = 11
27
- SSH2_AGENT_IDENTITIES_ANSWER = 12
28
- SSH2_AGENT_SIGN_REQUEST = 13
29
- SSH2_AGENT_SIGN_RESPONSE = 14
30
- SSH2_AGENT_FAILURE = 30
31
- SSH2_AGENT_VERSION_RESPONSE = 103
32
-
33
- SSH_COM_AGENT2_FAILURE = 102
34
-
35
- SSH_AGENT_REQUEST_RSA_IDENTITIES = 1
36
- SSH_AGENT_RSA_IDENTITIES_ANSWER1 = 2
37
- SSH_AGENT_RSA_IDENTITIES_ANSWER2 = 5
38
- SSH_AGENT_FAILURE = 5
39
-
40
- # The underlying socket being used to communicate with the SSH agent.
41
- attr_reader :socket
42
-
43
- # Instantiates a new agent object, connects to a running SSH agent,
44
- # negotiates the agent protocol version, and returns the agent object.
45
- def self.connect(logger=nil)
46
- agent = new(logger)
47
- agent.connect!
48
- agent.negotiate!
49
- agent
50
- end
51
-
52
- # Creates a new Agent object, using the optional logger instance to
53
- # report status.
54
- def initialize(logger=nil)
55
- self.logger = logger
56
- end
57
-
58
- # Connect to the agent process using the socket factory and socket name
59
- # given by the attribute writers. If the agent on the other end of the
60
- # socket reports that it is an SSH2-compatible agent, this will fail
61
- # (it only supports the ssh-agent distributed by OpenSSH).
62
- def connect!
63
- begin
64
- debug { "connecting to ssh-agent" }
65
- @socket = agent_socket_factory.open(ENV['SSH_AUTH_SOCK'])
66
- rescue
67
- error { "could not connect to ssh-agent" }
68
- raise AgentNotAvailable, $!.message
69
- end
70
- end
71
-
72
- # Attempts to negotiate the SSH agent protocol version. Raises an error
73
- # if the version could not be negotiated successfully.
74
- def negotiate!
75
- # determine what type of agent we're communicating with
76
- type, body = send_and_wait(SSH2_AGENT_REQUEST_VERSION, :string, Transport::ServerVersion::PROTO_VERSION)
77
-
78
- if type == SSH2_AGENT_VERSION_RESPONSE
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" }
82
- elsif type != SSH_AGENT_RSA_IDENTITIES_ANSWER1 && type != SSH_AGENT_RSA_IDENTITIES_ANSWER2
83
- raise AgentNotAvailable, "unknown response from agent: #{type}, #{body.to_s.inspect}"
84
- end
85
- end
86
-
87
- # Return an array of all identities (public keys) known to the agent.
88
- # Each key returned is augmented with a +comment+ property which is set
89
- # to the comment returned by the agent for that key.
90
- def identities
91
- type, body = send_and_wait(SSH2_AGENT_REQUEST_IDENTITIES)
92
- raise AgentError, "could not get identity count" if agent_failed(type)
93
- raise AgentError, "bad authentication reply: #{type}" if type != SSH2_AGENT_IDENTITIES_ANSWER
94
-
95
- identities = []
96
- body.read_long.times do
97
- key_str = body.read_string
98
- comment_str = body.read_string
99
- begin
100
- key = Buffer.new(key_str).read_key
101
- key.extend(Comment)
102
- key.comment = comment_str
103
- identities.push key
104
- rescue NotImplementedError => e
105
- error { "ignoring unimplemented key:#{e.message} #{comment_str}" }
106
- end
107
- end
108
-
109
- return identities
110
- end
111
-
112
- # Closes this socket. This agent reference is no longer able to
113
- # query the agent.
114
- def close
115
- @socket.close
116
- end
117
-
118
- # Using the agent and the given public key, sign the given data. The
119
- # signature is returned in SSH2 format.
120
- def sign(key, data)
121
- type, reply = send_and_wait(SSH2_AGENT_SIGN_REQUEST, :string, Buffer.from(:key, key), :string, data, :long, 0)
122
-
123
- if agent_failed(type)
124
- raise AgentError, "agent could not sign data with requested identity"
125
- elsif type != SSH2_AGENT_SIGN_RESPONSE
126
- raise AgentError, "bad authentication response #{type}"
127
- end
128
-
129
- return reply.read_string
130
- end
131
-
132
- private
133
-
134
- # Returns the agent socket factory to use.
135
- def agent_socket_factory
136
- if Net::SSH::Authentication::PLATFORM == :win32
137
- Pageant::Socket
138
- else
139
- UNIXSocket
140
- end
141
- end
142
-
143
- # Send a new packet of the given type, with the associated data.
144
- def send_packet(type, *args)
145
- buffer = Buffer.from(*args)
146
- data = [buffer.length + 1, type.to_i, buffer.to_s].pack("NCA*")
147
- debug { "sending agent request #{type} len #{buffer.length}" }
148
- @socket.send data, 0
149
- end
150
-
151
- # Read the next packet from the agent. This will return a two-part
152
- # tuple consisting of the packet type, and the packet's body (which
153
- # is returned as a Net::SSH::Buffer).
154
- def read_packet
155
- buffer = Net::SSH::Buffer.new(@socket.read(4))
156
- buffer.append(@socket.read(buffer.read_long))
157
- type = buffer.read_byte
158
- debug { "received agent packet #{type} len #{buffer.length-4}" }
159
- return type, buffer
160
- end
161
-
162
- # Send the given packet and return the subsequent reply from the agent.
163
- # (See #send_packet and #read_packet).
164
- def send_and_wait(type, *args)
165
- send_packet(type, *args)
166
- read_packet
167
- end
168
-
169
- # Returns +true+ if the parameter indicates a "failure" response from
170
- # the agent, and +false+ otherwise.
171
- def agent_failed(type)
172
- type == SSH_AGENT_FAILURE ||
173
- type == SSH2_AGENT_FAILURE ||
174
- type == SSH_COM_AGENT2_FAILURE
175
- end
176
- end
177
-
178
- end; end; end