net-ssh 3.2.0 → 7.2.0.rc1

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.
Files changed (210) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.dockerignore +6 -0
  4. data/.github/FUNDING.yml +1 -0
  5. data/.github/config/rubocop_linter_action.yml +4 -0
  6. data/.github/workflows/ci-with-docker.yml +44 -0
  7. data/.github/workflows/ci.yml +93 -0
  8. data/.github/workflows/rubocop.yml +16 -0
  9. data/.gitignore +13 -0
  10. data/.rubocop.yml +22 -0
  11. data/.rubocop_todo.yml +1081 -0
  12. data/CHANGES.txt +237 -7
  13. data/DEVELOPMENT.md +23 -0
  14. data/Dockerfile +27 -0
  15. data/Dockerfile.openssl3 +17 -0
  16. data/Gemfile +13 -0
  17. data/Gemfile.noed25519 +12 -0
  18. data/Gemfile.norbnacl +12 -0
  19. data/ISSUE_TEMPLATE.md +30 -0
  20. data/Manifest +4 -5
  21. data/README.md +298 -0
  22. data/Rakefile +125 -74
  23. data/SECURITY.md +4 -0
  24. data/appveyor.yml +58 -0
  25. data/docker-compose.yml +23 -0
  26. data/lib/net/ssh/authentication/agent.rb +279 -18
  27. data/lib/net/ssh/authentication/certificate.rb +183 -0
  28. data/lib/net/ssh/authentication/constants.rb +17 -15
  29. data/lib/net/ssh/authentication/ed25519.rb +186 -0
  30. data/lib/net/ssh/authentication/ed25519_loader.rb +31 -0
  31. data/lib/net/ssh/authentication/key_manager.rb +86 -39
  32. data/lib/net/ssh/authentication/methods/abstract.rb +67 -48
  33. data/lib/net/ssh/authentication/methods/hostbased.rb +34 -37
  34. data/lib/net/ssh/authentication/methods/keyboard_interactive.rb +13 -13
  35. data/lib/net/ssh/authentication/methods/none.rb +16 -19
  36. data/lib/net/ssh/authentication/methods/password.rb +27 -17
  37. data/lib/net/ssh/authentication/methods/publickey.rb +96 -55
  38. data/lib/net/ssh/authentication/pageant.rb +471 -367
  39. data/lib/net/ssh/authentication/pub_key_fingerprint.rb +43 -0
  40. data/lib/net/ssh/authentication/session.rb +131 -121
  41. data/lib/net/ssh/buffer.rb +399 -300
  42. data/lib/net/ssh/buffered_io.rb +154 -150
  43. data/lib/net/ssh/config.rb +308 -185
  44. data/lib/net/ssh/connection/channel.rb +635 -613
  45. data/lib/net/ssh/connection/constants.rb +29 -29
  46. data/lib/net/ssh/connection/event_loop.rb +123 -0
  47. data/lib/net/ssh/connection/keepalive.rb +55 -51
  48. data/lib/net/ssh/connection/session.rb +620 -551
  49. data/lib/net/ssh/connection/term.rb +125 -123
  50. data/lib/net/ssh/errors.rb +101 -99
  51. data/lib/net/ssh/key_factory.rb +197 -105
  52. data/lib/net/ssh/known_hosts.rb +214 -127
  53. data/lib/net/ssh/loggable.rb +50 -49
  54. data/lib/net/ssh/packet.rb +83 -79
  55. data/lib/net/ssh/prompt.rb +50 -81
  56. data/lib/net/ssh/proxy/command.rb +105 -90
  57. data/lib/net/ssh/proxy/errors.rb +12 -10
  58. data/lib/net/ssh/proxy/http.rb +82 -79
  59. data/lib/net/ssh/proxy/https.rb +50 -0
  60. data/lib/net/ssh/proxy/jump.rb +54 -0
  61. data/lib/net/ssh/proxy/socks4.rb +2 -6
  62. data/lib/net/ssh/proxy/socks5.rb +14 -17
  63. data/lib/net/ssh/service/forward.rb +370 -317
  64. data/lib/net/ssh/test/channel.rb +145 -136
  65. data/lib/net/ssh/test/extensions.rb +131 -110
  66. data/lib/net/ssh/test/kex.rb +34 -32
  67. data/lib/net/ssh/test/local_packet.rb +46 -44
  68. data/lib/net/ssh/test/packet.rb +89 -70
  69. data/lib/net/ssh/test/remote_packet.rb +32 -30
  70. data/lib/net/ssh/test/script.rb +156 -142
  71. data/lib/net/ssh/test/socket.rb +49 -48
  72. data/lib/net/ssh/test.rb +82 -77
  73. data/lib/net/ssh/transport/algorithms.rb +462 -359
  74. data/lib/net/ssh/transport/chacha20_poly1305_cipher.rb +117 -0
  75. data/lib/net/ssh/transport/chacha20_poly1305_cipher_loader.rb +17 -0
  76. data/lib/net/ssh/transport/cipher_factory.rb +122 -99
  77. data/lib/net/ssh/transport/constants.rb +32 -24
  78. data/lib/net/ssh/transport/ctr.rb +42 -22
  79. data/lib/net/ssh/transport/hmac/abstract.rb +81 -63
  80. data/lib/net/ssh/transport/hmac/md5.rb +0 -2
  81. data/lib/net/ssh/transport/hmac/md5_96.rb +0 -2
  82. data/lib/net/ssh/transport/hmac/none.rb +0 -2
  83. data/lib/net/ssh/transport/hmac/ripemd160.rb +0 -2
  84. data/lib/net/ssh/transport/hmac/sha1.rb +0 -2
  85. data/lib/net/ssh/transport/hmac/sha1_96.rb +0 -2
  86. data/lib/net/ssh/transport/hmac/sha2_256.rb +7 -11
  87. data/lib/net/ssh/transport/hmac/sha2_256_96.rb +4 -8
  88. data/lib/net/ssh/transport/hmac/sha2_256_etm.rb +12 -0
  89. data/lib/net/ssh/transport/hmac/sha2_512.rb +6 -9
  90. data/lib/net/ssh/transport/hmac/sha2_512_96.rb +4 -8
  91. data/lib/net/ssh/transport/hmac/sha2_512_etm.rb +12 -0
  92. data/lib/net/ssh/transport/hmac.rb +14 -12
  93. data/lib/net/ssh/transport/identity_cipher.rb +54 -44
  94. data/lib/net/ssh/transport/kex/abstract.rb +130 -0
  95. data/lib/net/ssh/transport/kex/abstract5656.rb +72 -0
  96. data/lib/net/ssh/transport/kex/curve25519_sha256.rb +39 -0
  97. data/lib/net/ssh/transport/kex/curve25519_sha256_loader.rb +30 -0
  98. data/lib/net/ssh/transport/kex/diffie_hellman_group14_sha1.rb +33 -40
  99. data/lib/net/ssh/transport/kex/diffie_hellman_group14_sha256.rb +11 -0
  100. data/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +119 -213
  101. data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +53 -61
  102. data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha256.rb +5 -9
  103. data/lib/net/ssh/transport/kex/ecdh_sha2_nistp256.rb +36 -90
  104. data/lib/net/ssh/transport/kex/ecdh_sha2_nistp384.rb +18 -10
  105. data/lib/net/ssh/transport/kex/ecdh_sha2_nistp521.rb +18 -10
  106. data/lib/net/ssh/transport/kex.rb +15 -12
  107. data/lib/net/ssh/transport/key_expander.rb +24 -20
  108. data/lib/net/ssh/transport/openssl.rb +161 -124
  109. data/lib/net/ssh/transport/openssl_cipher_extensions.rb +8 -0
  110. data/lib/net/ssh/transport/packet_stream.rb +246 -185
  111. data/lib/net/ssh/transport/server_version.rb +55 -56
  112. data/lib/net/ssh/transport/session.rb +306 -255
  113. data/lib/net/ssh/transport/state.rb +178 -176
  114. data/lib/net/ssh/verifiers/accept_new.rb +33 -0
  115. data/lib/net/ssh/verifiers/accept_new_or_local_tunnel.rb +33 -0
  116. data/lib/net/ssh/verifiers/always.rb +58 -0
  117. data/lib/net/ssh/verifiers/never.rb +19 -0
  118. data/lib/net/ssh/version.rb +55 -53
  119. data/lib/net/ssh.rb +111 -47
  120. data/net-ssh-public_cert.pem +18 -18
  121. data/net-ssh.gemspec +38 -205
  122. data/support/ssh_tunnel_bug.rb +5 -5
  123. data.tar.gz.sig +0 -0
  124. metadata +173 -118
  125. metadata.gz.sig +0 -0
  126. data/.travis.yml +0 -18
  127. data/README.rdoc +0 -182
  128. data/lib/net/ssh/authentication/agent/java_pageant.rb +0 -85
  129. data/lib/net/ssh/authentication/agent/socket.rb +0 -178
  130. data/lib/net/ssh/ruby_compat.rb +0 -46
  131. data/lib/net/ssh/verifiers/lenient.rb +0 -30
  132. data/lib/net/ssh/verifiers/null.rb +0 -12
  133. data/lib/net/ssh/verifiers/secure.rb +0 -52
  134. data/lib/net/ssh/verifiers/strict.rb +0 -24
  135. data/setup.rb +0 -1585
  136. data/support/arcfour_check.rb +0 -20
  137. data/test/README.txt +0 -18
  138. data/test/authentication/methods/common.rb +0 -28
  139. data/test/authentication/methods/test_abstract.rb +0 -51
  140. data/test/authentication/methods/test_hostbased.rb +0 -114
  141. data/test/authentication/methods/test_keyboard_interactive.rb +0 -121
  142. data/test/authentication/methods/test_none.rb +0 -41
  143. data/test/authentication/methods/test_password.rb +0 -95
  144. data/test/authentication/methods/test_publickey.rb +0 -148
  145. data/test/authentication/test_agent.rb +0 -232
  146. data/test/authentication/test_key_manager.rb +0 -240
  147. data/test/authentication/test_session.rb +0 -107
  148. data/test/common.rb +0 -125
  149. data/test/configs/auth_off +0 -5
  150. data/test/configs/auth_on +0 -4
  151. data/test/configs/empty +0 -0
  152. data/test/configs/eqsign +0 -3
  153. data/test/configs/exact_match +0 -8
  154. data/test/configs/host_plus +0 -10
  155. data/test/configs/multihost +0 -4
  156. data/test/configs/negative_match +0 -6
  157. data/test/configs/nohost +0 -19
  158. data/test/configs/numeric_host +0 -4
  159. data/test/configs/proxy_remote_user +0 -2
  160. data/test/configs/send_env +0 -2
  161. data/test/configs/substitutes +0 -8
  162. data/test/configs/wild_cards +0 -14
  163. data/test/connection/test_channel.rb +0 -487
  164. data/test/connection/test_session.rb +0 -564
  165. data/test/integration/README.txt +0 -17
  166. data/test/integration/Vagrantfile +0 -12
  167. data/test/integration/common.rb +0 -63
  168. data/test/integration/playbook.yml +0 -56
  169. data/test/integration/test_forward.rb +0 -637
  170. data/test/integration/test_id_rsa_keys.rb +0 -96
  171. data/test/integration/test_proxy.rb +0 -93
  172. data/test/known_hosts/github +0 -1
  173. data/test/known_hosts/github_hash +0 -1
  174. data/test/manual/test_pageant.rb +0 -37
  175. data/test/start/test_connection.rb +0 -53
  176. data/test/start/test_options.rb +0 -57
  177. data/test/start/test_transport.rb +0 -28
  178. data/test/start/test_user_nil.rb +0 -27
  179. data/test/test_all.rb +0 -12
  180. data/test/test_buffer.rb +0 -433
  181. data/test/test_buffered_io.rb +0 -63
  182. data/test/test_config.rb +0 -268
  183. data/test/test_key_factory.rb +0 -191
  184. data/test/test_known_hosts.rb +0 -66
  185. data/test/transport/hmac/test_md5.rb +0 -41
  186. data/test/transport/hmac/test_md5_96.rb +0 -27
  187. data/test/transport/hmac/test_none.rb +0 -34
  188. data/test/transport/hmac/test_ripemd160.rb +0 -36
  189. data/test/transport/hmac/test_sha1.rb +0 -36
  190. data/test/transport/hmac/test_sha1_96.rb +0 -27
  191. data/test/transport/hmac/test_sha2_256.rb +0 -37
  192. data/test/transport/hmac/test_sha2_256_96.rb +0 -27
  193. data/test/transport/hmac/test_sha2_512.rb +0 -37
  194. data/test/transport/hmac/test_sha2_512_96.rb +0 -27
  195. data/test/transport/kex/test_diffie_hellman_group14_sha1.rb +0 -13
  196. data/test/transport/kex/test_diffie_hellman_group1_sha1.rb +0 -150
  197. data/test/transport/kex/test_diffie_hellman_group_exchange_sha1.rb +0 -96
  198. data/test/transport/kex/test_diffie_hellman_group_exchange_sha256.rb +0 -19
  199. data/test/transport/kex/test_ecdh_sha2_nistp256.rb +0 -161
  200. data/test/transport/kex/test_ecdh_sha2_nistp384.rb +0 -38
  201. data/test/transport/kex/test_ecdh_sha2_nistp521.rb +0 -38
  202. data/test/transport/test_algorithms.rb +0 -328
  203. data/test/transport/test_cipher_factory.rb +0 -443
  204. data/test/transport/test_hmac.rb +0 -34
  205. data/test/transport/test_identity_cipher.rb +0 -40
  206. data/test/transport/test_packet_stream.rb +0 -1762
  207. data/test/transport/test_server_version.rb +0 -74
  208. data/test/transport/test_session.rb +0 -331
  209. data/test/transport/test_state.rb +0 -181
  210. data/test/verifiers/test_secure.rb +0 -40
data/CHANGES.txt CHANGED
@@ -1,12 +1,242 @@
1
- === 3.2.0
1
+ === 7.2.0
2
2
 
3
- * Added agent_socket_factory option [Alon Goldboim]
4
- * Send KEXINIT asap don't wait for server [Miklos Fazekas]
5
- * Close channels in case server closed connection [Miklos Fazekas]
3
+ === 7.2.0 rc1
6
4
 
7
- === 3.1.1
5
+ * Allow IdentityAgent as option to Net::SSH.start [#912]
8
6
 
9
- * added missing etc require
7
+ === 7.2.0 beta1
8
+
9
+ * Support `chacha20-poly1305@opnessh.com` cypher if `RbNaCl` gem is installed [#908]
10
+
11
+ === 7.1.0
12
+
13
+ * Accept pubkey_algorithms option when starting a new connection [#891]
14
+
15
+ === 7.1.0 beta1
16
+
17
+ * Don't use the deprecated set_XXX methods on RSA keys. [#875]
18
+ * Raise error when BCryptPbkdf fails [#876]
19
+
20
+ === 7.0.1
21
+
22
+ * Drop leftover debug statement [#866]
23
+
24
+ === 7.0.0
25
+
26
+ * BREAKING: Drop support for Ruby 2.5
27
+ * Fix decoding of ecdsa-sha2-nistp256 private keys [#657, #854]
28
+ * Fix missing require [#855]
29
+ * Support `~` in the path to the SSH agent's unix socket [#850]
30
+ * Add support for RSA client authentication with SHA-2 [a45f54]
31
+ * openssl: DSA: don't hardcode expected signature size, see ruby/openssl#483 [23a15c]
32
+ * Internal housekeeping (rubocop, codecov, remove travis, adding/improving tests)
33
+
34
+ === 6.3.0 beta1
35
+
36
+ * Support cert based host key auth, fix asterisk in known_hosts [#833]
37
+ * Support kex dh-group14-sha256 [#795]
38
+ * Fix StrictHostKeyChecking ssh config parameter translation [#765]
39
+
40
+ === 6.2.0 rc1
41
+
42
+ === 6.2.0 beta1
43
+
44
+ * rsa-sha2-512, rsa-sha2-256 host_key algs [#771]
45
+ * JRuby aes*-ctr suppport [#767]
46
+
47
+ === 6.1.0
48
+
49
+ * Adapt to ssh's default behaviors when no username is provided.
50
+ When Net::SSH.start user is nil and config has no entry
51
+ we default to Etc.getpwuid.name() instead of Etc.getlogin(). [#749]
52
+
53
+ === 6.1.0.rc1
54
+
55
+ * Make sha2-{256,512}-etm@openssh.com MAC default again [#761]
56
+ * Support algorithm subtraction syntax from ssh_config [#751]
57
+
58
+ === 6.0.2
59
+
60
+ * Fix corrupted hmac issue in etm hmac [#759]
61
+
62
+ === 6.0.1
63
+
64
+ * Make sha2-{256,512}-etm@openssh.com MAC opt-in as they seems to have issues [#757]
65
+
66
+ === 6.0.0
67
+
68
+ * Support empty lines and comments in known_hosts [donoghuc, #742]
69
+ * Add sha2-{256,512}-etm@openssh.com MAC algorithms [graaff, #714]
70
+
71
+ === 6.0.0 beta2
72
+
73
+ * Support :certkeys and CertificateFile configuration option [Anders Carling, #722]
74
+
75
+ === 6.0.0 beta1
76
+
77
+ * curve25519sha256 support [Florian Wininger ,#690]
78
+ * disabled insecure algs [Florian Wininger , #709]
79
+
80
+ === 5.2.0
81
+
82
+ === 5.2.0.rc3
83
+
84
+ * Fix check_host_ip read from config
85
+ * Support ssh-ed25519 in known hosts
86
+
87
+ === 5.2.0.rc2
88
+
89
+ * Read check_host_ip from ssh config files
90
+
91
+ === 5.2.0.rc1
92
+
93
+ * Interpret * and ? in know_hosts file [Romain Tartière, #660]
94
+ * New :check_host_ip so ip checking can be disabled in known hosts [Romain Tartière, #656]
95
+
96
+ === 5.1.0
97
+
98
+ === 5.1.0.rc1
99
+
100
+ * Support new OpenSSH private key format for rsa - bcrypt for rsa (ed25519 already supported) [#646]
101
+ * Support IdentityAgent is ssh config [Frank Groeneveld, #645]
102
+ * Improve Match processing in ssh config [Aleksandrs Ļedovskis, #642]
103
+ * Ignore signature verification when verify_host_key is never [Piotr Kliczewski, #641]
104
+ * Alg preference was changed to prefer stronger encryptions [Tray, #637]
105
+
106
+ === 5.0.2
107
+
108
+ * Fix ctr for jruby [#612]
109
+
110
+ === 5.0.1
111
+
112
+ * default_keys were not loaded even if no keys or key_data options specified [#607]
113
+
114
+ === 5.0.0
115
+
116
+ * Breaking change: ed25519 now requires ed25519 gem instead of RbNaCl gem [#563]
117
+ * Verify_host_key options rename (true, false, :very, :secure depreacted new equivalents are :never, :accept_new_or_local_tunnel :accept_new :always) [Jared Beck, #595]
118
+
119
+ === 5.0.0.rc2
120
+
121
+ * Add .dll extensions to dlopen on cygwin [#603]
122
+ * Fix host certificate validation [#601]
123
+
124
+ === 5.0.0.rc1
125
+
126
+ * Fix larger than 4GB file transfers [#599]
127
+ * Update HTTP proxy to version 1.1 [Connor Dunn, #597]
128
+
129
+ === 5.0.0.beta2
130
+
131
+ * Support for sha256 pubkey fingerprint [Tom Maher, #585]
132
+ * Don't try to load default_keys if key_data option is used [Josh Larson, #589]
133
+ * Added fingerprint_hash defaulting to SHA256 as fingerprint format, and MD5 can be used as an option [Miklós Fazekas, #591]
134
+
135
+ === 5.0.0.beta1
136
+
137
+ * Don't leave proxy command as zombie on timeout [DimitriosLisenko, #560]
138
+ * Use OpenSSL for aes*-ctr for up to 5x throughput improvement [Miklós Fazekas, Harald Sitter, #570]
139
+ * Optimize slice! usage in CTR for up to 2x throughput improvement [Harald Sitter, #569]
140
+ * Replace RbNaCl dependency with ed25519 gem [Tony Arcieri ,#563]
141
+ * Add initial Match support [Kasumi Hanazuki, #553]
142
+
143
+ === 4.2.0.rc2
144
+
145
+ * Fix double close bug on auth failure (or ruby 2.2 or earlier) [#538]
146
+
147
+ === 4.2.0.rc1
148
+
149
+ * Improved logging with proxy command [Dmitriy Ivliev, #530]
150
+ * Close transport on proxy error [adamruzicka, #526]
151
+ * Support multiple identity files [Kimura Masayuki, #528]
152
+ * Move `none` cipher to end of cipher list [Brian Cain, #525]
153
+ * Deprecate `:paranoid` in favor of `:verify_host_key` [Jared Beck, #524]
154
+ * Support Multile Include ssh config files [Kasumi Hanazuki, #516]
155
+ * Support Relative path in ssh confif files [Akinori MUSHA, #510]
156
+ * add direct-streamlocal@openssh.com support in Forward class [Harald Sitter, #502]
157
+
158
+ === 4.1.0
159
+ === 4.1.0.rc1
160
+
161
+ * ProxyJump support [Ryan McGeary, #500]
162
+ * Fix agent detection on Windows [Christian Koehler, #495]
163
+
164
+ === 4.1.0.beta1
165
+
166
+ * Fix nil error when libsodium is not there [chapmajs ,#488]
167
+ * SSH certificate support for client auth [David Bartley, #485]
168
+
169
+ === 4.0.1
170
+ === 4.0.1.rc2
171
+
172
+ * ENV["HOME"] might be empty so filter non expandable paths [Matt Casper, #351]
173
+
174
+ === 4.0.1.rc1
175
+
176
+ * support of rbnacl 4.0 and better error message [#479]
177
+ * support include in config files [Kimura Masayuki, #475]
178
+ * fixed issue with ruby 2.2 or older on windows [#472]
179
+
180
+ === 4.0.0
181
+ === 4.0.0.rc3
182
+
183
+ * parse `+` character in config files [Christoph Lupprich, #470, #314]
184
+
185
+ === 4.0.0.rc2
186
+
187
+ * Fixed OpenSSL 2.0/Ruby 2.4.0 warnings [Miklós Fazekas, #468]
188
+ * Added ssh-ed25519 to KnownHosts:SUPPORTED_TYPE [detatka-kuzlatka-otevrete, Miklós Fazekas, #459]
189
+ * Allow nil for :passhrase and passing in nil option is now a depreaction warning [Miklós Fazekas, #465]
190
+
191
+ === 4.0.0.rc1
192
+
193
+ * Allow :password to be nil for capistrano v2 compatibility [Will Bryant, #357]
194
+ * In next_packet if prefer consuming buffer before filling it again if we have enough data [Miklós Fazekas, #454]
195
+
196
+ === 4.0.0.beta4
197
+
198
+ * Added exitstatus method to exec's return [Miklós Fazekas, #452]
199
+ * Don't raise from exec if server closes transport just after channel close [Miklós Fazekas, #450]
200
+ * Removed java_pageant, as jruby should be using regular pagent impl [Miklós Fazekas, ]
201
+ * Use SSH_AUTH_SOCK if possible on windows (cygwin) [Miklós Fazekas, Martin Dürst, #365, #361]
202
+ * HTTPS proxy support [Marcus Ilgner, #432]
203
+ * Supports ruby 2.4.0.dev new exception type from OpenSSL::PKey.read
204
+
205
+ === 4.0.0.beta3
206
+
207
+ * Fix Net::SSH::Disconnect exceptions when channels are closed cleanly [Miklos Fazekas, #421, #422]
208
+
209
+ === 4.0.0.beta2
210
+
211
+ * Fix raiseUnlessLoaded undefined ERROR issue [Miklos Fazekas, #418]
212
+
213
+ === 4.0.0.beta1
214
+
215
+ * Fix pageant [elconas, #235]
216
+ * Relaxed rbnacl,rbnacl-selenium contstraints ang give better errors about them [Miklos Fazekas, #398]
217
+ * Fix UTF-8 encoding issues [Ethan J. Brown, #407]
218
+
219
+ === 4.0.0.alpha4
220
+
221
+ * Experimental event loop abstraction [Miklos Fazekas]
222
+ * RbNacl dependency is optional [Miklos Fazekas]
223
+ * agent_socket_factory option [Alon Goldboim]
224
+ * client sends KEXINIT, it doesn't have to wait for server [Miklos Fazekas]
225
+ * better error message when option is nil [Kane Morgan]
226
+ * prompting can be customized [Miklos Fazekas]
227
+
228
+ === 4.0.0.alpha3
229
+
230
+ * added max_select_wait_time [Eugene Kenny]
231
+
232
+ === 4.0.0.alpha2
233
+
234
+ * when transport closes we're cleaning up channels [Miklos Fazekas]
235
+
236
+ === 4.0.0.alpha1
237
+
238
+ * ed25519 key support [Miklos Fazekas]
239
+ * removed camellia [Miklos Fazekas]
10
240
 
11
241
  === 3.1.0
12
242
  === 3.1.0.rc1
@@ -95,7 +325,7 @@
95
325
  === 2.9.2-beta
96
326
 
97
327
  * Remove advertised algorithms that were not working (ssh-rsa-cert-* *ed25519 acm*-gcm@openssh.com) [mfazekas]
98
- * Unkown algorithms now ignored instead of failed [mfazekas]
328
+ * Unknown algorithms now ignored instead of failed [mfazekas]
99
329
  * Configuration change: Asks for password with password auth (up to number_of_password_prompts) [mfazekas]
100
330
  * Removed warnings [amatsuda]
101
331
 
data/DEVELOPMENT.md ADDED
@@ -0,0 +1,23 @@
1
+ ### Development notes
2
+
3
+ ## Building/running ssh server in debug mode
4
+
5
+ clone the openssh server from `https://github.com/openssh/openssh-portable`
6
+
7
+ ```sh
8
+ brew install openssl
9
+ /usr/local/Cellar/openssl@3/3.1.0/bin/openssl
10
+
11
+ autoreconf
12
+ ./configure --with-ssl-dir=/usr/local/Cellar/openssl@3/3.1.0/ --with-audit=debug --enable-debug CPPFLAGS="-DDEBUG -DPACKET_DEBUG" CFLAGS="-g -O0"
13
+ make
14
+ ```
15
+
16
+ To run server in debug mode:
17
+ ```sh
18
+ echo '#' > /tmp/sshd_config
19
+ ssh-keygen -t rsa -f /tmp/ssh_host_rsa_key
20
+ # /Users/boga/Work/OSS/NetSSH/openssh-portable/sshd -p 2222 -D -d -d -d -e -f /tmp/sshd_config
21
+ /Users/boga/Work/OSS/NetSSH/openssh-portable/sshd -p 2222 -D -d -d -d -e -f /tmp/sshd_config -h /tmp/ssh_host_rsa_key
22
+
23
+ ```
data/Dockerfile ADDED
@@ -0,0 +1,27 @@
1
+ ARG RUBY_VERSION=3.1
2
+ FROM ruby:${RUBY_VERSION}
3
+
4
+ RUN apt update && apt install -y openssh-server sudo netcat-openbsd \
5
+ && useradd --create-home --shell '/bin/bash' --comment 'NetSSH' 'net_ssh_1' \
6
+ && useradd --create-home --shell '/bin/bash' --comment 'NetSSH' 'net_ssh_2' \
7
+ && echo net_ssh_1:foopwd | chpasswd \
8
+ && echo net_ssh_2:foo2pwd | chpasswd \
9
+ && mkdir -p /home/net_ssh_1/.ssh \
10
+ && mkdir -p /home/net_ssh_2/.ssh \
11
+ && echo "net_ssh_1 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
12
+ && echo "net_ssh_2 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers \
13
+ && ssh-keygen -f /etc/ssh/users_ca -N ''
14
+
15
+ ENV INSTALL_PATH="/netssh"
16
+
17
+ WORKDIR $INSTALL_PATH
18
+
19
+ COPY Gemfile net-ssh.gemspec $INSTALL_PATH/
20
+
21
+ COPY lib/net/ssh/version.rb $INSTALL_PATH/lib/net/ssh/version.rb
22
+
23
+ RUN gem install bundler && bundle install
24
+
25
+ COPY . $INSTALL_PATH/
26
+
27
+ CMD service ssh start && rake test && NET_SSH_NO_ED25519=1 rake test
@@ -0,0 +1,17 @@
1
+ FROM ubuntu:22.04
2
+
3
+ ENV INSTALL_PATH="/netssh"
4
+
5
+ RUN apt update && apt install -y openssl ruby ruby-dev git build-essential
6
+
7
+ WORKDIR $INSTALL_PATH
8
+
9
+ COPY Gemfile net-ssh.gemspec $INSTALL_PATH/
10
+
11
+ COPY lib/net/ssh/version.rb $INSTALL_PATH/lib/net/ssh/version.rb
12
+
13
+ RUN ls -l && gem install bundler && bundle install
14
+
15
+ COPY . $INSTALL_PATH/
16
+
17
+ CMD openssl version && ruby -ropenssl -e 'puts OpenSSL::OPENSSL_VERSION' && rake test
data/Gemfile ADDED
@@ -0,0 +1,13 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Specify your gem's dependencies in mygem.gemspec
4
+ gemspec
5
+
6
+ gem 'byebug', group: %i[development test] if !Gem.win_platform? && RUBY_ENGINE == "ruby"
7
+
8
+ if ENV["CI"]
9
+ gem 'codecov', require: false, group: :test
10
+ gem 'simplecov', require: false, group: :test
11
+ end
12
+
13
+ gem 'webrick', group: %i[development test] if RUBY_VERSION.split(".")[0].to_i >= 3
data/Gemfile.noed25519 ADDED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ENV['NET_SSH_NO_ED25519'] = 'true'
4
+ # Specify your gem's dependencies in mygem.gemspec
5
+ gemspec
6
+
7
+ if ENV["CI"] && !Gem.win_platform?
8
+ gem 'simplecov', require: false, group: :test
9
+ gem 'codecov', require: false, group: :test
10
+ end
11
+
12
+ gem 'webrick', group: %i[development test] if RUBY_VERSION.split(".")[0].to_i >= 3
data/Gemfile.norbnacl ADDED
@@ -0,0 +1,12 @@
1
+ source 'https://rubygems.org'
2
+
3
+ ENV['NET_SSH_NO_RBNACL'] = 'true'
4
+ # Specify your gem's dependencies in mygem.gemspec
5
+ gemspec
6
+
7
+ if ENV["CI"] && !Gem.win_platform?
8
+ gem 'simplecov', require: false, group: :test
9
+ gem 'codecov', require: false, group: :test
10
+ end
11
+
12
+ gem 'webrick', group: %i[development test] if RUBY_VERSION.split(".")[0].to_i >= 3
data/ISSUE_TEMPLATE.md ADDED
@@ -0,0 +1,30 @@
1
+ ### Expected behavior
2
+
3
+ Tell us what should happen
4
+
5
+ ### Actual behavior
6
+
7
+ Tell us what happens instead.
8
+
9
+ ### System configuration
10
+
11
+ - net-ssh version
12
+ - Ruby version
13
+
14
+ ### Example App
15
+
16
+ Please provide an example script that reproduces the problem. This will save maintainers time so they can spend it fixing your issues instead of trying to build a reproduction case from sparse instructions.
17
+
18
+ You can use this as stating point:
19
+
20
+ ```ruby
21
+ gem 'net-ssh', '= 4.0.0.beta3'
22
+ require 'net/ssh'
23
+ puts Net::SSH::Version::CURRENT
24
+
25
+ @host = 'localhost'
26
+ @user = ENV['USER']
27
+ Net::SSH.start(@host, @user) do |ssh|
28
+ puts ssh.exec!('echo "hello"')
29
+ end
30
+ ```
data/Manifest CHANGED
@@ -33,7 +33,6 @@ lib/net/ssh/proxy/errors.rb
33
33
  lib/net/ssh/proxy/http.rb
34
34
  lib/net/ssh/proxy/socks4.rb
35
35
  lib/net/ssh/proxy/socks5.rb
36
- lib/net/ssh/ruby_compat.rb
37
36
  lib/net/ssh/service/forward.rb
38
37
  lib/net/ssh/test.rb
39
38
  lib/net/ssh/test/channel.rb
@@ -75,10 +74,10 @@ lib/net/ssh/transport/packet_stream.rb
75
74
  lib/net/ssh/transport/server_version.rb
76
75
  lib/net/ssh/transport/session.rb
77
76
  lib/net/ssh/transport/state.rb
78
- lib/net/ssh/verifiers/lenient.rb
79
- lib/net/ssh/verifiers/null.rb
80
- lib/net/ssh/verifiers/secure.rb
81
- lib/net/ssh/verifiers/strict.rb
77
+ lib/net/ssh/verifiers/accept_new.rb
78
+ lib/net/ssh/verifiers/accept_new_or_local_tunnel.rb
79
+ lib/net/ssh/verifiers/always.rb
80
+ lib/net/ssh/verifiers/never.rb
82
81
  lib/net/ssh/version.rb
83
82
  net-ssh.gemspec
84
83
  setup.rb