@nullabyte/ssh

A wrapper around ssh2, a module to SSH into your servers from NodeJS scripts

Usage no npm install needed!

<script type="module">
  import nullabyteSsh from 'https://cdn.skypack.dev/@nullabyte/ssh';
</script>

README

@nullabyte/ssh

pipeline status coverage report

A wrapper around ssh2, a module to SSH into your servers from NodeJS scripts.

Module exports the properties SSH and Errors. SSH is a class that accepts a constructor arguments object like:

{
    host: "localhost",
    port: 22,
    username: "user",
    ppk: "./path/to/ppk",
    passphrase: "password for a locked ppk",
    password: "password for the user to use in login/sudo events",
    verbose: false
}

If a ppk property is defined, the private key is used during the SSH connection and the password is ignored.

Available class methods:

  • SSH.connect() ; connects to the defined host
  • SSH.close() ; closes the connection
  • SSH.sudo() ; prepares a command to be run with sudo. Can be chained like SSH.sudo().command()
  • SSH.command(commandString) ; runs the command passed as a string
  • SSH.mv(source, destination, [force = false])
  • SSH.ls(directory, [extended = false])
  • SSH.cp(source, destination, [forceRecursive = false])
  • SSH.rm(target, [forceRecursive = false])
  • SSH.touch(filename)
  • SSH.cat(filename)
  • SSH.mkdir(filename)
  • SSH.escapePath(pathName)
  • SSH.uploadFile(localFilePath, destinationFilePath) ; uploads a single file to the server via SFTP
  • SSH.upload(localFilePath, destinationFilePath) ; uploads either a single file or complete directory/ies to the server via SFTP
  • SSH.readDirectory(localFilePath, destinationFilePath)

Specific filesystem action methods, like mv, cp, rm, etc, all automatically escape filepaths in an attempt to subvert command injection. Generic methods, like command do not escape your command string, so you should ensure you are properly escaping your commands.