How to connect via SSH in custom Kibana plugin?

Hi.

I'm trying to create my own Kibana plugin which makes a connection to remote server via SSH and does:

when I click the button, the plugin connects to server and execute shell scripts.

I've tried installing some npm modules like 'node-ssh' with yarn then, when I start Kibana an error occurs.

Kibana version is 7.11.1 and Node version is 14.15.4.

Here's the error message in Kibana console.

Here's the error log.

       │          WARNING in /home/dydgus/kibana/node_modules/ssh2/lib/protocol/crypto/build/Release/sshcrypto.node 1:0
       │          Module parse failed: Unexpected character '' (1:0)
       │          You may need an appropriate loader to handle this file type, currently no loaders are configured to process this file. See https://webpack.js.org/concepts#loaders
       │          (Source code omitted for this binary file)
       │           @ /home/dydgus/kibana/node_modules/ssh2/lib/protocol/crypto.js 30:12-60
       │           @ /home/dydgus/kibana/node_modules/ssh2/lib/client.js
       │           @ /home/dydgus/kibana/node_modules/ssh2/lib/index.js
       │           @ /home/dydgus/kibana/node_modules/ssh2-promise/lib/sshConnection.js
       │           @ /home/dydgus/kibana/node_modules/ssh2-promise/lib/index.js
       │           @ ./public/components/app.tsx
       │           @ ./public/application.tsx
       │           @ ./public/plugin.ts
       │           @ ./public/index.ts
       │           @ /home/dydgus/kibana/packages/kbn-optimizer/target/worker/entry_point_creator.js
       │          
       │          ERROR in /home/dydgus/kibana/node_modules/ssh2/lib/agent.js
       │          Module not found: Error: Can't resolve 'child_process' in '/home/dydgus/kibana/node_modules/ssh2/lib'
       │          resolve 'child_process' in '/home/dydgus/kibana/node_modules/ssh2/lib'
       │            Parsed request is a module
       │            using description file: /home/dydgus/kibana/node_modules/ssh2/package.json (relative path: ./lib)
       │              Field 'browser' doesn't contain a valid alias configuration
       │              resolve as module
       │                /home/dydgus/kibana/node_modules/ssh2/lib/node_modules doesn't exist or is not a directory
       │                /home/dydgus/kibana/node_modules/node_modules doesn't exist or is not a directory
       │                /home/dydgus/node_modules doesn't exist or is not a directory
       │                /home/node_modules doesn't exist or is not a directory
       │                /node_modules doesn't exist or is not a directory
       │                looking for modules in /home/dydgus/kibana/node_modules/ssh2/node_modules
       │                  using description file: /home/dydgus/kibana/node_modules/ssh2/package.json (relative path: ./node_modules)
       │                    Field 'browser' doesn't contain a valid alias configuration
       │                looking for modules in /home/dydgus/kibana/node_modules
       │                  using description file: /home/dydgus/kibana/package.json (relative path: ./node_modules)
       │                    Field 'browser' doesn't contain a valid alias configuration
       │                    using description file: /home/dydgus/kibana/node_modules/ssh2/package.json (relative path: ./node_modules/child_process)
       │                      no extension
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                    using description file: /home/dydgus/kibana/package.json (relative path: ./node_modules/child_process)
       │                      no extension
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/ssh2/node_modules/child_process doesn't exist
       │                      .js
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/child_process doesn't exist
       │                      .js
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.js doesn't exist
       │                      .ts
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/child_process.js doesn't exist
       │                      .ts
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.ts doesn't exist
       │                      .tsx
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/child_process.ts doesn't exist
       │                      .tsx
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.tsx doesn't exist
       │                      .json
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/child_process.tsx doesn't exist
       │                      .json
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.json doesn't exist
       │                        /home/dydgus/kibana/node_modules/child_process.json doesn't exist
       │                      as directory
       │                        /home/dydgus/kibana/node_modules/ssh2/node_modules/child_process doesn't exist
       │                      as directory
       │                        /home/dydgus/kibana/node_modules/child_process doesn't exist
       │          [/home/dydgus/kibana/node_modules/ssh2/lib/node_modules]
       │          [/home/dydgus/kibana/node_modules/node_modules]
       │          [/home/dydgus/node_modules]
       │          [/home/node_modules]
       │          [/node_modules]
       │          [/home/dydgus/kibana/node_modules/ssh2/node_modules/child_process]
       │          [/home/dydgus/kibana/node_modules/child_process]
       │          [/home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.js]
       │          [/home/dydgus/kibana/node_modules/child_process.js]
       │          [/home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.ts]
       │          [/home/dydgus/kibana/node_modules/child_process.ts]
       │          [/home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.tsx]
       │          [/home/dydgus/kibana/node_modules/child_process.tsx]
       │          [/home/dydgus/kibana/node_modules/ssh2/node_modules/child_process.json]
       │          [/home/dydgus/kibana/node_modules/child_process.json]
       │           @ /home/dydgus/kibana/node_modules/ssh2/lib/agent.js 7:28-52
       │           @ /home/dydgus/kibana/node_modules/ssh2/lib/index.js
       │           @ /home/dydgus/kibana/node_modules/ssh2-promise/lib/sshConnection.js
       │           @ /home/dydgus/kibana/node_modules/ssh2-promise/lib/index.js
       │           @ ./public/components/app.tsx
       │           @ ./public/application.tsx
       │           @ ./public/plugin.ts
       │           @ ./public/index.ts
       │           @ /home/dydgus/kibana/packages/kbn-optimizer/target/worker/entry_point_creator.js
       │          
       │          ERROR in /home/dydgus/kibana/node_modules/@heroku/socksv5/lib/client.js
       │          Module not found: Error: Can't resolve 'dns' in '/home/dydgus/kibana/node_modules/@heroku/socksv5/lib'
       │          resolve 'dns' in '/home/dydgus/kibana/node_modules/@heroku/socksv5/lib'
       │            Parsed request is a module
       │            using description file: /home/dydgus/kibana/node_modules/@heroku/socksv5/package.json (relative path: ./lib)
       │              Field 'browser' doesn't contain a valid alias configuration
       │              resolve as module
       │                /home/dydgus/kibana/node_modules/@heroku/socksv5/lib/node_modules doesn't exist or is not a directory
       │                /home/dydgus/kibana/node_modules/@heroku/socksv5/node_modules doesn't exist or is not a directory
       │                /home/dydgus/kibana/node_modules/@heroku/node_modules doesn't exist or is not a directory
       │                /home/dydgus/kibana/node_modules/node_modules doesn't exist or is not a directory
       │                /home/dydgus/node_modules doesn't exist or is not a directory
       │                /home/node_modules doesn't exist or is not a directory
       │                /node_modules doesn't exist or is not a directory
       │                looking for modules in /home/dydgus/kibana/node_modules
       │                  using description file: /home/dydgus/kibana/package.json (relative path: ./node_modules)
       │                    Field 'browser' doesn't contain a valid alias configuration
       │                    using description file: /home/dydgus/kibana/package.json (relative path: ./node_modules/dns)
       │                      no extension
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/dns doesn't exist
       │                      .js
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/dns.js doesn't exist
       │                      .ts
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/dns.ts doesn't exist
       │                      .tsx
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/dns.tsx doesn't exist
       │                      .json
       │                        Field 'browser' doesn't contain a valid alias configuration
       │                        /home/dydgus/kibana/node_modules/dns.json doesn't exist
       │                      as directory
       │                        /home/dydgus/kibana/node_modules/dns doesn't exist
       │          [/home/dydgus/kibana/node_modules/@heroku/socksv5/lib/node_modules]
       │          [/home/dydgus/kibana/node_modules/@heroku/socksv5/node_modules]
       │          [/home/dydgus/kibana/node_modules/@heroku/node_modules]
       │          [/home/dydgus/kibana/node_modules/node_modules]
       │          [/home/dydgus/node_modules]
       │          [/home/node_modules]
       │          [/node_modules]
       │          [/home/dydgus/kibana/node_modules/dns]
       │          [/home/dydgus/kibana/node_modules/dns.js]
       │          [/home/dydgus/kibana/node_modules/dns.ts]
       │          [/home/dydgus/kibana/node_modules/dns.tsx]
       │          [/home/dydgus/kibana/node_modules/dns.json]
       │           @ /home/dydgus/kibana/node_modules/@heroku/socksv5/lib/client.js 3:10-24
       │           @ /home/dydgus/kibana/node_modules/@heroku/socksv5/lib sync ^\.\/.*$
       │           @ /home/dydgus/kibana/node_modules/@heroku/socksv5/index.js
       │           @ /home/dydgus/kibana/node_modules/ssh2-promise/lib/sshConnection.js
       │           @ /home/dydgus/kibana/node_modules/ssh2-promise/lib/index.js
       │           @ ./public/components/app.tsx
       │           @ ./public/application.tsx
       │           @ ./public/plugin.ts
       │           @ ./public/index.ts
       │           @ /home/dydgus/kibana/packages/kbn-optimizer/target/worker/entry_point_creator.js
       │          
       │          ERROR in /home/dydgus/kibana/node_modules/@heroku/socksv5/lib/server.js
       │          Module not found: Error: Can't resolve 'dns' in '/home/dydgus/kibana/node_modules/@heroku/socksv5/lib'
       │          resolve 'dns' in '/home/dydgus/kibana/node_modules/@heroku/socksv5/lib'
       │            Parsed request is a module
       │            using description file: /home/dydgus/kibana/node_modules/@heroku/socksv5/package.json (relative path: ./lib)
       │              Field 'browser' doesn't contain a valid alias configuration
       │              resolve as module
       │                /home/dydgus/kibana/node_modules/@heroku/socksv5/lib/node_modules doesn't exist or is not a directory
       │                /home/dydgus/kibana/node_modules/@heroku/socksv5/node_modules doesn't exist or is not a directory
       │                /home/dydgus/kibana/node_modules/@heroku/node_modules doesn't exist or is not a directory
       │                /home/dydgus/kibana/node_modules/node_modules doesn't exist or is not a directory
       │                /home/dydgus/node_modules doesn't exist or is not a directory

... and more

I want to know if there is a way to connect to remote server in Kibana plugin.

So I tried using SSH, but it's not easy.

Is there any other way to execute shell script in remote server? Or is using SSH the best?

Please help me with it. Thank you.

I've solved this problem by myself.

I had to connect ssh connection in backend of Kibana.

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.