net-ssh 4.2.0 → 7.0.1

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 (126) hide show
  1. checksums.yaml +5 -5
  2. checksums.yaml.gz.sig +0 -0
  3. data/.dockerignore +6 -0
  4. data/.github/config/rubocop_linter_action.yml +4 -0
  5. data/.github/workflows/ci-with-docker.yml +44 -0
  6. data/.github/workflows/ci.yml +87 -0
  7. data/.github/workflows/rubocop.yml +13 -0
  8. data/.gitignore +7 -0
  9. data/.rubocop.yml +19 -2
  10. data/.rubocop_todo.yml +619 -667
  11. data/CHANGES.txt +110 -1
  12. data/Dockerfile +27 -0
  13. data/Dockerfile.openssl3 +17 -0
  14. data/Gemfile +3 -7
  15. data/{Gemfile.norbnacl → Gemfile.noed25519} +3 -1
  16. data/Manifest +4 -5
  17. data/README.md +293 -0
  18. data/Rakefile +45 -29
  19. data/appveyor.yml +8 -6
  20. data/docker-compose.yml +23 -0
  21. data/lib/net/ssh/authentication/agent.rb +248 -223
  22. data/lib/net/ssh/authentication/certificate.rb +178 -164
  23. data/lib/net/ssh/authentication/constants.rb +17 -15
  24. data/lib/net/ssh/authentication/ed25519.rb +141 -116
  25. data/lib/net/ssh/authentication/ed25519_loader.rb +28 -28
  26. data/lib/net/ssh/authentication/key_manager.rb +79 -36
  27. data/lib/net/ssh/authentication/methods/abstract.rb +62 -47
  28. data/lib/net/ssh/authentication/methods/hostbased.rb +34 -37
  29. data/lib/net/ssh/authentication/methods/keyboard_interactive.rb +3 -3
  30. data/lib/net/ssh/authentication/methods/none.rb +16 -19
  31. data/lib/net/ssh/authentication/methods/password.rb +15 -16
  32. data/lib/net/ssh/authentication/methods/publickey.rb +96 -55
  33. data/lib/net/ssh/authentication/pageant.rb +468 -465
  34. data/lib/net/ssh/authentication/pub_key_fingerprint.rb +43 -0
  35. data/lib/net/ssh/authentication/session.rb +131 -122
  36. data/lib/net/ssh/buffer.rb +385 -332
  37. data/lib/net/ssh/buffered_io.rb +150 -151
  38. data/lib/net/ssh/config.rb +316 -239
  39. data/lib/net/ssh/connection/channel.rb +635 -613
  40. data/lib/net/ssh/connection/constants.rb +29 -29
  41. data/lib/net/ssh/connection/event_loop.rb +104 -95
  42. data/lib/net/ssh/connection/keepalive.rb +55 -51
  43. data/lib/net/ssh/connection/session.rb +614 -611
  44. data/lib/net/ssh/connection/term.rb +125 -123
  45. data/lib/net/ssh/errors.rb +101 -99
  46. data/lib/net/ssh/key_factory.rb +194 -108
  47. data/lib/net/ssh/known_hosts.rb +212 -134
  48. data/lib/net/ssh/loggable.rb +50 -49
  49. data/lib/net/ssh/packet.rb +83 -79
  50. data/lib/net/ssh/prompt.rb +51 -51
  51. data/lib/net/ssh/proxy/command.rb +105 -91
  52. data/lib/net/ssh/proxy/errors.rb +12 -10
  53. data/lib/net/ssh/proxy/http.rb +81 -81
  54. data/lib/net/ssh/proxy/https.rb +37 -36
  55. data/lib/net/ssh/proxy/jump.rb +49 -48
  56. data/lib/net/ssh/proxy/socks4.rb +2 -6
  57. data/lib/net/ssh/proxy/socks5.rb +14 -17
  58. data/lib/net/ssh/service/forward.rb +365 -362
  59. data/lib/net/ssh/test/channel.rb +145 -143
  60. data/lib/net/ssh/test/extensions.rb +131 -127
  61. data/lib/net/ssh/test/kex.rb +34 -32
  62. data/lib/net/ssh/test/local_packet.rb +46 -44
  63. data/lib/net/ssh/test/packet.rb +87 -84
  64. data/lib/net/ssh/test/remote_packet.rb +32 -30
  65. data/lib/net/ssh/test/script.rb +155 -155
  66. data/lib/net/ssh/test/socket.rb +49 -48
  67. data/lib/net/ssh/test.rb +82 -80
  68. data/lib/net/ssh/transport/algorithms.rb +433 -364
  69. data/lib/net/ssh/transport/cipher_factory.rb +95 -91
  70. data/lib/net/ssh/transport/constants.rb +32 -24
  71. data/lib/net/ssh/transport/ctr.rb +37 -15
  72. data/lib/net/ssh/transport/hmac/abstract.rb +81 -63
  73. data/lib/net/ssh/transport/hmac/md5.rb +0 -2
  74. data/lib/net/ssh/transport/hmac/md5_96.rb +0 -2
  75. data/lib/net/ssh/transport/hmac/none.rb +0 -2
  76. data/lib/net/ssh/transport/hmac/ripemd160.rb +0 -2
  77. data/lib/net/ssh/transport/hmac/sha1.rb +0 -2
  78. data/lib/net/ssh/transport/hmac/sha1_96.rb +0 -2
  79. data/lib/net/ssh/transport/hmac/sha2_256.rb +7 -11
  80. data/lib/net/ssh/transport/hmac/sha2_256_96.rb +4 -8
  81. data/lib/net/ssh/transport/hmac/sha2_256_etm.rb +12 -0
  82. data/lib/net/ssh/transport/hmac/sha2_512.rb +6 -9
  83. data/lib/net/ssh/transport/hmac/sha2_512_96.rb +4 -8
  84. data/lib/net/ssh/transport/hmac/sha2_512_etm.rb +12 -0
  85. data/lib/net/ssh/transport/hmac.rb +14 -12
  86. data/lib/net/ssh/transport/identity_cipher.rb +54 -52
  87. data/lib/net/ssh/transport/kex/abstract.rb +130 -0
  88. data/lib/net/ssh/transport/kex/abstract5656.rb +72 -0
  89. data/lib/net/ssh/transport/kex/curve25519_sha256.rb +39 -0
  90. data/lib/net/ssh/transport/kex/curve25519_sha256_loader.rb +30 -0
  91. data/lib/net/ssh/transport/kex/diffie_hellman_group14_sha1.rb +33 -40
  92. data/lib/net/ssh/transport/kex/diffie_hellman_group14_sha256.rb +11 -0
  93. data/lib/net/ssh/transport/kex/diffie_hellman_group1_sha1.rb +112 -217
  94. data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha1.rb +53 -63
  95. data/lib/net/ssh/transport/kex/diffie_hellman_group_exchange_sha256.rb +5 -9
  96. data/lib/net/ssh/transport/kex/ecdh_sha2_nistp256.rb +36 -90
  97. data/lib/net/ssh/transport/kex/ecdh_sha2_nistp384.rb +18 -10
  98. data/lib/net/ssh/transport/kex/ecdh_sha2_nistp521.rb +18 -10
  99. data/lib/net/ssh/transport/kex.rb +15 -12
  100. data/lib/net/ssh/transport/key_expander.rb +24 -21
  101. data/lib/net/ssh/transport/openssl.rb +158 -133
  102. data/lib/net/ssh/transport/packet_stream.rb +223 -191
  103. data/lib/net/ssh/transport/server_version.rb +55 -56
  104. data/lib/net/ssh/transport/session.rb +306 -259
  105. data/lib/net/ssh/transport/state.rb +178 -176
  106. data/lib/net/ssh/verifiers/accept_new.rb +33 -0
  107. data/lib/net/ssh/verifiers/accept_new_or_local_tunnel.rb +33 -0
  108. data/lib/net/ssh/verifiers/always.rb +58 -0
  109. data/lib/net/ssh/verifiers/never.rb +19 -0
  110. data/lib/net/ssh/version.rb +55 -53
  111. data/lib/net/ssh.rb +47 -34
  112. data/net-ssh-public_cert.pem +18 -19
  113. data/net-ssh.gemspec +12 -11
  114. data/support/ssh_tunnel_bug.rb +5 -5
  115. data.tar.gz.sig +0 -0
  116. metadata +78 -73
  117. metadata.gz.sig +0 -0
  118. data/.travis.yml +0 -51
  119. data/Gemfile.norbnacl.lock +0 -41
  120. data/README.rdoc +0 -169
  121. data/lib/net/ssh/ruby_compat.rb +0 -24
  122. data/lib/net/ssh/verifiers/lenient.rb +0 -30
  123. data/lib/net/ssh/verifiers/null.rb +0 -12
  124. data/lib/net/ssh/verifiers/secure.rb +0 -52
  125. data/lib/net/ssh/verifiers/strict.rb +0 -24
  126. data/support/arcfour_check.rb +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: a7f043776ede6127853a72ac22a342affbeb5957
4
- data.tar.gz: 0cce99ffd89bbfc0e7a33e7edbfa61de23dc4e2f
2
+ SHA256:
3
+ metadata.gz: '001243685ec6a8113bb04e55c5f75b50fb0386636ca40da012e6b0206844e793'
4
+ data.tar.gz: 6e4da1daaf0d6fc152df30865ec8ace047440b33323fa4a1abf947336876dd17
5
5
  SHA512:
6
- metadata.gz: a52dce1f0ce49e1bce2d7b563af80ca2c4f5564b2f19703f6e2a3cc418708ec5b23db2da7f3df7f011b0c48e0fc2bcf6d806852906d15c3c95efe663f67c1050
7
- data.tar.gz: b53deca142ae02dd0bdf72c1c623956bea38cb19e197db293c1c7f850f3eaee9ea7f0d12253796a6040d7921afcfc0aad6d848da5c97ea889e6ca596b83b8ae8
6
+ metadata.gz: 448b9447c97a464fa3c6431a15748dbb25bf79b3ac9ade31c0272a5558eec3180276ed0614c531b3f38910ef6af609e8f696fbb65fffc2288085b9268e7d1086
7
+ data.tar.gz: 8a425c4dc43f5657ae1391cce0aab1aa828fd3c03b6f3659a1dedb78e62ed08bd74696a86d8bf301bf2a093db9fc355f2f74d6e1e05117fa80e59bb136a55f58
checksums.yaml.gz.sig CHANGED
Binary file
data/.dockerignore ADDED
@@ -0,0 +1,6 @@
1
+ # Remove Git
2
+ .git/
3
+ .gitignore
4
+
5
+ docker-compose.yml
6
+ README.md
@@ -0,0 +1,4 @@
1
+ rubocop_fail_level: "convention"
2
+
3
+ versions:
4
+ rubocop: "1.27.0"
@@ -0,0 +1,44 @@
1
+ name: Test
2
+ on:
3
+ pull_request:
4
+ push: { branches: master }
5
+
6
+ jobs:
7
+ test:
8
+ name: Run test suite with docker
9
+ runs-on: ubuntu-latest
10
+ env:
11
+ COMPOSE_FILE: docker-compose.yml
12
+
13
+ steps:
14
+ - name: Checkout code
15
+ uses: actions/checkout@v2
16
+
17
+ - name: Build docker images
18
+ run: docker-compose build
19
+
20
+ - name: Run ruby 2.6
21
+ run: docker-compose run ruby-2.6
22
+
23
+ - name: Run ruby 2.7
24
+ run: docker-compose run ruby-2.7
25
+
26
+ - name: Run ruby 3.0
27
+ run: docker-compose run ruby-3.0
28
+
29
+ - name: Run ruby 3.1
30
+ run: docker-compose run ruby-3.1
31
+
32
+ test_openssl3:
33
+ name: Run test suite with docker and openssl 3.0
34
+ runs-on: ubuntu-latest
35
+
36
+ steps:
37
+ - name: Checkout code
38
+ uses: actions/checkout@v2
39
+
40
+ - name: Build docker images
41
+ run: docker build -t netssh_openssl3 -f Dockerfile.openssl3 .
42
+
43
+ - name: Run ruby 3.0 with openssl3
44
+ run: docker run --rm netssh_openssl3
@@ -0,0 +1,87 @@
1
+ name: CI
2
+ on:
3
+ pull_request:
4
+ push: { branches: master }
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-18.04
8
+ strategy:
9
+ matrix:
10
+ ruby-version: [2.6.6, 2.7.2, 3.0.1, 3.1.1]
11
+ steps:
12
+ - uses: actions/checkout@v1
13
+
14
+ - name: Set up Ruby ${{ matrix.ruby-version }}
15
+ uses: ruby/setup-ruby@v1
16
+ with:
17
+ ruby-version: ${{ matrix.ruby-version }}
18
+ - name: Set up Python ${{ matrix.python-version }}
19
+ uses: actions/setup-python@v2
20
+ with:
21
+ python-version: 3.8
22
+
23
+ - name: Cache bundler
24
+ uses: actions/cache@v1
25
+ id: bundler-cache
26
+ with:
27
+ path: vendor/bundle
28
+ key: ${{ runner.os }}-${{ matrix.ruby-version }}-gem-v3-${{ hashFiles('**/Gemfile') }}-${{ hashFiles('**/net-ssh.gemspec') }}
29
+ restore-keys: |
30
+ ${{ runner.os }}-${{ matrix.ruby-version }}-gem-v3-
31
+
32
+ - name: Cache pip
33
+ uses: actions/cache@v1
34
+ id: pip-cache
35
+ with:
36
+ path: ~/.cache/pip
37
+ key: ${{ runner.os }}-pip-v1
38
+ restore-keys: |
39
+ ${{ runner.os }}-pip-v1
40
+ - name: Bundle install
41
+ run: |
42
+ gem install bundler
43
+ bundle config set path 'vendor/bundle'
44
+ bundle config set --local path 'vendor/bundle'
45
+ bundle install --jobs 4 --retry 3 --path vendor/bundle
46
+ BUNDLE_GEMFILE=./Gemfile.noed25519 bundle install --jobs 4 --retry 3 --path vendor/bundle
47
+ env:
48
+ BUNDLE_PATH: vendor/bundle
49
+
50
+ - name: Add to etc/hosts
51
+ run: |
52
+ sudo echo "127.0.0.1 gateway.netssh" | sudo tee -a /etc/hosts
53
+ - name: Check sshd_config
54
+ run: sudo cat '/etc/ssh/sshd_config' || true
55
+ - name: Check sshd_config2
56
+ run: sudo cat /etc/ssh/sshd_config.d/*.conf || true
57
+ - name: Check sshd pid
58
+ run: sudo ps aux | grep sshd
59
+ - name: Ansible install
60
+ run: |
61
+ python -m pip install --upgrade pip
62
+ pip install ansible urllib3 pyOpenSSL ndg-httpsclient pyasn1
63
+ ansible-galaxy install rvm.ruby
64
+ pwd
65
+ uname -a
66
+ export
67
+ who am i
68
+ ansible-playbook ./test/integration/playbook.yml -i "localhost," --become -c local -e 'no_rvm=true' -e 'myuser=runner' -e 'mygroup=runner' -e 'homedir=/home/runner'
69
+ - name: Check sshd_config
70
+ run: sudo cat '/etc/ssh/sshd_config' || true
71
+ - name: Check sshd pid
72
+ run: sudo ps aux | grep sshd
73
+ - name: Check sshd_config2
74
+ run: sudo cat /etc/ssh/sshd_config.d/*.conf || true
75
+ - name: Run Tests
76
+ run: bundle exec rake test
77
+ env:
78
+ NET_SSH_RUN_INTEGRATION_TESTS: 1
79
+ CI: 1
80
+ - name: Run Tests (without ed25519)
81
+ run: bundle exec rake test
82
+ env:
83
+ BUNDLE_GEMFILE: ./Gemfile.noed25519
84
+ NET_SSH_RUN_INTEGRATION_TESTS: 1
85
+ CI: 1
86
+ - name: Run test helper test
87
+ run: bundle exec rake test_test
@@ -0,0 +1,13 @@
1
+ name: Rubocop
2
+
3
+ on: [push]
4
+
5
+ jobs:
6
+ build:
7
+ runs-on: ubuntu-latest
8
+ steps:
9
+ - uses: actions/checkout@v2
10
+ - name: Rubocop Linter Action
11
+ uses: andrewmcodes/rubocop-linter-action@v3.0.0.rc2
12
+ env:
13
+ GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
data/.gitignore CHANGED
@@ -1,6 +1,13 @@
1
1
  /Gemfile.lock
2
+ /Gemfile.noed25519.lock
2
3
  doc
4
+ rdoc
3
5
  ri
4
6
  pkg
5
7
  *.swp
6
8
  test/integration/.vagrant
9
+ test/integration/playbook.retry
10
+
11
+ .byebug_history
12
+
13
+ tryout
data/.rubocop.yml CHANGED
@@ -1,5 +1,22 @@
1
- inherit_from: .rubocop_todo.yml
2
-
3
1
  AllCops:
4
2
  Exclude:
5
3
  - 'tryout/**/*'
4
+ - "vendor/**/.*"
5
+ - "vendor/**/*"
6
+ NewCops: enable
7
+ TargetRubyVersion: 2.6
8
+
9
+ inherit_from: .rubocop_todo.yml
10
+
11
+ Style/DoubleNegation:
12
+ Exclude:
13
+ - 'lib/net/ssh/key_factory.rb'
14
+
15
+ Layout/LineLength:
16
+ Max: 150
17
+ Exclude:
18
+ - 'test/**/*.rb'
19
+ - 'net-ssh.gemspec'
20
+
21
+ Style/EmptyLiteral:
22
+ Enabled: false