@nullabyte/ssh
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 likeSSH.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.